ijjiij
03.10.2012, 17:08
Hallo,
Also ich bin gerade dabei für meinen Roboter eine Drehzahlmessung / Odometrie mit hilfe von 2 Gabellichtschranken zu basteln.
Dabei habe ich die Schaltung aus der RN-Wiki nachgebaut (http://www.rn-wissen.de/index.php/Gabellichtschranke).
Jetzt eine kleine Verständnisfrage dazu.
Wenn die Schranke nicht blockiert, dann kommt laut Wiki die logische 1 am Controller an.
Wenn die Schranke blockiert ist, dann kommt folglich eine 0 am Controller an.
Ich habe jetzt aber eben eine Verständnisfrage, weil ich gerade etwas auf der Leitung stehe.
1.) Warum kommt am Controller eine 0 an, wenn die Schranke blockiert ist? Der Pin ist ja eigentlich trotzdem noch mit +5V verbunden. Woher komtm dann plötzlich der LOW-Zustand am Controller?
2.) Wie muss dann der Pin am Controller konfiguriert werden? (Angenommen PB0)
DDRB = (0<<PB0); //Weil der PB0 ja ein Eingang sein soll
Wie muss jetzt der PB0 am PORTB konfiguriert werden? Einfach garnicht, weil es ein Eingangspin ist?
Die entsprechende Abfrage wäre dann:
if(PINB & (0<<PB0)) //also wenn die Schranke blockiert ist
{
//do something
}
Ist das so richtig?
LG
ijjiij
Also ich bin gerade dabei für meinen Roboter eine Drehzahlmessung / Odometrie mit hilfe von 2 Gabellichtschranken zu basteln.
Dabei habe ich die Schaltung aus der RN-Wiki nachgebaut (http://www.rn-wissen.de/index.php/Gabellichtschranke).
Jetzt eine kleine Verständnisfrage dazu.
Wenn die Schranke nicht blockiert, dann kommt laut Wiki die logische 1 am Controller an.
Wenn die Schranke blockiert ist, dann kommt folglich eine 0 am Controller an.
Ich habe jetzt aber eben eine Verständnisfrage, weil ich gerade etwas auf der Leitung stehe.
1.) Warum kommt am Controller eine 0 an, wenn die Schranke blockiert ist? Der Pin ist ja eigentlich trotzdem noch mit +5V verbunden. Woher komtm dann plötzlich der LOW-Zustand am Controller?
2.) Wie muss dann der Pin am Controller konfiguriert werden? (Angenommen PB0)
DDRB = (0<<PB0); //Weil der PB0 ja ein Eingang sein soll
Wie muss jetzt der PB0 am PORTB konfiguriert werden? Einfach garnicht, weil es ein Eingangspin ist?
Die entsprechende Abfrage wäre dann:
if(PINB & (0<<PB0)) //also wenn die Schranke blockiert ist
{
//do something
}
Ist das so richtig?
LG
ijjiij