INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
LCD Display programmieren
20.02.2015, 22:12
Beitrag #1
LCD Display programmieren
Guten Abend zusammen,

ich arbeite derzeit an einem Menü, welches auf einem 2x16 LCD Display erscheinen soll, leider gibt es hier und da ein paar Schwierigkeiten. Mein Hintergedanke ist folgender, ich habe zunächst einen Button, sobald dieser gedrückt wird, soll die Anzahl der Betätigungen ermittelt werden. 2 Mal drücken = Fall 2 --> Menüeintrag 2. So weit die Theorie. Leider funktioniert dies nicht, ich drücke auf den Button und er springt in alle Menüs, von oben angefangen...

Ich wäre für jede Hilfe sehr dankbar.

Code:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int taster = 7;
int tasterstatus;
int counter = 0;

void setup()
{
pinMode(taster, INPUT);
lcd.begin(16, 2);
}



void loop()
{

tasterstatus=digitalRead(taster);
if (tasterstatus == 0)
// Hier stimmt etwas nicht, da er von case 0 in 1 in 2 springt...
{
counter = counter + 1;
delay(2000);
// sonst würde die ganze Zeit erhöht werden

}

switch(counter) {
  case 0:
    lcd.clear();
    lcd.setCursor(0, 0);

    lcd.print("HALLO");

    lcd.setCursor(0, 1);

    lcd.print("Viel Erfolg");
   break;
  
   case 1:
    lcd.clear();
    lcd.setCursor(0, 0);

    lcd.print("CASE 1");

    lcd.setCursor(0, 1);

    lcd.print("CASE 1");
   break;

   case 2:
    lcd.clear();
    lcd.setCursor(0, 0);

    lcd.print("CASE 2");

    lcd.setCursor(0, 1);

    lcd.print("CASE 2");
   break;
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 09:50
Beitrag #2
RE: LCD Display programmieren
Hallo,
und dann noch ein paar grundsätzliche Fragen dazu:

* Wie ist der Taster verdrahtet, so wie der Code aussieht schaltest du den gegen +5V, hast du dann einen Pull Down Widerstand vom Port gegen GND drin ?
Alternativ kann man den internen PULLUP Widerstand aktivieren und den Taster gegen GND schalten lassen. Das ist die übliche Methode.

* Dann fehlt bei dir noch das entprellen des Tasters weil so ein Taster beim schließen leicht mal schnell so 50 Impulse generiert bis der Kontakt zuverläßig geschlossen ist. Steichwort Debounce.

* Ablauftechnisch gesehen wäre es eine Möglichkeit innerhalb einer zu bestimmenden Zeit von z.B. 3 Sekunden die Tastenimpulse zu zählen und wenn dann nichts mehr kommt wird der Counter ausgewertet und im Programm enstprechend verzweigt.
Wobei mir da schon wieder eine Alternative im Kopf rumschwebt die dann aber wohl ein bischen komplizierter wird.

So mal als Anfang...
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 12:02
Beitrag #3
RE: LCD Display programmieren
Danke für eure Hilfe, es war letztlich kein Fehler in der Programmierung.

Beim Button fehlte bei mir ein 10K Ohm Widerstand am GND... Dazu habe ich gleich mal eine Frage, wenn ich den Widerstand weg lasse, gibt es einen Kurzschluss, da ja GND dann mit 5 Volt verbunden wird. Der 10 K Ohm Widerstand kann das beheben, aber warum ist das so ? Es wird doch dennoch + an - angelegt
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2015, 12:27
Beitrag #4
RE: LCD Display programmieren
(21.02.2015 12:02)C-Programmierer schrieb:  Beim Button fehlte bei mir ein 10K Ohm Widerstand am GND... Dazu habe ich gleich mal eine Frage, wenn ich den Widerstand weg lasse, gibt es einen Kurzschluss, da ja GND dann mit 5 Volt verbunden wird. Der 10 K Ohm Widerstand kann das beheben, aber warum ist das so ? Es wird doch dennoch + an - angelegt
Wenn Du das einigermaßen sinnvoll verkabelt hast, dann ist beim Drücken der Taste tatsächlich Vcc und GND über den 10K verbunden. Es fließen dabei aber nur
I = U/R = 5V / 10kOhm = 0,5mA. Das ist kein Problem.
Dein Coding legt nahe, dass Du Low-Aktiv arbeitest. D.h. der Taster ist mit GND verbunden und der Widerstand hängt zwischen Vcc und dem Pin. In dem Fall kannst Du den Widerstand weglassen. Du musst den Pin nur so initialisieren:
Code:
pinMode(taster, INPUT_PULLUP);
Das schaltet den internen Pullup-Widerstand ein.
Gruß,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Optischenfüllstandsensor programmieren Freeed94 19 532 13.05.2017 08:03
Letzter Beitrag: Binatone
  Was optimiert der Kompiler/Optimaleres Programmieren da_user 3 270 14.04.2017 17:26
Letzter Beitrag: rkuehle
  Waveform auf Nextion Display GuaAck 6 289 12.04.2017 19:08
Letzter Beitrag: SkobyMobil
  neues OLED Display nötig an vorhandenem uC Systemswerlich Ersatz hd311 7 233 26.03.2017 11:16
Letzter Beitrag: hd311
  Pinbelegung TFT-Display ILI9341 mingo 19 683 23.03.2017 17:49
Letzter Beitrag: oOSpikeOo
  Arduino Läst sich nicht Programmieren Micha06 4 364 29.01.2017 17:27
Letzter Beitrag: Micha06
  Display über I2-Bus betreiben mfri 22 951 23.01.2017 11:06
Letzter Beitrag: renid55
  3-Achsen Beschleunigungssensor ADXL355 programmieren Alexuino 0 287 11.01.2017 15:41
Letzter Beitrag: Alexuino
  matrix display elegoo uno R3 starter set lecker16 7 762 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  ESP8266 Webserver Programmieren HDT 11 1.782 23.08.2016 13:28
Letzter Beitrag: HDT

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste