Ich habe mir ja vor langer Zeit einen Pi3 geholt. Weil ich mich da bissl zu sehr drueber geaergert habe ueber die Handhabung per remote etc. lag das Teil nun ueber ein Jahr rum. Trotzdem hat es mich aber wieder gepackt und ich arbeite ein paar Tutorials durch - und schreibe, zum ueben, den original Code hier und dort mal ein wenig um.
Nun habe ich ein Problem bei dem ich nicht weiss ob es am Programmcode liegt (sprich: ich bin zu bloed), oder ob es vllt. eher an der Hardware liegt.
Der Originalcode ist hier im Netz hinterlegt: https://www.sunfound...aspberrypi.html
Im speziellen geht es um folgenden (original) Codeausschnitt:
def rotaryDeal(): global flag global Last_RoB_Status global Current_RoB_Status global globalCounter Last_RoB_Status = GPIO.input(RoBPin) while(not GPIO.input(RoAPin)): Current_RoB_Status = GPIO.input(RoBPin) flag = 1 if flag == 1: flag = 0 if (Last_RoB_Status == 0) and (Current_RoB_Status == 1): globalCounter = globalCounter + 1 print 'globalCounter = %d' % globalCounter if (Last_RoB_Status == 1) and (Current_RoB_Status == 0): globalCounter = globalCounter - 1 print 'globalCounter = %d' % globalCounter
Den habe ich abgeaendert in:
def rotaryDeal(): global flag global Last_RoB_Status global Current_RoB_Status global globalCounter if GPIO.input(RoAPin) == True: Current_RoB_Status = GPIO.input(RoBPin) if Current_RoB_Status == True: globalCounter = globalCounter + 1 print 'Rechts: globalCounter = %d' % globalCounter else: globalCounter = globalCounter - 1 print 'Links: globalCounter = %d' % globalCounter
Meinem Verstaendins nach sagt die Beschreibung (siehe Link oben) doch folgendes aus:
Solange auf Pin 0 (RoAPin) kein True vorhanden ist muss ich mich um Pin 1 (RoBPin) nicht kuemmern, da keine Aktion im Sinne von links oder rechts drehen statt findet. Erst wenn auf Pin 0 ein True anliegt ist es notwendig Pin 1 auszuwerten um die Rotationsrichtung zu ermitteln (Pin 1 = True wenn im Uhrzeigersinn, ansonsten False).
Nun meine Frage: Macht der umgeschriebene Code irgendwas anders?
Ich meine, es ist doch egal wie der Status von irgendwas "vorher" war... bevor auf Pin 0 True anliegt?
Es ist doch eigentlich "nur" wichtig Pin 1 auszuwerten, wenn auf Pin 0 True anliegt...?
Oder irre ich?
Denn wenn ich das Programm starte und nichts am Drehregler mache bekomme ich halte die Ausgabe es wuerde rechts herum gedreht. Drehe ich dann links herum wird das nur alle ca. 6 - 10 Messungen registriert und entsprechend ausgegeben.
joar
greetz & netten Abend euch noch.
Dieser Beitrag wurde von nobido bearbeitet: 05. Februar 2018 - 19:45