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 Hintergrundbeleuchtung nach X Sec abschalten
11.01.2015, 10:38
Beitrag #1
LCD Hintergrundbeleuchtung nach X Sec abschalten
Hallo Leute,
ich "spiele" gerade ein wenig mit einem LCD-Display und KeyPad rum.
Das funktioniert auch alles soweit.

Nun würde ich gerne das die Hintergrundbeleuchtung bei betätigen einer Taste eingeschaltet wird und nachdem keine Eingabe mehr erfolgt 10 Sec später wieder ausgeht.

Um erstmal klein anzufangen habe ich einen zusätzlichen Taster eingebaut um die Spannung auf HIGH zu setzen.
Soweit so gut - Taster gedrückt, HB (Hintergrundbeleuchtung) geht an und nach 10 Sec wieder aus.

Mein Problem ist leider nur das während der Zeit wo die HB leuchtet auch keine Eingabe des Keypad angenommen wird.
Das wird wohl daran liegen das durch den DELAY Befehl erst gewartet wird bis der Sketch weiter abgearbeitet wird.

Kann mir jemand einen Tipp geben wie ich das Problem löse?

Hier noch der Code zum Überblick:

Code:
#include <LiquidCrystal.h>
#include <Keypad.h>

#define hb 11
#define taste 10

const byte ROWS = 4; // 4 Zeilen
const byte COLS = 3; // 3 Reihen

char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'},
};

byte rowPins[ROWS] = {5,4,3,2};
byte colPins[COLS] = {8,7,6};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

LiquidCrystal lcd(A4, A5, A0, A1, A2, A3); // Zuweisen der Arduino Ports


void setup(){
lcd.begin(16, 2);
pinMode(hb, OUTPUT);
pinMode(taste, INPUT);
}

void loop (){
if (digitalRead(taste) == HIGH)
  {
    digitalWrite(hb, HIGH);
    delay(10000);
    digitalWrite(hb, LOW);
  }
  char key = keypad.getKey();
  if (key != NO_KEY)
  {
    lcd.print(key);
    
  }
    
}

Vorab schon mal DANKE!

Glück auf,
Guido
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2015, 11:49 (Dieser Beitrag wurde zuletzt bearbeitet: 11.01.2015 11:51 von Bitklopfer.)
Beitrag #2
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
(11.01.2015 10:46)Zorg schrieb:  Basics: blink without delay

Hi,
vielleicht sollte man mal hier eine Rubrik Workshop aufmachen wo solche Basic's ausgiebig beleuchtet werden...

@Querkopf,
nur mal so als Tipp, du mußt eine Variable so wie einen Kurzzeitwecker "aufziehen" und wenn die auf 0 ist schaltest das BL wieder aus...das klappt wunderbar.

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
11.01.2015, 12:04
Beitrag #3
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
Danke für den Tipp mit dem Kurzzeitwecker.
In der Richtung werde ich mal weiter probieren.

Glück auf,
Guido
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.01.2015, 12:21
Beitrag #4
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
Müsste doch so gehen, oder? Wie BK gesagt hat als "Wecker", nur eben gucken ob die Haltezeit für HB erreicht ist.
Code:
#include <LiquidCrystal.h>
#include <Keypad.h>

#define hb 11
#define taste 10

const byte ROWS = 4; // 4 Zeilen
const byte COLS = 3; // 3 Reihen
const unsigned long haltezeit = 10000; // Haltezeit für hb
unsigned long last_hb; // wann letztes mal hb aktiviert?
const char keys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'},
};

byte rowPins[ROWS] = {5, 4, 3, 2};
byte colPins[COLS] = {8, 7, 6};

Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

LiquidCrystal lcd(A4, A5, A0, A1, A2, A3); // Zuweisen der Arduino Ports

void setup() {
  lcd.begin(16, 2);
  pinMode(hb, OUTPUT);
  pinMode(taste, INPUT);
}

void loop () {
  if (digitalRead(taste) == HIGH)
  {
    digitalWrite(hb, HIGH);
    last_hb = millis();
    if (millis() - last_hb > haltezeit) digitalWrite(hb, LOW);
  }
  char key = keypad.getKey();
  if (key != NO_KEY)
  {
    lcd.print(key);

  }
}
Grüße Ricardo

Nüchtern betrachtet...ist besoffen besser Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2015, 10:43
Beitrag #5
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
Hallo querkopf,

ich habe zwar kein keypad; aber ich habe mir eben mal die Lib angesehen.

Du kannst doch eine Eventfunktion angeben die immer dann ausgelöst wird wenn eine Taste auf dem Keypad gedrückt wurde.

So müsste es doch möglichsein z.B einen 10 sekunden Timer zu starten der immer dann zurückgesetzt wird wenn die Eventfunktion aufgerufen wird. Natürlich wird er nur zurück gesetzt wenn er überhaupt aktiv ist.

Gruß
Stephan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.01.2015, 11:35
Beitrag #6
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
(11.01.2015 12:02)Zorg schrieb:  @Bitklopfer:
gute Idee, wird aber nicht wirklich helfen Wink
denn:
- wird genauso wenig genutzt wie die Suchfunktion
- gibt dann in den Beiträgen zu viele Verlinkungen zum Workshop
- wird mit Fragen zu den Einzelthemen "zugemüllt"
- ...
Wink

auch wieder wahr...Big Grin Confused

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
12.01.2015, 16:31
Beitrag #7
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
Danke euch,
damit weis ich schon mal in welcher Richtung ich denken und testen muss.

DANKE

Glück auf,
Guido
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
13.01.2015, 16:50
Beitrag #8
RE: LCD Hintergrundbeleuchtung nach X Sec abschalten
(12.01.2015 10:43)StephanBuerger schrieb:  Hallo querkopf,

ich habe zwar kein keypad; aber ich habe mir eben mal die Lib angesehen.

Du kannst doch eine Eventfunktion angeben die immer dann ausgelöst wird wenn eine Taste auf dem Keypad gedrückt wurde.

So müsste es doch möglichsein z.B einen 10 sekunden Timer zu starten der immer dann zurückgesetzt wird wenn die Eventfunktion aufgerufen wird. Natürlich wird er nur zurück gesetzt wenn er überhaupt aktiv ist.

Hallo StephanBuerger,
das wäre so zu sagen mein Endziel. Somit würde ich dann noch den separaten Taster sparen. Aber bis ich soweit bin, muss ich noch viel lernen.

Glück auf,
Guido
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Question Arduino Due nach dem 2. Start Fehlermelddung beim flashen juergen001 2 231 03.03.2018 09:07
Letzter Beitrag: juergen001
  Schleife nach else beenden Chef_2 24 1.013 08.02.2018 23:28
Letzter Beitrag: Franz54
  Arduino Leonardo Keyboard abschalten aggro600 5 422 25.12.2017 18:40
Letzter Beitrag: Tommy56
  String nach Byte Array in ASCII-Codierung nexus1212 7 903 05.11.2017 14:36
Letzter Beitrag: Tommy56
  char-Array nach int? torsten_156 8 884 04.11.2017 18:44
Letzter Beitrag: Tommy56
  Arduino funktioniert immer erst nach reset Maxi290997 11 1.342 25.07.2017 09:38
Letzter Beitrag: Maxi290997
  LEDs und Sound synchron nach kurzem Tastendruck Thor Wallhall 32 2.604 24.06.2017 21:01
Letzter Beitrag: georg01
  Neustart nach SD-Kartentausch erforderlich? Retian 10 1.181 27.02.2017 20:41
Letzter Beitrag: Retian
  while Schleife nach sleep mode interrupt tklaus 13 1.581 23.11.2016 17:40
Letzter Beitrag: Tommy56
Question Keine Verbindung via USB nach flashen des Programms chaoscrack 5 833 23.08.2016 14:58
Letzter Beitrag: hotsystems

Gehe zu:


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