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
  neues OLED Display nötig an vorhandenem uC Systemswerlich Ersatz hd311 7 142 26.03.2017 11:16
Letzter Beitrag: hd311
  Pinbelegung TFT-Display ILI9341 mingo 19 431 23.03.2017 17:49
Letzter Beitrag: oOSpikeOo
  Arduino Läst sich nicht Programmieren Micha06 4 263 29.01.2017 17:27
Letzter Beitrag: Micha06
  Display über I2-Bus betreiben mfri 22 720 23.01.2017 11:06
Letzter Beitrag: renid55
  3-Achsen Beschleunigungssensor ADXL355 programmieren Alexuino 0 210 11.01.2017 15:41
Letzter Beitrag: Alexuino
  matrix display elegoo uno R3 starter set lecker16 7 544 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  ESP8266 Webserver Programmieren HDT 11 1.498 23.08.2016 13:28
Letzter Beitrag: HDT
  IDE 1.7.10 und Attiny programmieren Seewolf 7 683 06.08.2016 11:49
Letzter Beitrag: Seewolf
  LCD Display plötzlich komische Zeichen Jessi97 2 365 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 269 25.06.2016 17:46
Letzter Beitrag: RollingStone

Gehe zu:


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