Sieben-Segment-Countdown

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten

Sieben-Segment-Countdown

Beitrag von Aistl(eitner) am Mi März 02, 2016 6:26 pm

1) Aufgabe:  Ich habe es mir zum Ziel gesetzt die Siebensegment-Anzeige mithilfe des Arduino anzusteuern. Daraus wurde ein Countdown von 9-0 mit Startknopf und End-Buzzer.
Ein Universalcode zum Ansteuern mehrerer Siebensegment-Bausteine für größere Zahlen ist gerade in Arbeit und wird zur allgemienen Verwwendng, sobald fertig, im Forum bereitgestellt.

2)Zur Schaltung: Aus Faulheitsgründen habe ich das ganze so programmiert, dass mann möglichst wenig Schaltelemente benötigt(keine außer dem Sieben-Segment-Baustein und dem Arduino),
mithilfe der Digital/Analog(13-2)-Pins. Pinbelegung befindet sich im Code als Kommentar am Anfang.

Zusatzinfo: Es muss nur einer der Ground-Anschlüsse des Bausteines verwendet werden(sind intern verbunden), also entweder den oberen bzw. den unteren, mittleren Kontakt.


3)Code:
Code:
/*  13..OBEN RECHTS
 *  12..OBEN MITTE
 *  11..OBEN LINKS
 *  10..MITTE MITTE
 *  9..UNTEN RECHTS
 *  8..UNTEN MITTE
 *  7..UNTEN LINKS    
 *  4..BUTTON
 *  3..BUZZER
 */
void show1(void){
  analogWrite(13, 102);     //DEFINITION DER ZAHLEN 0-9
  analogWrite(12, 0);
  analogWrite(11, 0);
  analogWrite(10, 0);
  analogWrite(9, 102);
  analogWrite(8, 0);
  analogWrite(7, 0);
}

void show2(void){
  analogWrite(13, 102);
  analogWrite(12, 102);
  analogWrite(11, 0);
  analogWrite(10, 102);
  analogWrite(9, 0);
  analogWrite(8, 102);
  analogWrite(7, 102);
}

void show3(void){
  analogWrite(13, 102);
  analogWrite(12, 102);
  analogWrite(11, 0);
  analogWrite(10, 102);
  analogWrite(9, 102);
  analogWrite(8, 102);
  analogWrite(7, 0);
}

void show4(void){
  analogWrite(13, 102);
  analogWrite(12, 0);
  analogWrite(11, 102);
  analogWrite(10, 102);
  analogWrite(9, 1021);
  analogWrite(8, 0);
  analogWrite(7, 0);
}

void show5(void){
  analogWrite(13, 0);
  analogWrite(12, 102);
  analogWrite(11, 102);
  analogWrite(10, 102);
  analogWrite(9, 102);
  analogWrite(8, 102);
  analogWrite(7, 0);
}

void show6(void){
  analogWrite(13, 0);
  analogWrite(12, 102);
  analogWrite(11, 102);
  analogWrite(10, 102);
  analogWrite(9, 102);
  analogWrite(8, 102);
  analogWrite(7, 102);
}

void show7(void){
  analogWrite(13, 102);
  analogWrite(12, 102);
  analogWrite(11, 0);
  analogWrite(10, 0);
  analogWrite(9, 102);
  analogWrite(8, 0);
  analogWrite(7, 0);
}

void show8(void){
  analogWrite(13, 102);
  analogWrite(12, 102);
  analogWrite(11, 102);
  analogWrite(10, 102);
  analogWrite(9, 102);
  analogWrite(8, 102);
  analogWrite(7, 102);
}

void show9(void){
  analogWrite(13, 102);
  analogWrite(12, 102);
  analogWrite(11, 102);
  analogWrite(10, 102);
  analogWrite(9, 102);
  analogWrite(8, 102);
  analogWrite(7, 0);
}

void show0(void){
  analogWrite(13, 102);
  analogWrite(12, 102);
  analogWrite(11, 102);
  analogWrite(10, 0);
  analogWrite(9, 102);
  analogWrite(8, 102);
  analogWrite(7, 102);
}

void resetall(void){
  analogWrite(13, 0);
  analogWrite(12, 0);
  analogWrite(11, 0);
  analogWrite(10, 0);
  analogWrite(9, 0);
  analogWrite(8, 0);
  analogWrite(7, 0);
}

  
  
void setup() {
  // put your setup code here, to run once:
 pinMode(13,OUTPUT);
 pinMode(12,OUTPUT);
 pinMode(11,OUTPUT);
 pinMode(10,OUTPUT);
 pinMode(9,OUTPUT);
 pinMode(8,OUTPUT);
 pinMode(7,OUTPUT);

 pinMode(4,INPUT);
 pinMode(3,OUTPUT);

 
 
 resetall();                      //BEIM STARTEN ANZEIGE RESETTEN
 delay(1000);
}

void loop() {
  // put your main code here, to run repeatedly:

if (digitalRead(4) == LOW ){

  show9();
  delay(1000);
  resetall();
  delay(500);
    
  show8();
  delay(1000);
  resetall();
  delay(500);
  
  show7();
  delay(1000);
  resetall();
  delay(500);
  
  show6();
  delay(1000);
  resetall();
  delay(500);
  
  show5();
  delay(1000);
  resetall();
  delay(500);

  show4();
  delay(1000);
  resetall();
  delay(500);

  show3();
  delay(1000);
  resetall();
  delay(500);

  show2();
  delay(1000);
  resetall();
  delay(500);

  show1();
  delay(1000);
  resetall();
  delay(500);

  show0();
  digitalWrite(3, HIGH);
  delay(2000);
  digitalWrite(3,LOW);
  resetall();
  delay(500);
}
 if(digitalRead(4) == HIGH)
 {
  resetall();
 }


}

Aistl(eitner)

Anzahl der Beiträge : 1
Anmeldedatum : 23.02.16
Alter : 17

Nach oben Nach unten

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben

- Ähnliche Themen

 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten