Moin, für meine Nixieuhr benötige ich einige Taster zum einstellen der Uhrzeit usw. Da ich aber nicht so viele Taster haben möchte, würde ich gerne einige Taster doppelt belegen. Bisher stelle ich die Uhrzeit mit 2 Tastern, einer für die Minuten, und einer für die Stunden, nun möchte ich gerne, dass wenn man beide Taster gleichzeitig betätigt der AVR die Alarmzeit anzeigt. Wenn man nun wieder einen der beiden Taster drückt soll er nun nicht die Zeit verstellen, sondern eben die Alarmzeit. Nach 30 Sek soll er nun wieder die normale Uhrzeit anzeigen. Leider reichen meine C Kenntnisse dafür nicht aus, daher hoffe ich, dass mir hier jemand weiterhelfen kann. Ich benutze einen ATmega und programmiere mit C. Gruß, Natrium
1 | if ((PINB & 0x03) == 0x03) |
2 | state = STATE_SET_ALARMCLOCK; |
3 | ...
|
4 | |
5 | switch (state) |
6 | |
7 | case STATE_NORMAL: |
8 | ....
|
9 | break; |
10 | |
11 | case STATE_SET_ALARMCLOCK: |
12 | ....
|
13 | break; |
Soll heißen: Mit sowenig Angaben können wir Dir nicht helfen. Da musst Du schon deinen Code mit anhängen.
Nimm doch meine EiWoMiSa, da gibt es auch ne Lösung für Zweitastenerkennung: Beitrag "Universelle Tastenabfrage mit 2 Tastenerkennung" Peter
Ich hab hier die relvanten Teile mal angehängt.
1 | set_bit(taster_hour_port,taster_hour_pin); //Pullup einschalten |
2 | set_bit(taster_minute_port,taster_minute_pin); //Pullup einschalten |
3 | |
4 | if (bit_is_clear(taster_hour_pin, taster_hour_bit)) { |
5 | if (h<23) h++; |
6 | else h=0; |
7 | _delay_ms(10); |
8 | while (bit_is_clear(taster_hour_pin, taster_hour_bit)); |
9 | _delay_ms(10); |
10 | ds1307_setTime(h,m,s); |
11 | }
|
12 | |
13 | if (bit_is_clear(taster_minute_pin, taster_minute_bit)) { |
14 | if (m<59) m++; |
15 | else m=0; |
16 | _delay_ms(10); |
17 | ds1307_setTime(h,m,s); |
18 | while (bit_is_clear(taster_minute_pin, taster_minute_bit)); |
19 | _delay_ms(10); |
20 | }
|
So sieht es bis jetzt aus, wo nur einfach die Stunden und Minuten hochgezählt werden. Der Teil steht in der Hauptschleife. Gruß, Natrium EDIT: Peters Code werde ich mir mal ansehen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.