Taster mit internem Pull Up-Widerstand
Ansteuerung von LEDs per Taster mit internem Pull-Up-Widerstand
Die Mikrocontroller der Atmega-Familie wurden mit internen Pull-Up-Widerständen für ihre digitalen Ports ausgestattet. Die internen Pull-Up Widerstände müssen per Software "aktiviert" werden.
In diesem Programmbeispiel wird gezeigt, wie man einen Taster mit internem Pull-Up-Widerstand zur LED-Steuerung nutzt.
Ein gedrückter Taster liefert
eine 0 (Low-Pegel) am Eingang, die rote LED leuchtet. Ein nicht gedrückter Taster eine 1 (High-Pegel), die grüne LED leuchtet.
Abb.: Schalten von LEDs mittels softwarerealisiertem Pull-Up Widerstand; Quelle: BBS2 Wolfsburg
Der dazugehörige Quellcode sieht wie folgt aus:#include <avr/io.h>
#define F_CPU 16000000UL
#include <util/delay.h>
int main(void)
{
DDRD = (1 << 7) | (1 << 6); // Pin 7 und 6 als Ausgänge setzen
DDRB = (0<<PORTB1); // Pin 9 als Eingang setzen
PORTB |= (1 << PORTB1); // Pull Up Widerstand setzen
while (1)
{
if((PINB & (1 << PORTB1 )))
{ // Taster an Pin 9 ist nicht gedrückt
PORTD |= (1 << PORTD7); // grüne LED einschalten
PORTD &= ~(1 << PORTD6); // rote LED ausschalten
}
else
{ // Taster an Pin 9 ist gedrückt
PORTD |= (1 << PORTD6); // rote LED einschalten
PORTD &= ~(1 << PORTD7); // grüne LED ausschalten
}
}
}
Zeile 10 im Quellcode sorgt für die softwaretechnische Zuschaltung des Pull-Up-Widerstandes.
Die Logik lässt sich einfach anhand der grünen LED erklären. Ist der Taster nicht gedrückt, leuchtet sie. Ist der Taster gedrückt, erlischt sie. Es handelt sich als um eine Öffner-Logik (wenn der Taster eigentlich ein Schließer ist).
Das Ergebnis wird im folgenden Video gezeigt: