Bruce
||
Shift-Register funktioniert: Countdown von 9 bis 0, der per Taster angehalten werden kann:
^^ Wenn man nur so einen Countdown will, könnte man das, so vermute ich mal, bestimmt eleganter machen, als mit diesen 1000 Arrays (und dem Switch-Case) - für mein Endziel will ich ja aber bestimmte Zeichen im Zugriff zu haben (gibt es da vielleicht auch bessere Möglichkeiten?)
Nächste Aufgaben: Testen & Verstehen der ShiftOut-Funktion (anstatt der for-Schleife die ich jetzt zum reinschieben&ausgeben benutze), Schieberegister kaskadieren, dokumentieren (damit ich auch morgen noch weiß, was ich da tue).
ps. Bitte nicht von meinem MItteilungsbedürfniss hier irritieren lassen - wie gesagt, ich nutze das hier auch als quasi Notizbuch für mich und mache das eben so offen, da ich 1. hier immer für Anregungen dankbar bin, wenn jemand Lust hat & 2. vielleicht hilfts ja auch mal jemand anderen irgendwann ...
mfG Bruce
Code:
// DP g f e d c b a
const byte Z_0[8] = {0,0,1,1,1,1,1,1}; //Zeichen "0" auf 7Segment-Anzeige (Kingbright SC52)
const byte Z_1[8] = {0,0,0,0,0,1,1,0};
const byte Z_2[8] = {0,1,0,1,1,0,1,1};
const byte Z_3[8] = {0,1,0,0,1,1,1,1};
const byte Z_4[8] = {0,1,1,0,0,1,1,0};
const byte Z_5[8] = {0,1,1,0,1,1,0,1};
const byte Z_6[8] = {0,1,1,1,1,1,0,1};
const byte Z_7[8] = {0,0,0,0,0,1,1,1};
const byte Z_8[8] = {0,1,1,1,1,1,1,1};
const byte Z_9[8] = {0,1,1,0,0,1,1,1};
const byte Z_S[8] = {0,1,1,0,1,1,0,1}; //S=5
const byte Z_o[8] = {0,1,0,1,1,1,0,0};
const byte Z_r[8] = {0,1,0,1,0,0,0,0};
const byte Z_E[8] = {0,1,1,1,1,0,0,1};
const byte Z_Punkt[8] = {1,0,0,0,0,0,0,0};
const byte sck = 11;
const byte rck = 12;
const byte ser = 13;
void setup() {
pinMode(sck, OUTPUT);
pinMode(rck, OUTPUT);
pinMode(ser, OUTPUT);
pinMode(3, INPUT);
}
void loop() {
for(int n=9; n > -1; n--){
if(digitalRead(3)==LOW){ //hält die Zeit an
for(byte i=0 ; i<8; i++){
switch(n){
case 0: digitalWrite(ser, Z_0[i]); break;
case 1: digitalWrite(ser, Z_1[i]); break;
case 2: digitalWrite(ser, Z_2[i]); break;
case 3: digitalWrite(ser, Z_3[i]); break;
case 4: digitalWrite(ser, Z_4[i]); break;
case 5: digitalWrite(ser, Z_5[i]); break;
case 6: digitalWrite(ser, Z_6[i]); break;
case 7: digitalWrite(ser, Z_7[i]); break;
case 8: digitalWrite(ser, Z_8[i]); break;
case 9: digitalWrite(ser, Z_9[i]); break;
}
digitalWrite(sck, 1);
digitalWrite(sck, 0);
}
digitalWrite(rck, 1);
digitalWrite(rck, 0);
delay(1000);
}
else n++;
}
}
^^ Wenn man nur so einen Countdown will, könnte man das, so vermute ich mal, bestimmt eleganter machen, als mit diesen 1000 Arrays (und dem Switch-Case) - für mein Endziel will ich ja aber bestimmte Zeichen im Zugriff zu haben (gibt es da vielleicht auch bessere Möglichkeiten?)
Nächste Aufgaben: Testen & Verstehen der ShiftOut-Funktion (anstatt der for-Schleife die ich jetzt zum reinschieben&ausgeben benutze), Schieberegister kaskadieren, dokumentieren (damit ich auch morgen noch weiß, was ich da tue).
ps. Bitte nicht von meinem MItteilungsbedürfniss hier irritieren lassen - wie gesagt, ich nutze das hier auch als quasi Notizbuch für mich und mache das eben so offen, da ich 1. hier immer für Anregungen dankbar bin, wenn jemand Lust hat & 2. vielleicht hilfts ja auch mal jemand anderen irgendwann ...
mfG Bruce