PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino Uhr?



pro-bot128
18.12.2010, 17:10
Hallo Leute,
ich habe ein Uhr-Skript für Arduino gebastelt.
Das soll auf einem Display stehen.
Leider hab ich noch kein Arduino und auch kein Display.
Deswegen wollte ich die Arduino-Freaks auf diesem Board fragen, ob sie wissen ob das funktioniert. Arduino IDE hat keinen Fehler entdeckt.
Vielleicht hat jemand von euch einen Arduino und auch ein Display.
Den bitte ich, einmal zu schauen ob die Uhr auf dem Display steht.
Gibt es in Arduino irgendein Makro was die aktuelle Zeit rausfindet, wie in AutoIt @hour, @min, @sec.

Vielen Dank!
Der Code:


#include <LiquidCrystal.h>
LiquidCrystal lcd(12,11,10,5,4,3,2);
int stunden = 12;
int minuten = 00;
int sekunden = 00;
int start = 1;

void setup()
{
lcd.begin(16,2);
lcd.clear();
}

void loop()
{
while (start==1)
{
if (sekunden == 00)
{
delay(1000);
sekunden+01;
}
if (sekunden == 61)
{
sekunden = 00;
minuten+01;
}
if (minuten == 61)
{
minuten = 00;
stunden+01;
}
if (stunden == 24)
{
stunden = 00;
}
lcd.setCursor(0,0);
lcd.print(stunden);
lcd.setCursor(3,0);
lcd.print(":");
lcd.setCursor(4,0);
lcd.print(minuten);
lcd.setCursor(6,0);
lcd.print(":");
lcd.setCursor(7,0);
lcd.print(sekunden);
}
}

Thomas$
18.12.2010, 17:32
delay seh ich da richtig nehm lieber einen timer das ist wesentlich genauer
weil jedes if jede ausgaben auf dem display kostet zeit und damit wird die uhr immer nachgehen
mit nem timer ist das egal der läuft im hintergrund und lässt sich davo nicht stören

pro-bot128
18.12.2010, 17:35
wie wäre dann der Befehl?
timer(1000) oder was

Thomas$
18.12.2010, 18:05
http://www.arduino.cc/playground/Code/Time
oder einfach gidf google ist dein freund zum arduino lässt sich da viel finden hier im forum eher etwas weniger

zum timer an sich gibt es auch genug aber denk ich grad vlt etwas zu kompliziert für den anfang

teste das programm sobald du einen arduino griffbereit hast

pro-bot128
19.12.2010, 09:38
Weiß Arduino denn die aktuelle Zeit, damut das LCD es anzeigen kann?

Thomas$
19.12.2010, 13:50
klar musst du ihm die uhrzeit erstmal sagen woher soll er wissen wie spät es ist

setTime(hr,min,sec,day,month,yr); // another way to set the time

wenn der arduino aus ist ist auch die uhrzeit wieder gelöscht und ,uss beim neueinschalten wieder neu gesetzt werden

die ganzen befehle stehen ja schon da aufgeslistet da die man braucht

ich würd erstmal die sache mit dem display weglassen und mir das datum und uhrzeit seriell senden lassen um fehler seitens der dieplay beschaltung und ausgabe auszuschliesen

pro-bot128
19.12.2010, 14:49
Kann ich dann nicht doch meinen Skript nehmen und statt delay(); irgendein Befehl nehmen, der das ersetzt? Gibt es so einen?

Thomas$
19.12.2010, 15:10
ganz oben #include <Time.h>
du musst die libary abeer runterladen und in den richtigen pfad speichern
#define TIME_MSG_LEN 11 // time sync to PC is HEADER followed by Unix time_t as ten ASCII digits
#define TIME_HEADER 'T' // Header tag for serial time sync message
#define TIME_REQUEST 7 // ASCII bell character requests a time sync message

setTime(hr,min,sec,day,month,yr); setzt die uhrzeit die grad ist

und dann im hauptprogramm
lcd.print(hour());
genauso minuten und sekunden und tage .....
delay mag vlt gehen aber die uhr wird halt zielkich ungenau

pro-bot128
19.12.2010, 16:47
So?


#include <LiquidCrystal.h>
#include <Time.h>
#define TIME_MSG_LEN 11
#define TIME_HEADER 'T'
#define TIME_REQUEST 7

setTime(hr,min,sec,day,month,yr);

void setup() {
initiallcd();
lcd.setCursor(0,0);
setSyncProvider(RTC.get);
if(timeStatus() != timeSet) {
lcd.print("Fehler!");
else
lcd.print("Syncronisiert!");
}
lcd.setCursor(0,1);
}

void loop() {
digitalClockDisplay();
}

void digitalClockDisplay() {
initiallcd();
lcd.print(hour());
lcd.setCursor(3,1);
lcd.print(":");
lcd.setCursor(4,1);
lcd.print(minute());
lcd.setCursor(5,1);
lcd.print(":");
lcd.setCursor(6,1);
lcd.print(second());
//Und für das Datum:
lcd.setCursor(8,1);
lcd.print(day());
lcd.setCursor(10,1);
lcd.print(month());
lcd.setCursor(12,1);
lcd.print(year());
}

void initiallcd() {
LiquidCrystal(12,11,10,5,4,3,2);
}