Guten Abend,
um meine Weichenantriebe der Modellbahn zu schalten verwende ich Relais. Jedes Relais wird über einen Transistor angesteuert. Das Relais muss anziehen wenn ich einen Taster drücke und solange angezogen bleiben bis ich einen anderen Taster drücke.
Teste dies z.Z. mit 2 Tastern (PA1 und PA2) und einer LED (PA0).
Hier mal der Code an dem ich nicht mehr weiter weiß:
Code:
int main(void){
DDRA |= 0b00000001; //PA0 als Ausgang definieren
PORTA &= ~(1<<PA0); //PA0 auf Low schalten (LED aus)
PORTA |= (1<<PA1), (1<<PA2);//PA1 und PA2 auf High setzen
while(1){
if((!(PINA&(1<<PIN1))) && (PINA&(1<<PIN2))){ //Wenn Taster (PA1) betätigt und Taster (PA2) nicht betätigt, dann...
while((PINA&(1<<PIN2)) && (PINA&(1<<PIN1))){ //...weil Taster (PA1 und PA2) nicht betätigt....
PORTA |= (1<<PA0); //... schalte LED ein
}
}
/* else if((!(PINA&(1<<PIN2))) && (PINA&(1<<PIN1))) { //wenn Taster (PA1) nicht betätigt und Taster (PA2) betätigt...
PORTA &= ~(1<<PA0); //... dann LED aus
}*/
}
return 0;
}
Sobald ich die "else if" anweisung nicht auskommentiere geht die LED nach loslassen von Taster (PA1) wieder aus.
Ich weiß solangsam nicht mehr was ich dan dem Code noch ändern soll...
MfG
Ezalo
Lesezeichen