Hallo Community
Hab mich jetzt mal unter die Bastler begeben und mit dem Arduino UNO angefangen.
Bin jetzt seit Freitag fleißig dabei Arduino besser zu verstehen und ein Projekt umzusetzen.
Mein Projekt soll ein Wecker sein der Morgens zu einer eingestellten Zeit klingelt und auf dem Display eine Matheaufgabe anzeigt.
Erst wenn diese gelöst ist, gibt der Wecker ruhe.
Ein Clock Modul habe ich zwar, will aber zuerst versuchen eine Uhr mit millis() umzusetzen und die Uhrzeit will ich mit Taster stellen können.
So weit hat auch alles, wenn auch sehr chaotisch, geklappt.
Nun habe ich das Problem dass:
- Manchmal wird das Display nicht gelöscht wenn eine Minute um ist. Hab dann überbleibsel auf dem Display.
- Wenn ich jetzt die Variable "st" (Stunde) mit dem Taster um 1 erhöhen will,
Beispiel:
if (tasterstatus1 == HIGH)
{
st ++
}
spinnt das Display komplett.
- Was gibt es für Tipps um übersichtlicher zu coden.
Ich weiß selber dass das echt unschön aussieht aber einen Leitfaden o.ä. hab ich nicht gefunden :-/
Hier mal mein Sketch:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int stunden = 0;
int minuten = 0;
int mil = 0;
unsigned long sek = 0;
int set = 0;
int akt = 0;
int st = 0;
int tag = 0;
int taster1 = 8;
int taster2 = 9;
int taster3 = 10;
int tasterstatus1 = 0;
int tasterstatus2 = 0;
int tasterstatus3 = 0;
void setup()
{
Serial.begin (9600);
lcd.begin(16, 2);
pinMode (taster1, INPUT);
pinMode (taster2, INPUT);
pinMode (taster3, INPUT);
}
void loop()
{
lcd.setCursor(5, 0);
lcd.print("D");
lcd.setCursor(8, 0);
lcd.print("H");
lcd.setCursor(11, 0);
lcd.print("M");
lcd.setCursor(14, 0);
lcd.print("S");
lcd.setCursor(5, 1);
lcd.print(tag);
lcd.setCursor(7, 1);
lcd.print(":");
lcd.setCursor(8, 1);
lcd.print(st);
lcd.setCursor(10, 1);
lcd.print(":");
lcd.setCursor(11, 1);
lcd.print(minuten);
lcd.setCursor(13, 1);
lcd.print(":");
lcd.setCursor(14, 1);
lcd.print(sek);
lcd.setCursor(0, 1);
lcd.print(tasterstatus1);
mil = millis()/1000;
sek = mil - akt;
tasterstatus1=digitalRead(taster1);
tasterstatus2=digitalRead(taster2);
tasterstatus3=digitalRead(taster3);
if (tasterstatus1==0);
{
}
if (mil == 60)
{
akt = 60;
}
if (sek == 60)
{
akt = akt + 60;
}
if (sek > 59)
{
minuten++;
}
if (minuten > 59)
{
st++;
minuten = 0;
}
if (st > 23)
{
tag ++;
st = 0;
}
}