websitetemplate.org

Hjem > Arduino Duemilanove > 6 x 7-segment display

6 x 7-segment display

Interface til Arduino og tilslutning af ekstern strømforsyning.


Display


ÆV!

Der mangler en ledning til stel.
Der er jo altid mulighed for overraskelser ved at genbruge ting ;-)
Det 5. display bruges ikke og det 6. har nummer 5.

Der skal lige fintænkes en løsning.

Det var så det !

Det viste sig at printet var forberedt til ændringen.

En lus skulle forlænges og en brudt printbane forbindes.

Så var der lige et program der leger ur.

/* 6 * 7 segment display
 
 Turns on and off a light emitting diode(LED)
 
 The circuit:
 * LED attached from pin 13 to ground.
 * 7 segment
Ben
 0 DP
 1 WE
 2 CE
 3 Data A
 4 Data B
 5 Data C
 6 Data D
 7 K1 adresse
 8 K2 adresse
 9 K3 adresse
 */

// constants won't change. Used here to
// set pin numbers:
const int ledPin =  13;      // the number of the LED pin
const int DPPin  =   0;
const int WEPin  =   1;
const int CEPin  =   2;
const int APin   =   3;
const int BPin   =   4;
const int CPin   =   5;
const int DPin   =   6;
const int K1Pin  =   7;
const int K2Pin  =   8;
const int K3Pin  =   9;

// Variables will change:
int ledState = LOW;             // ledState used to set the LED
long previousMillis = 0;        // will store last time LED was updated
byte segment = 0;
byte Data = 0; // bruges til at flytte data til segmenterne;
byte timer  = 23;    // Urets variabler
byte minut  = 58;
byte sekund = 56;
boolean Prik = LOW;     // Decimal prik

// the follow variables is a long because the time, measured in miliseconds,
// will quickly become a bigger number than can be stored in an int.
long interval = 1000;           // interval at which to blink (milliseconds)

void setup() {
  // set the digital pin as output:
  pinMode(ledPin, OUTPUT);
  pinMode(DPPin,  OUTPUT);
  pinMode(WEPin,  OUTPUT);
  pinMode(CEPin,  OUTPUT);
  pinMode(APin,   OUTPUT);
  pinMode(BPin,   OUTPUT);
  pinMode(CPin,   OUTPUT);
  pinMode(DPin,   OUTPUT);
  pinMode(K1Pin,  OUTPUT);
  pinMode(K2Pin,  OUTPUT);
  pinMode(K3Pin,  OUTPUT);
 
  digitalWrite(DPPin, HIGH);
}

  void liv(){
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis > interval) {
      // save the last time you blinked the LED
      previousMillis = currentMillis;  

    // if the LED is off turn it on and vice-versa:
    if (ledState == LOW)
      ledState = HIGH;
    else
      ledState = LOW;
   
    // set the LED with the ledState of the variable:
    digitalWrite(ledPin, ledState);
    ur();
    }
  }
 
  void ur(){
    // timer      // Urets variabler
    // minut 
    // sekund
   
    sekund++;         // Uret tikker et sekundt frem.
    if (sekund > 59 ) { minut++; sekund = 0; }
    if ( minut > 59 ) { timer++; minut = 0; }
    if ( timer > 23 ) timer = 0;
   
    // skriv segmenterne efter tur.
    segment = 0; Data = timer  / 10; Prik = LOW; skriv();
    segment = 1; Data = timer  % 10; Prik = HIGH; skriv();
    segment = 2; Data = minut  / 10; Prik = LOW; skriv();
    segment = 3; Data = minut  % 10; Prik = HIGH; skriv();
    segment = 4; Data = sekund / 10; Prik = LOW; skriv();
    segment = 5; Data = sekund % 10; Prik = HIGH; skriv();
   
  }

  void skriv(){
    digitalWrite(K1Pin, (segment & B0001) );
    digitalWrite(K2Pin, (segment & B0010) );
    digitalWrite(K3Pin, (segment & B0100) );
    digitalWrite(CEPin, LOW); 
    digitalWrite(WEPin, LOW); 
   
    digitalWrite(APin, (Data & B0001) );
    digitalWrite(BPin, (Data & B0010) );
    digitalWrite(CPin, (Data & B0100) );
    digitalWrite(DPin, (Data & B1000) );
    digitalWrite(DPPin, Prik ); 

    digitalWrite(WEPin, HIGH);
    digitalWrite(CEPin, HIGH);
   
  }
 
void loop()
{
  // here is where you'd put code that needs to be running all the time.
    liv();
}

Powered By CMSimple.dk - Design By OZ5HZ Finn Johansen