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
  Display über I2-Bus betreiben mfri 1 34 Heute 18:40
Letzter Beitrag: hotsystems
  Speicher Voll, Array zu groß, Display Datenerfassung nilsconrad 31 432 13.01.2017 18:16
Letzter Beitrag: renid55
  3-Achsen Beschleunigungssensor ADXL355 programmieren Alexuino 0 96 11.01.2017 15:41
Letzter Beitrag: Alexuino
  Display Oszilloskop 5kHz Darstellung Abtastung nilsconrad 3 192 16.12.2016 14:17
Letzter Beitrag: Bitklopfer
  matrix display elegoo uno R3 starter set lecker16 7 290 23.11.2016 21:14
Letzter Beitrag: Bitklopfer
  ESP8266 Webserver Programmieren HDT 11 998 23.08.2016 13:28
Letzter Beitrag: HDT
  IDE 1.7.10 und Attiny programmieren Seewolf 7 546 06.08.2016 11:49
Letzter Beitrag: Seewolf
  LCD Display plötzlich komische Zeichen Jessi97 2 300 28.07.2016 11:34
Letzter Beitrag: Bitklopfer
  Altes Digitales Display mit Text/Bits durch Genuino Micro versorgen - SPI-Bibliothek? RollingStone 0 225 25.06.2016 17:46
Letzter Beitrag: RollingStone
  Makeblock mit Scratch programmieren- Probleme Keinen Schimmer 6 1.220 06.05.2016 18:34
Letzter Beitrag: arduinopeter

Gehe zu:


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