Moin Moin,
ich bin ziemlich neu in der Materie, nur so vorne weg.
Zu meinem kleinen Projekt:
Ich habe ein 4zeiliges LCD Display, welches ich schon angesteuert bekomme
Auf diesem LCD soll ein Timer von 3 Minuten ablaufen nachdem ein Taster(T1) gedrĂĽckt wird.
Wenn der Timer abgelaufen ist, soll das Programm wieder auf den nächsten Tastendruck warten.
Wird während des Ablaufens des Timers die Stopptaste(T2) gedrückt, soll der Timer auf 00:00:00 gehen, und nach kurzer Zeit wieder auf den Startbildschirm wo dann nach drücken von (T1) der Timer wieder startet.
Einen Timer habe ich gefunden, der dem gut entspricht was ich mir vorstelle, nur leider irritieren mich die "void" Befehle und das mit dem Taster ansprechen funzt auch leider nicht so richtig.
Das ist mein Code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//www.brilliantlyeasy.com/
int hours = 0; // start hours
int minutes = 3; //start min
int seconds = 0; //start seconds
//LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //<--removed- Different LCD manufacture
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);;//Pin Code for Arduino SainSmart LCD 1602 KeyPad
void setup() {
}
void loop() {
lcd.begin(20, 4);
lcd.setCursor (1, 0);
lcd.print("Bauteil");
lcd.setCursor (3, 1);
lcd.print("Nr.");
lcd.setCursor (4, 2);
lcd.print("(1) START");
lcd.setCursor (4, 3);
lcd.print("(2) STOPP");
delay(2000);
lcd.clear();
// lcd.scrollDisplayLeft();
// wait a bit:
lcd.setCursor (1, 0);
lcd.print("ATP Backshot Valve ");
lcd.setCursor (3, 1);
lcd.print("GLS31-001-0000");
lcd.setCursor (2, 2);
lcd.print("Pruefung laeuft");
lcd.setCursor (4, 3);
while (hours > 0 || minutes > 0 || seconds >= 0) {
lcd.setCursor(5, 3);
(hours < 10) ? lcd.print("0") : NULL;
lcd.print(hours);
lcd.print(":");
(minutes < 10) ? lcd.print("0") : NULL;
lcd.print(minutes);
lcd.print(":");
(seconds < 10) ? lcd.print("0") : NULL;
lcd.print(seconds);
lcd.display();
stepDown();
delay(1000);
}
}
void stepDown() {
if (seconds > 0) {
seconds -= 1;
} else {
if (minutes > 0) {
seconds = 59;
minutes -= 1;
} else {
if (hours > 0) {
seconds = 59;
minutes = 59;
hours -= 1;
} else {
trigger();
}
}
}
}
void trigger() {
lcd.clear(); // clears the screen and buffer
lcd.setCursor(5, 1); // set timer position on lcd for end.
lcd.print("END");
delay(1000);
lcd.display();
}
Vielen Dank schonmal fĂĽr eure Hilfe.
Simon