Schließerlogik: Taster mit internem Pull-Up-Widerstand
Abschlussbedingungen
Um eine Schließer-Logik verwenden zu
können, würden an dieser Stelle eigentlich interne Pull-Down-Widerstandände benötigt werden. Diese sind beim Arduino jedoch nicht hardwareseitig integriert. Es besteht jedoch die einfache Möglichkeit, den
Quellcode aus dem Kapitel "Taster mit internem Pull-Up-Widerstand" umzuschreiben und die Öffner-Logik in eine Schließer-Logik zu wandeln, indem die Bit-Abfrage auf den Wert 0 erfolgt anstelle von 1.
Umwandlung
Von Öffner-Logik (Pull-Up):
if((PINB & (1 << PORTB1)))
Zu Schließer-Logik (Pull-Down):
if((PINB & (1 << PORTB1)) == 0)
Auch hier lässt sich anhand der grünen LED die Logik erkennen.
Der Aufbau bleibt identisch mit dem aus dem vorherigen Abschnitt:
Abb.: Schalten von LEDs mittels softwarerealisiertem Pull-Up Widerstand -> Umwandlung in Schließerlogik; Quelle: BBS2 Wolfsburg
Bei Betätigung des Tasters leuchtet nun die grüne LED (Schließer-Logik). Ist der Taster nicht betätigt, leuchtet die rote LED.
#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 )) == 0)
{ // Taster an Pin 9 ist gedrückt
PORTD |= (1 << PORTD7); // grüne LED einschalten
PORTD &= ~(1 << PORTD6); // rote LED ausschalten
}
else
{ // Taster an Pin 9 ist nicht gedrückt
PORTD |= (1 << PORTD6); // rote LED einschalten
PORTD &= ~(1 << PORTD7); // grüne LED ausschalten
}
}
}
Das Ergebnis wird im folgenden Video gezeigt:
Zuletzt geändert: Montag, 21. Februar 2022, 08:45