Nr.04b – Tastenfeld – Schloss

Mit dem Tastenfeld ein Zahlencode-Schloss programmieren

Aufgabe: Mit der Eingabe eines 3-stelligen Codes auf dem Tastenfeld soll eine LED aufleuchten und ein Servo eine bestimmte Position einnehmen. Am Servo könnte z.B. ein Riegel befestigt werden, der eine Tür entriegelt.

Material: Arduino / Breadboard / Tastenfeld (in diesem Beispiel 4×4) / Kabel / ein rote LED/ eine grüne LED / zwei 100 Ohm Widerstände / Servo

Materialbeschaffung: www.funduinoshop.com

 

Wir wollen mit der Eingabe eines 3-stelligen Passworts auf dem Tastenfeld ein grüne LED aufleuchten lassen und einen Servo eine bestimmte Position einnehmen lassen. Wenn das „Schloss“ gesperrt ist soll eine rote LED leuchten und der Servo eine andere Position einnehmen. Dieses Tutorial dient als Anregung und Beispiel dazu, wie aus diesen einfachen Bauteilen z.B. ein „Safe“ gebaut werden kann.

Kommen wir nun zum Aufbau. Diese ist recht simpel und geht aus der nachfolgenden Fritzing Skizze hervor.

Zur besseren Orientierung bei dem Verkabeln des Tastenfelds:

An den äußersten Kontakten des Tastenfeld sind die Zahlen 1 und 7 zu sehen. Der Kontakt 1 am Tastenfeld wird mit dem Pin 2 am Arduino verbunden. Aufsteigend geht es dann weiter bis zu Kontakt 7 am Tastenfeld welcher mit dem Pin 8 am Arduino verbunden wird.

Skizze:

arduino-schloss

Für den Code wird die Keypad Library benötigt, welche der Arduino Software erst hinzugefügt werden muss.

Arduino Software öffnen> „Sketch“ auswählen > „Include Library“ auswählen > „Manage Libraries..“ wählen > In der Suchzeile des neuen Fensters „Keypad“ eingeben > die oberste Library von Mark Stanley auswählen und installieren.

Ab jetzt kann die Keypad Library im Code verwendet werden.

Code:

#include <Keypad.h> //Keypad und Servo Library wird eingebunden

#include <Servo.h>

Servo servoblau; //Servo wird ab jetzt mit „servoblau“ angesprochen

char* password = "123"; //Das Passwort wird festgelegt. In diesem Beispiel

// „123“

int position = 0;

const byte ROWS = 4; //Hier wird angegeben wie viele Zeilen und Spalten das

const byte COLS = 3; //Tastenfeld besitzt

char keys[ROWS][COLS] = { //Die Ziffern und Zeichen des Tastenfelds werden angegeben

{'#', '0', '*'}, 
{'9', '8', '7'},
{'6', '5', '4'},
{'3', '2', '1'}

};

byte rowPins[ROWS] = {5, 6, 7, 8}; //Die Verbindung mit dem Arduino wird

byte colPins[COLS] = {2, 3, 4}; //festgelegt

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

int roteLED = 12; //Die rote LED ist an Pin 12 angeschlossen

int grueneLED = 13; //Die grüne LED wird an Pin 13 angeschlossen

void setup()

{

pinMode(roteLED, OUTPUT); //Die LEDs werden als Ausgang festgelegt

pinMode(grueneLED, OUTPUT);

servoblau.attach(11); //Der Servo ist an Pin 11 angeschlossen

setLocked(true);

}

void loop()

{

char key = keypad.getKey();

if (key == '*' || key == '#') //wenn das Schloss entsperrt ist kann es mit der Taste „*“ oder „#“ wieder gesperrt werden

{

position = 0;

setLocked(true); //Schloss sperren wenn * oder # gedrückt wurde

}

if (key == password[position])

{

position ++;

}

if (position == 3) //Diese Zeile gibt die Länge des Passwortes an. In unserem

//Fall 3 Stellen.

{

setLocked(false);

}

delay(100);

}

void setLocked(int locked)

{

if (locked) // Wenn das Schloss gesperrt ist soll..

{

digitalWrite(roteLED, HIGH); //..die rote LED leuchten..

digitalWrite(grueneLED, LOW); //..die grüner LED nicht leuchten..

servoblau.write(90); //und der Servo soll 0 Grad ansteuern.

}

else //wenn das Schloss entsperrt ist soll..

{

digitalWrite(roteLED, LOW); //..die rote LED nicht leuchten..

digitalWrite(grueneLED, HIGH); //..die grüne LED leuchten..

servoblau.write(0); //..und der Servo 90 Grad ansteuern.

}

}

Diese Anleitung dient als Beispiel und Grundstein wie man ein einfaches „Schloss“ mit Hilfe weniger Bauteile und dem Arduino konstruieren kann.