das hier
1 | if (comp != 0){ // gedrückt
|
2 | ...
|
3 | }
|
4 | if (comp != 1){
|
5 | ...
|
6 | }
|
gewöhnst du dir gleich wieder ab.
1) hat deine variable comp nur 2 mögliche Werte.
Die sind 0 und 4 (weil dein Taster an PD2 hängt)
2) solltest du dir angewöhnen eine derartige Variable so
zu sehen:
Entweder sie ist 0 oder sie ist nicht 0
aber auf keinen Fall willst du dir hier eine Abhängigkeit
vom Portpin und damit auf einen spezifischen Wert einhandeln.
Es genügt, dass sie nicht 0 ist. Welcher Wert genau, ist
uninteressant.
3) Wenn eine Variable sowieso nur 2 Werte haben kann, dann genügt
es
if (comp == 0) { // wenn sie 0 ist
...
}
else { // andernfalls kann sie nur nicht 0 sein
...
}
d.h. die 2.te explizite Abfrage ist sinnlos und nur eine
zusätzliche potentielle Fehlerquelle.
4) Und da damit die Variable comp ein bischen sinnlos geworden ist,
wirfst du sie gleich wieder raus und schreibst das kürzer
if (PIND & (1<<PD2)) { // gedrückt
PORTD = PORTD | (1<<PD5);
}
else { // nicht (mehr) gedrückt
PORTD = PORTD & ~(1<<PD5);
}