Hallo!
Also folgendes, ich habe gerade einen Taster an meinen AtMega32 angeschlossen und wollte damit bisschen die herumexperimentieren. In weiterer Folge soll daraus (total unkreativ) ein Anstoßsensor für meinen Roboter realisiert werden.
So, ich habe den Taster an PB0 angeschlossen und möchte jetzt einfach bei Tastendruck eine LED ausgehen lassen, diese dann eine Sekunde ausgeschaltet lassen und danach wieder einschalten. Das war das Ziel.
Hier dazu mein Code:
Die LED geht auch brav an und wieder aus, sowie geplant, allerdings eben nur so lange, wie der Taster gedrückt ist.Code:#include <avr/io.h> #include <util/delay.h> #define LEDRED PD6 #define Bumper1 PB0 #ifndef F_CPU #define F_CPU 8000000 #endif int main(void) { //DDRB |= (0<<Bumper1); DDRD |= (1<<LEDRED) | (1<<PD7); //PORTB |= (0<<Bumper1); PORTD |= (1<<LEDRED); while(1) { if(PINB & (1<<PINB0)) //wenn Taster gedrückt { PORTD &= ~(1<<LEDRED); _delay_ms(1000); //warte 1 sek } else { PORTD |= (1<<LEDRED); } } }
In der Theorie sollte das Programm doch eingentlich an dieser Stelle
für 1 Sek verharren und damit die LED ausgeschaltet lassen, bevor dann der Zyklus fortgesetzt wird, oder?Code:if(PINB & (1<<PINB0)) //wenn Taster gedrückt { PORTD &= ~(1<<LEDRED); _delay_ms(1000); //warte 1 sek }
Warum bleibt die LED nicht an?
LG







Zitieren

Lesezeichen