Created
June 17, 2015 19:21
-
-
Save michaelsarduino/67d0f793bcee34ffaea4 to your computer and use it in GitHub Desktop.
Tastatur mit dem Arduino
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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