Arduino 7-Segment?
Hi!
Ich soll mit einem Arduino, 7-Segmentanzeige und einem Taster alles so Programmieren das bei jedem Tastendruck die Zahl sich um 1 erhöht von 0 bis 9
Kann mir irgendjemand sagen wie ich das zu Programmieren hab?
3 Antworten
Was du brauchst ist ein Zähler und eine Abbildung von Zahl zu 7 Segment. Das zählen dürfte keine schwierigkeit sein(mit ++). Den Rest kannst du hard-coden.
if(1){setze alle segmente auf an, die die bei 1 an seien sollen und alle anderen auf aus}
if(2){...}
...
oder du erstellst ein zweidimensionales Array mit den informationen wann was an sein soll
Danke, sei mir nicht böse ich verstehe aber immer noch nicht selbst im Unterricht verzweifle ich immer
Das ist die Lange Variante. Viel Code der wenig macht. Dadurch wird einem aber der Umgang mit Arrays erspart.
void null(){
digitalWrite(pinFürSegmentOben, HIGH);
digitalWrite(pinFürSegmentObenLinks, HIGH);
digitalWrite(pinFürSegmentObenRechts, HIGH);
digitalWrite(pinFürSegmentMitte, LOW);
digitalWrite(pinFürSegmentUntenRechts, HIGH);
digitalWrite(pinFürSegmentUntenLinks, HIGH);
digitalWrite(pinFürSegmentUnten, HIGH);
}
//das gleiche für alle anderen zahlen
Müsst ihr diese Vorlage nehmen? Das ist meines Meinung nach kein effizienter Programmierstil.
Ja müssen wir da wir das Thema sehr oberflächig machen und grad am Anfang sind aber danke mit dem ausschnitt hab ich es glaub ich verstanden
Die bei der Siebensegmentanzeige soll jedes Segment mit einem Pin des Arduinos verbunden werden, richtig? Oder sind das mehrere Stellen und es handelt sich um eine art Schieberegister?
Falls die Segmente direkt angesteuert werden müsste das ca so aussehen:
int tasterPin = 13;
int pin7seg [] = {2,3,4,5,6,7,8};
int seg7code [][] ={{HIGH,LOW,LOW,HIGH,...},{...},...}//bitte ergänzen
int z;
void setup(){
for(int i=0;i<7;i++){
pinMode(pin7seg[i],OUTPUT);
}
}
void loop(){
//solange taster high
//externer pullup oder internen aktivieren
while(digitalRead(tasterPin));
//zähler incrementieren
z++;
for(int i=0;i<7;i++){
digitalWrite(pin7seg[i],seg7code[z][i]);
}
}
ungefähr so müsste das mit array aussehen.
Es handelt sich hierbei um die C++-Dialekt den man üblicherweise in der Schule lernt.
Das schreiben auf einen INPUT aktiviert den internen pullup. Mehr dazu kannst du hier nachlesen:
https://www.arduino.cc/en/Tutorial/DigitalPins