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
  matrix display elegoo uno R3 starter set lecker16 7 156 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  ESP8266 Webserver Programmieren HDT 11 774 23.08.2016 13:28
Letzter Beitrag: HDT
  IDE 1.7.10 und Attiny programmieren Seewolf 7 480 06.08.2016 11:49
Letzter Beitrag: Seewolf
  LCD Display plötzlich komische Zeichen Jessi97 2 244 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 205 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 6 975 06.05.2016 18:34
Letzter Beitrag: arduinopeter
  Problem mit OLED 0.96" Display torsten_156 3 545 03.04.2016 15:10
Letzter Beitrag: hotsystems
  Display Blinkt immer arduino_weatherstation 29 1.628 12.03.2016 13:10
Letzter Beitrag: hotsystems
  2.2 TFT SPI Display s_fr 3 484 20.02.2016 15:28
Letzter Beitrag: René Hitz
  SainSmart 5" TFT LCD Display + 5" TFT/SD Shield Kit Für Arduino Mega2560 R3 Falk84 14 1.242 19.02.2016 08:48
Letzter Beitrag: arduinopeter

Gehe zu:


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