Skip to content

Instantly share code, notes, and snippets.

@michaelsarduino
Created June 17, 2015 19:21
Show Gist options
  • Save michaelsarduino/67d0f793bcee34ffaea4 to your computer and use it in GitHub Desktop.
Save michaelsarduino/67d0f793bcee34ffaea4 to your computer and use it in GitHub Desktop.
Tastatur mit dem Arduino
#include <LiquidCrystal.h> //nachladen der LCD Bibliothek
LiquidCrystal lcd(5,4,3,2,1,0); //festlegen der Pins fuer das Display
unsigned long last;
unsigned long akt;
unsigned long dif;
char* pressed[5];
String last_letter;
String letter;
int number = 0;
int position_1 = 0;
int erase = 0; //definieren der Variablen fuer das Programm
void setup() {
pinMode(6, INPUT);
pinMode(7, INPUT); //definieren der Inputs fuer die Potentiometer
pinMode(13, OUTPUT); //LED zeigt an, ob das Display gerade geleert wird(Arduino Board LED)
lcd.begin(20,4); //festlegen der Displaygroesse 20 Spalten, 4 Reihen
}
void loop() {
if(analogRead(0) < 20)
{
pressed[0] = "A";
pressed[1] = "B";
pressed[2] = "C";
pressed[3] = "D";
pressed[4] = "";
}
if(analogRead(1) < 20)
{
pressed[0] = "E";
pressed[1] = "F";
pressed[2] = "G";
pressed[3] = "H";
pressed[4] = "";
}
if(analogRead(2) < 20)
{
pressed[0] = "I";
pressed[1] = "J";
pressed[2] = "K";
pressed[3] = "L";
pressed[4] = "";
}
if(analogRead(3) < 20)
{
pressed[0] = "M";
pressed[1] = "N";
pressed[2] = "O";
pressed[3] = "P";
pressed[4] = "";
}
if(analogRead(4) < 20)
{
pressed[0] = "Q";
pressed[1] = "R";
pressed[2] = "S";
pressed[3] = "T";
pressed[4] = "U";
}
if(analogRead(5) < 20)
{
pressed[0] = "V";
pressed[1] = "W";
pressed[2] = "X";
pressed[3] = "Y";
pressed[4] = "Z";
} //jeweils Abfragen, ob ein Button gedrueckt ist, also der Eingang mit dem Ground verbunden ist und dann speichern der Buchstaben in Array pressed
if(pressed[0] != "") //wenn Button gedrueckt
{
akt = millis();
dif = akt - last;
if(last_letter == pressed[0] && number < 4 && dif < 2000) //wenn selber Knopf zweimal gedrueckt, aber unter 5 mal und vergangene Zeit kleiner 2 Sekunden
{
number = number + 1;
letter = pressed[number]; //aktueller Buchstabe ist der naechst auf einem Button (z.B. B nach A)
last = millis(); //neues festlegen des letzten Drueckens auf den aktuellen Button
lcd.setCursor(position_1, 0); //Position zum ueberschreiben des aktuellen Zeichens
}
else { //wenn neuer Button gedrueckt einfach ausgeben auf Display auf naechster Stelle und zuruecksetzten der Zeit/zuletzt gedrueckter Button
letter = pressed[0];
number = 0;
last = millis();
if(erase != 1) //wenn das Loeschen des letzten Zeichens war, dann kein Vorruecken zur naechsten Stelle
{
position_1 = position_1 + 1;
}
else {
erase = 0;
}
lcd.setCursor(position_1, 0);
}
lcd.print(letter);
last_letter = pressed[0];
pressed[0] = "";
pressed[1] = "";
pressed[2] = "";
pressed[3] = "";
pressed[4] = " "; //ausgeben des Zeichens und zuruecksetzten
}
int status_poti = digitalRead(6);
if(status_poti == 1)
{
lcd.setCursor(position_1, 0);
lcd.print(" ");
erase = 1;
} //ueberpruefen, ob das letzte Zeichen geloescht werden soll, wenn ja speichern in Variable loeschen und speichern in Variable fuer erase
if(digitalRead(7) == HIGH)
{
digitalWrite(13, HIGH); //LED an
lcd.clear(); //loeschen aller Zeichen auf dem Display
lcd.setCursor(0,0);
position_1 = 0;
delay(10);
digitalWrite(13, LOW); //LED aus
}
delay(110); //kurze Pause
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment