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
Lightbulb Wie kann ich Daten vom Nextion Display auf Arduino Mega2560 senden und benutzen MarkusA 14 785 02.11.2017 23:10
Letzter Beitrag: MarkusA
  Daten übergabe ans Nextion Display Franz54 53 2.514 09.10.2017 09:16
Letzter Beitrag: Franz54
  Attiny45-20 programmieren PeterCrash 4 337 22.09.2017 20:49
Letzter Beitrag: Mathias
  Nextion Display komma Zahlen darstellen becki133 8 586 18.09.2017 18:26
Letzter Beitrag: becki133
  ATtinys programmieren Thor Wallhall 11 874 14.09.2017 21:26
Letzter Beitrag: Thor Wallhall
  ATtiny13 mit der Arduino IDE 1.0.6 programmieren - geht das? Gelegenheitsbastler 5 2.872 11.09.2017 15:24
Letzter Beitrag: Mathias
  433 MHz - Empfaenger + OLED display Matthias_Arduino 4 334 03.09.2017 17:25
Letzter Beitrag: hotsystems
  Kommandozeilen-Parser programmieren tollewurst 2 364 21.08.2017 22:15
Letzter Beitrag: georg01
Wink Arduino TFT Display MEGA 2560 Samsuino 47 3.636 24.07.2017 12:45
Letzter Beitrag: Harry Hirsch
  Nextion Display führt keine gesendeten Befehle aus re.eule 12 1.955 13.07.2017 21:46
Letzter Beitrag: SkobyMobil

Gehe zu:


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