Differences
This shows you the differences between two versions of the page.
|
— |
arduino:arduino_read_output_pin [2013/01/15 23:38] (current) boxtec created |
| | + | ====== Lesen eines Pins im pinMode(OUTPUT) ====== |
| | + | Wenn versucht wird mit //digitalRead()// einen Pin zu lesen, der vorher mit //pinMode(OUTPUT);// |
| | + | als Ausgang konfiguriert wurde erhält man immer 0/LOW und der Port geht auch auf LOW. |
| | + | Wir vermuten, dass der //digitalRead()// Befehl auch eine Umschaltung des Ports zum Eingang einhergeht, welche dafür sorgt dass die Pulldown Widerstände aktiviert werden. |
| | | | |
| | + | Um dies zu umgehen und trotzdem nicht von jedem Ausgang eine Statusvariable mitführen zu müssen |
| | + | kann man wie folgt vorgehen, um die Register des ATmega Chips direkt auszulesen: |
| | + | |
| | + | <code c> |
| | + | port_status = bitRead(PORTD,2); // digitalen Pin 2 auslesen |
| | + | </code> |
| | + | |
| | + | Welchen Port und welchen Pin man für welche Arduino Pin-Nummer nehmen muss, |
| | + | kann folgendem Diagramm von der [[http://arduino.cc/en/Hacking/PinMapping|Arduino Website]] entnommen werden: |
| | + | |
| | + | {{:arduino:arduino-to-atmega8-pins.png|Arduino Pin Mapping}} |
| | + | |
| | + | == Beispiel == |
| | + | Um Pin 13 auszulesen: |
| | + | <code c> |
| | + | port_status = bitRead(PORTB,5); |
| | + | </code> |