2 - Drucktaster
Kurzinformationen
Kurzinformationen
Aufgabe
Es wird eine Schaltung aus Taster und LED aufgebaut. Sobald der Taster gedrückt wird, soll die LED leuchten und sie soll ausgehen, wenn der Taster nicht mehr gedrückt wird.
Es werden zwei unterschiedliche Beschaltungen des Tasters betrachtet und in einer weiteren Schaltung der interne Pull-Up-Widerstand des Controllers aktiviert.
Material
1x USB-ISP-Programmer
1x Nullkraft-Sockel für Programmer
1x ATtiny13
1x Energiequelle, 5V
1x LED rot
1x Widerstand, 220 Ohm
1x Widerstand, 10 kOhm (optional)
1x Drucktaster
3x Steckdraht
1x Steckbrett
1x PC mit der Software BASCOM
Schaltskizze
Vorüberlegung
Port PB1 wird als Eingang geschaltet; über ihn wird die Information, die am Taster anliegt, abgefragt, während Port PB2 als Ausgang geschaltet ist. Eine LED mit Vorwiderstand ist mit PB2 verbunden und geht auf 1, sobald PB1 an seinem Eingang erkennt, dass der Taster gedrückt wurde. Wie erkennt PB1 das?
Am Eingang von PB1 liegt im Normalzustand (Taster nicht gedrückt) eine 1 (HIGH) an. Der Pull-up Widerstand von 10kOhm zieht den Eingang auf 1.
Sobald der Taster gedrückt wird fließt ein Strom vom Pluspol (5V) durch den Pull-up-Widerstand (10 kOhm) nach GND. Fast die gesamte Spannung fällt über dem 10 kOhm Widerstand ab, so dass der Eingang PB1 eine 0 (LOW) registriert. Im BASIC Programm wird mit der Kontrollstruktur
entschieden, dass dann der Ausgang PB2 auf 1 gesetzt wird.
Soweit die Theorie - jetzt kommt die Programmierpraxis.
Das Programm taster1.bas
Wie arbeitet das Programm taster1.bas?
Zeilen 15 - 18
Die benutzten Pin-Ports B.1 und B.2 werden als Eingang bzw. Ausgang und die Variable T1 wird vom Typ Byte deklariert. Die Variable T1 soll den Zustand am Eingang von PB1 auslesen und abspeichern.
Zeilen 21 - 29
In der Endlosschleife Do ... Loop wird der an PinB.1 anliegende Werte ( 0 oder 1) der Variablen T1 zugewiesen. Die If-Anweisung entscheidet anschließend, dass bei einer anliegenden 1 am Eingang (der Taster ist nicht gedrückt!), am Ausgang B.2 eine 0 anliegt (LED ist aus). Liegt hingegen eine 0 am Eingang an (der Taster ist gedrückt), dann wird der Ausgang B.2 auf 1 gezogen und die LED leuchtet.
Statt einen externen Pullup-Widerstand zu benutzen, wie im vorliegenden Fall, kann man auch den internen Pullup-Widerstand des Mikrocontrollers aktivieren. Das spart ein Bauteil und macht die Schaltung übersichtlicher. Im folgenden Programm wird der interne Pullup-Widerstand aktiviert, bei gleicher Funktionalität der Schaltung.
Kurzinformationen
... wird eingesetzt, um einen Controller-Eingang auf einen definierten Spannungswert zu heben (pull-up). Bei geöffnetem Taster T1 liegen am Eingang PB1 5 Volt an.
Fehlt dieser Widerstand, kann sich durch Störsignale (von außen) der Spannungspegel ständig verändern und bei geschlossenem Taster tritt ein Kurzschluss ein.
Wird ein Widerstand zwischen Eingang PB1 (Punkt P) und Pluspol der Energiequelle geschaltet, dann liegt Punkt P bei offenem Taster auf einem definierten Potenzial (hier bei +5V), man sagt auch, der Eingang wird auf 5V hochgezogen (pull-up). Bei geschlossenem Schalter T1 fließt ein Strom vom Pluspol über den Widerstand und Taster zum Minuspol; seine Stromstärke wird vom Widerstand begrenzt. Punkt P wird auf 0V gezogen.
Aufgabe
Die Aufgabenstellung ist wie in Übung 1, mit dem Unterschied, dass hier der interne Pullup-Widerstand aktiviert ist.
Material
1x USB-ISP-Programmer
1x Nullkraft-Sockel für Programmer
1x ATtiny13
1x Energiequelle, 5V
1x LED rot
1x Widerstand, 220 Ohm
1x Drucktaster
3x Steckdraht
1x Steckbrett
1x PC mit der Software BASCOM
Schaltskizze
Das Programm taster2.bas
Wie arbeitet das Programm taster1.bas?
Zeilen 17 - 20
Die Variable T1 wird als Integervariable definiert und dient dazu, den Wert am Eingang PB1 später auszulesen. Das DDRB-Register wird so eingestellt, dass PB2 als Ausgang und alle anderen Pins als Eingänge beschaltet werden.
Mit den Handlungsanweisungen
wird der Pull-Up Widerstand im Eingangsport B1 aktiviert.
Zeilen 22 - 29
In der Endlosschleife Do ... Loop wird der an PinB.1 anliegende Werte ( 0 oder 1) der Variablen T1 zugewiesen. Die
Anweisung besagt: wenn T1 gleich 0 ist (der Taster wurde gedrückt!), dann setze PORTB.2 auf 1 (LED an), sonst setze PORTB.2 auf 0 (LED aus).
Schreibe dein eigenes Programm
Baue eine Schaltung mit einem Taster und zwei LEDs (rot, grün) auf. Schreibe ein Programm, das mit dem ersten Tastendruck die rote LED einschaltet. Mit dem zweiten Tastendruck die rote LED aus- und die grüne anschaltet und beim dritten Tastendruck beide LEDs einschaltet. Der vierte Tastendruck ist wie der erste.
Weiter geht´s mit dem Kapitel Standardservo