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> |