Gast
#4095847
Hallo Ich will einen Drehencoder auswerten mit nur einem Interruptpin. zur anzeige werden 2 LEDs angesteuert. bei Linksdrehung leuchtet die eine bei rechtsdrehung die andere Mit setup ... attachInterrupt(0,ISR,RISING); ... loop ... void ISR() { detachInterrupt(0); if (digitalRead(4)==HIGH) { digitalWrite(22,HIGH); digitalWrite(23,LOW); } else { digitalWrite(23,HIGH); digitalWrite(22,LOW); } attachInterrupt(0,ISR,RISING); } } funzt es zwar aber mehr schlecht als recht. Die LEDs zittern mir zu viel sprich da sind false erkennungen dazwischen. Ich vermute es liegt an der digitalRead() Funktion weil die recht langsam ist. Also direkte Portmanioulation die IF bedingung ersetzt durch if (PIND & B0001000==B00010000) Beim Kompilieren keinen Fehler aber funzt nun garnicht mehr. zumindest leichtet egal welche richtung ich drehe nur die LED auf Pin 23 sprich die, wenn die Bedingung nicht erfüllt ist seht ihr vielleicht was da falsch bei mir ist? ist übrigens ein Arduino Mega