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!
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.
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
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.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  while Schleife nach sleep mode interrupt tklaus 13 263 23.11.2016 17:40
Letzter Beitrag: Tommy56
Question Keine Verbindung via USB nach flashen des Programms chaoscrack 5 203 23.08.2016 14:58
Letzter Beitrag: hotsystems
  String nach UTF16 konvertieren (UTF-16) ThoEngel 0 301 20.02.2016 19:22
Letzter Beitrag: ThoEngel
  Softserial nach Serial1 für den MEGA2560 umsetzen. arduinofan 2 426 27.12.2015 18:40
Letzter Beitrag: arduinofan
  Integer nach Ascii-String ? itoa arduinofan 2 594 22.12.2015 15:34
Letzter Beitrag: arduinofan
  Mathe-(nach)-hilfe für UTFT rkuehle 9 1.285 30.08.2015 09:11
Letzter Beitrag: rkuehle
  Anfänger braucht Hilfe: Avr libs sind nach Update nicht mehr ansprechbar Legofriend 1 628 15.03.2015 23:32
Letzter Beitrag: Foto-Ralf
  Ewige Suche nach einer Library... Staroxx 5 1.928 22.02.2015 11:42
Letzter Beitrag: SkobyMobil
  return wert ändert sich nach Serial.print() ShardZero 6 1.108 16.07.2014 16:54
Letzter Beitrag: rkuehle
  Wie Funktioniert die Speicherverwaltung von Funktionen (nach dem Kompilieren)? itsy 2 1.503 08.05.2014 20:28
Letzter Beitrag: itsy

Gehe zu:


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