Hallo Leute,
ich hab vor kurzem die Ausbildungstelle gewechselt und beschäftige mich
nun mit den AVR Controllern.
Habe hier ein Pollin EvoBoard bekommen mit dem ich erstmal etwas
rumspielen kann.
Ich habe 2 Taster und 2 LED. Was ich eigentlich nur möchte ist: Wenn der
Taster1 gedrückt ist soll die LED1 angehen und wenn er nochmal gedrückt
wird soll er ausgehen. Das gleiche mit Taster2 und LED2. Die LED
anzukriegen oder sie auch so lange anzukriegen wie einer der Taster
gedrückt ist, ist kein Problem. Hier mein Code:
1 | #include <avr/io.h>
|
2 |
|
3 |
|
4 | int main()
|
5 | {
|
6 | /*Richtungsregister 01100000 nur die LED Ausgang(high) der Rest Eingang(low) -- DDRD = 0x60; */
|
7 |
|
8 | DDRD = _BV(PD6) | _BV(PD5);
|
9 |
|
10 |
|
11 | while(1)
|
12 | {
|
13 |
|
14 | if( bit_is_set(PIND, PIND2))
|
15 | {
|
16 |
|
17 | //Wenn Taster1 gedrückt, LED1 an
|
18 | while(bit_is_set(PIND, PIND2))
|
19 | {
|
20 | PORTD |= (1<<PD5);
|
21 | }
|
22 | //LED1 wieder auschalten
|
23 | PORTD &= ~(1<<PD5);
|
24 | }
|
25 | else if(bit_is_set(PIND, PIND3))
|
26 | { //Wenn Taster 2 gedrückt, LED2 an
|
27 | while(bit_is_set(PIND, PIND3))
|
28 | {
|
29 | PORTD |= (1<<PD6);
|
30 | }
|
31 | //LED2 wieder ausschalten
|
32 | PORTD &= ~(1<<PD6);
|
33 | }
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 | }
|
40 | return 0;
|
41 | }
|
Wie zu sehen ist liegen die LED an PD5 und PD6 und die Schalter an PD2
und PD3.
Nun will ich das ganze so umschreiben das LED1 an ist wenn man Taster1
drückt und wieder ausgeht wenn man ihn erneut drückt.
Dazu werde ich mir irgendwie merken müssen ob der Schalter gedrückt
wurde, nur leider hab ich momentan keine Ahnung wie man das macht.
Hat evtl einer von Euch einen Tipp dazu?
Hoffe das ist das richtige Forum dafür.
Danke und Gruß
kiggster