LED Dawn / Sonnenaufgang Wecker, Nachtlicht & Sicherheit Licht - Arduino kompatibel (6 / 22 schritt)

Schritt 6: Modul1 - Arduino/RTC - Test-Code


, Wenn wir mit unseren 328 und "1307 kommuniziert, können wir den beigefügten Code zu sehen.  Dies stellt die Zeit von seriellen Eingang in das serielle Fenster, das mit der Arduino IDE kam.

Bitte beachten Sie, dass der gesamte Code für dieses Projekt entstand in Arduino 0022.  Ich habe noch nicht 1.0.

Ich habe nicht in der Lage, beliebigen Code als .pde Dateien hochladen.  Ich weiß nicht warum.

Ich habe sie als .txt, die Sie in WordPad öffnen und kopieren/einfügen in die IDE neu benannt oder Sie können sie .pde umbenennen, wenn Sie sie heruntergeladen haben.

HOCHLADEN:

Dieser kleine Ardu "muss keine ausgefallene Auto-Reset-Schaltung.  Demzufolge müssen wir die Reset-Taste im richtigen Moment zu drücken.  Ich habe eine Reihe von Möglichkeiten für die Zeitmessung dies vorgeschlagen, aber dieses funktioniert gut für mich:

(1) - verbinden Sie die TX- und Rx-Pins Ihre USB-Konverter mit den Headern auf Pin 2 und 3 des Chips (D0 und D1).
(2) - macht dein Board (vom USB-wenn möglich - wenn nicht stellen Sie sicher, dass die Erde-Verbindungen verbunden sind, aber die + 5V nicht!).
(3) - stellen Sie sicher, wählen Sie "Duemilanove/Tiny mit 328" als Target-Board.
(4) - Klicken Sie auf den Upload-Button in der IDE.
(5) - während der Code kompiliert wird, sehen Sie die Statuszeile am unteren Rand der IDE-Fenster.
(6) - Sobald das kleine Fenster am unteren Rand der IDE erzählt Sie die Größe Ihrer kompilierten Skizze, Presse zurücksetzen.
(7) - Tx/Rx auf Ihrem USB-Konverter sollte blinken für eine Weile.

Wenn aus welchem Grund es erste Mal nicht funktioniert, wird es Zeit, nach ca. 30 Sekunden, und Sie es erneut versuchen kannst.  Es ist sehr selten, dass es zu mehr als zwei Versuche.

Der angehängte Code wird zunächst die Uhrzeit einstellen und dann die Anzeigezeit im Serial Monitor-Fenster der IDE.  In der "Setup"-Routine können Sie es senden ein "R" Zeichen für neu einstellen der Zeit, so dass Sie die Uhr jedes Mal neu einstellen können Sie Ihre 328 zurücksetzen.

Es wird dann fordern Sie schrittweise weniger bedeutende Aspekte der Datum und Uhrzeit und schließlich werden die neuen Einstellungen für Sie zu bestätigen.  Es ist nicht sehr anspruchsvoll, so denken Sie bitte daran:

Bei jeder numerische Eingabe es erfordert zwei Dezimalziffern, also für Tag 2 (Dienstag) geben Sie "02" in den serial Monitor.

Wenn Bestätigung etc. angefordert wird, trifft dies spezifisch, so dass um die Uhrzeit eingestellt, nur ein "Y" wird als letzte Antwort.

Sobald die Zeit festgelegt, oder Sie "Q" aus der Einstellung Routine ist, zeigt es die Zeit vom RTC auf den serial Monitor pro Sekunde.

Offensichtlich, sobald die RTC festgelegt ist die Batterie hält es ausgeführt, auch wenn Sie Ihre Ardu abschalten "so können Sie jetzt Ihre eigene Skizze ausgeführt und Peitsche nur wenige Funktionen aus dieser Skizze zu der Zeit, wenn Sie es brauchen.  Für die fertige Uhr wir werden stellen Sie die Uhrzeit direkt von der Ardu "aber wir brauchen einige Eingänge und eine Anzeige dafür! Zeit, um ein weiteres Modul zu gelangen...

****************
UGI Dawn-Licht Alarm Clock Skizze.
RTC-Test-Skizze

MIT-Lizenz

UGI Dez 2012
Für Arduino 022 läuft auf ATmega328 geschrieben.
erfordert Drahtbibliothek

Arduino-Pin Anschlüsse:
A4 - 1307 (I2C-Daten)
A5 - 1307 (I2C Clock)

Allgemeine Uhreinstellungen:

< Wire.h > - #include / / Autoteilen analogen pins A4 (SDA - Pin 27) & A5 (SCL-Pin 28) für 2-Draht-Daten.

const Byte DS1307_Address = 0x68;
Byte Sekunden = 45, Oldseconds = 0, Minuten = 52, Stunden = 23, Datum = 8, Monat = 12, Tag = 4, Jahr 11 = schützen = 0; der Standardwert ist nur irgendwo anfangen.
Byte NEWseconds = 45, NEWminutes = 52, NEWhours = 23, NEWdate = 8, NEWmonth = 12, Tageswechsel = 4, NEWyear = 11; Diese sind für die Einstellung.

void setup() {}
Serial.Begin(9600); Serial.println ("DS1307 RTC basierte Uhr - Ugi 2012");
Delay(2000); RTC zu geben, einige Zeit zu begleichen.
Wire.Begin(); Notwendigkeit einer RTC
RTCsetFromSerial(); Die Chance, von Seriennummer jeder Uhrzeit zurückgesetzt. Könnte ein Timeout ermöglichen.
}

void loop() {}
RTCread();
RTCprintTime(); Zeit zu seriell sendet.
Delay(1000);
} / / Ende Hauptschleife

Zeitvariablen Zeit vom RTC eingelesen.
void RTCread() {}
Byte-Daten [11] = {0,0,0,0,0,0,0,0,0,0,0};
Wire.beginTransmission(DS1307_Address);
Wire.Send(0); eingestellten Register zu Beginn
Wire.endTransmission();
Wire.requestFrom (DS1307_Address, (Byte) 10); RTC 7 Byte in Puffer anfordern.

für (Byte _loop = 0; _loop < 10; _loop ++) {}
Data[_loop]=(Wire.Receive());
}

Sekunden = (((Daten [0] & B01110000) >> 4) * 10) + (Daten [0] & B00001111);
Minuten = (((Daten [1] & B01110000) >> 4) * 10) + (Daten [1] & B00001111);
Stunden = (((Daten [2] & B00110000) >> 4) * 10) + (Daten [2] & B00001111);
Tag = (Daten [3] & B00000111);
Datum = (((Daten [4] & B00110000) >> 4) * 10) + (Daten [4] & B00001111);
Monat = (((Daten [5] & B00010000) >> 4) * 10) + (Daten [5] & B00001111);
Jahr = (((Daten [6] & B11110000) >> 4) * 10) + (Daten [6] & B00001111);
}

Aktuelle Uhrzeit an RTC zu schreiben
void RTCwrite() {/ / schreibt alle aktuellen Daten zur RTC - wenn Sie nur schreiben möchten einen Parameter dann nur die Uhr lesen zuerst!

Byte-Daten [7];
Daten [0] = (Sekunden % 10) + ((seconds/10) << 4);
Daten [1] = (Minuten % 10) + ((minutes/10) << 4);
Daten [2] = (Stunden 10 %) + ((hours/10) << 4);
Daten [3] = Tag;
Daten [4] = (Datum % 10) + ((date/10) << 4);
Daten [5] = (Monat 10 %) + ((month/10) << 4);
Daten [6] = (Jahr % 10) + ((year/10) << 4);

Wire.beginTransmission(DS1307_Address);

Wire.Send(0); eingestellten Register zu Beginn
für (Byte _loop = 0; _loop < 7; _loop ++) {}
Wire.Send(Data[_loop]);
}
Wire.endTransmission();
Oldseconds = Sekunden;
} / / Ende schreiben, RTC-Funktion

Drucken Sie aktuelle Uhrzeit auf seriell...
void RTCprintTime() {}
RTCread();

Serial.Print ("Zeit ="); Serial.Print (Stunden, DEC); Serial.Print(":"); Serial.Print (Minuten, DEC); Serial.Print(":"); Serial.println (Sekunden, DEC);
Serial.Print ("Datum ="); Serial.Print (Datum, DEC); Serial.Print("/"); Serial.Print (Monat, DEC); Serial.Print("/20"); Serial.Print (Jahr, DEC);

}

Byte (Byte _val, String _Str) RTCgetSerial {}

Serial.println("");
Serial.println ("***"+ _Str +"***");
Serial.Print ("Aktueller Wert ="); Serial.Print (_val, Dez.); Serial.println ("" + _Str);
Serial.println ("geben Sie neuen Wert (zwei Ziffern, z. B."01"):");

Serial.Flush();

Byte NEW_val =-1;
während (Serial.available() < 2) {}
Delay(50);}

NEW_val = ((Serial.read()-48)*10);
NEW_val = NEW_val + (Serial.read()-48);

Serial.Flush();
Serial.Print ("neuer Wert ="); Serial.Print (NEW_val, DEC); Serial.println ("" + _Str); Serial.println("");

Wenn (NEW_val > = 0) {return NEW_val;}
Else {return _val;}

}

Boolesche RTCconfirm() {}
Serial.println("");
Serial.println("currently:");
RTCprintTime();

Serial.Flush();

Serial.println("");
Serial.println ("ändern? (Y/N): ");
Serial.Print ("Zeit ="); Serial.Print (NEWhours, Dez.); Serial.Print(":"); Serial.Print (NEWminutes, Dez.); Serial.Print(":"); Serial.println (NEWseconds, Dez.);
Serial.Print ("Datum ="); Serial.Print (NEWdate, DEC); Serial.Print("/"); Serial.Print (NEWmonth, Dez.); Serial.Print("/20"); Serial.Print (NEWyear, DEC);
Char _conf =-1;
während (Serial.available() < 1) {}
Delay(50);}

_conf = Serial.read();

Serial.Flush();

Serial.Print ("bestätigen Ziffer ="); Serial.println(_conf);
If(_conf=='Y') {return True;}
Else {return false;}
}

Boolesche RTCsetFromSerial() {}

Erhalten Sie neue Zeiteinstellung von seriellen Anschluss
Serial.Flush(); vermeiden Sie zufällige Daten im Puffer.

Sehen Sie, ob wir aktualisieren möchten
Char _input = 'X';
während (_input! = 'R' & & _input! = 'Q') {}
während (Serial.available() < 1) {}

RTCprintTime(); Wir halten aktuelle Uhrzeit anzeigen und sehen, ob es muss aktualisiert werden.
Serial.println ("Enter"R"von seriellen Eingang neu eingestellt") oder Q beenden Routine einstellen;
Serial.println("");
Delay(1000);
}
_input = Serial.read();
Serial.Flush();
}

Wenn (_input! = ' R'){Serial.println(""); Serial.println ("*** beenden ***"); Serial.println("");  Geben Sie false;}
Serial.println("");
Serial.println ("*** Zurücksetzen RTC ***");
Serial.println("");

RTCprintTime();
NEWyear = RTCgetSerial (Jahr, "Jahre");
RTCprintTime();
Tageswechsel = RTCgetSerial (Tag, "Wochentag");
RTCprintTime();
NEWmonth = RTCgetSerial (Monat, "Monate");
RTCprintTime();
NEWdate = RTCgetSerial (Datum, "Tage des Monats");
RTCprintTime();
NEWhours = RTCgetSerial (Stunden, "Stunden");
RTCprintTime();
NEWminutes = RTCgetSerial (Minuten, "");
RTCprintTime();
NEWseconds = RTCgetSerial (Sekunden, "Sekunden");

Wenn (RTCconfirm()) {}
Sekunden = NEWseconds;
Minuten = NEWminutes;
Stunden = NEWhours;
Datum = NEWdate;
Monat = NEWmonth;
Tag = Tageswechsel;
Jahr = NEWyear;
RTCwrite();

Serial.println ("");
Serial.println ("*** RTC aktualisiert ***");
gibt true zurück;
}

Else {}
Serial.println ("*** Update abgebrochen ***");
}

return false;
}

In Verbindung stehende Artikel

LED-Sonnenaufgang Wecker mit anpassbaren Song Alarm

LED-Sonnenaufgang Wecker mit anpassbaren Song Alarm

Meine MotivationIn diesem Winter meine Freundin hatte eine Menge Ärger am Morgen aufwachen und schien von SAD (Seasonal Affective Disorder) leiden. Ich merke auch wie viel schwerer es ist, im Winter aufwachen, da die Sonne noch nicht gekommen ist. Sy
Arduino LED Strip Krippe/Bett Nachtlicht

Arduino LED Strip Krippe/Bett Nachtlicht

Dieses Projekt wurde erstellt, weil ich etwas, was ich an einem Wochenende, das wäre einfach machen könnte zu verstehen und mit Basteln, aber auch cool wenn fertig aussehen wollte. Ein Arduino + LED-Streifen war die perfekte Kombination, wie Sie beko
10W led Sicherheit Licht Hack

10W led Sicherheit Licht Hack

nun, ich denke, ich beginne mit den Worten, dass dies meine erste ist in der Lage, so sanft (, Lol. Ich schien immer ein Problem mit meinem Halogen Sicherheit Lichter ausbrennen. Ich wollte eine einfache, billige und dauerhafte Lösung. Unter der Leit
DIY-Infrarot-Annäherungssensor (Arduino kompatibel)

DIY-Infrarot-Annäherungssensor (Arduino kompatibel)

Ever blickte auf Sparkfun oder Adafruit für einige coole Roboterteile und sah diese teuren IR und Ultraschall Näherungsschalter? Ich habe, und ich wirklich wollte, aber sie sind so teuer ($30-$40 oder mehr) so entschied ich mich, dass ich mich mit de
Arduino kompatibel Badewanne Controller

Arduino kompatibel Badewanne Controller

Lets Start mit einer Warnung: dieses Projekt steuert Wasser. Strom und Wasser nicht wirklich mischen und es gibt eine reale Gefahr von elektrischen Schlägen und oder Tod, wenn man nicht aufpasst. Erstellen Sie dieses Projekt auf eigene Gefahr und ich
Schritt für Schritt Anleitung zum Micro Magier Robotersteuerung (Arduino kompatibel)

Schritt für Schritt Anleitung zum Micro Magier Robotersteuerung (Arduino kompatibel)

Micro-Zauberer aus DAGU ist ein low-cost Arduino kompatibel Controller entwickelt, vor allem für Anfänger, einen kleinen Roboter bauen. Der Vorstand hat eine Reihe von nützlichem Zubehör eingebaut, so dass in den meisten Fällen Schilde nicht erforder
Gewusst wie: Steckbrett Arduino kompatibel.

Gewusst wie: Steckbrett Arduino kompatibel.

Es ist kein Geheimnis, die um Oomlout HQ wir sind große Fans des Open source-Arduino-Mikrocontroller. Das vorgefertigte Duemilanove Board ist eine erstaunliche Prototyping Plattform, aber manchmal es macht Spaß, etwas für sich selbst zu machen. Was f
Machen Sie Ihre eigenen benutzerdefinierten Arduino kompatibel

Machen Sie Ihre eigenen benutzerdefinierten Arduino kompatibel

ich liebe Ardunio. Ich liebe die Dinge, die Menschen machen mit ihnen und ich liebe es, meine eigenen zu machen. Im August letzten Jahres veröffentlichte ich eine Instructable auf wie erstelle ich eigene Briefmarke Größe Arduino kompatibel. Diese Ins
Elektrische Fingerabdruck Schloss-Arduino kompatibel

Elektrische Fingerabdruck Schloss-Arduino kompatibel

Jedes Unternehmen haben verschiedene Depatments, verschiedene Jobs haben unterschiedliche Anforderungen. Vor kurzem unsere Finanzchefs hat einige Probleme.Ihre Akten in Papierform benötigen hohe Vertraulichkeit und Sicherheit, einige wichtige Informa
Schnelle und einfache Arduino kompatibel H-Brücke Schild

Schnelle und einfache Arduino kompatibel H-Brücke Schild

In diesem instructable kann ausführlich behandelt werden wie ich ging darum, einen schnellen und einfachen, Arduino kompatibel, H-Brücke Schild. Aber zunächst eine kurze Einführung in was me got motiviert um zu machen.Ein paar Jahre her, habe ich ang
Bauen Sie Ihre eigenen Arduino kompatibel-IoT-Entwicklungs-Board

Bauen Sie Ihre eigenen Arduino kompatibel-IoT-Entwicklungs-Board

In diesem ForceTronics instructable betrachten wir wie Ihre ganz eigenen Arduino kompatibel Internet der Dinge-Entwicklungsboard bauen. Das Board verfügt über den Atmega 328p mit dem Uno-Bootloader, Niedrigenergie Bluetoothmodul, und andere Funktione
Verwenden Sie RFduino zum Ausführen Arduino kompatibel Skizzen und kommunizieren Sie mit Ihrem iPhone mit Bluetooth 4.0 Low Energy.

Verwenden Sie RFduino zum Ausführen Arduino kompatibel Skizzen und kommunizieren Sie mit Ihrem iPhone mit Bluetooth 4.0 Low Energy.

Wireless-Münze-Größe Arduino kompatibel OpenSource-Mikro-Computer, die auf Ihrem iPhone mit Bluetooth 4.0 Low Energy sprichtDie RFduino ist ein Stand-alone-Board, wie der Arduino UNO. Darüber hinaus hat die RFduino eine starke ARM Cortex Prozessor un
MCU Voice Broadcast System basierend auf ICStation Mega mit Arduino kompatibel

MCU Voice Broadcast System basierend auf ICStation Mega mit Arduino kompatibel

ICStationTeam stellen Ihnen diese MCU Voice Broadcast System basierend auf ICStation Mega2560. Dieses System funktioniert unter DC5V Spannung. Es kann interne erworbenen Songs in den MCU ausgestrahlt. Darüber hinaus kann es die Funktion der Wiedergab
Arduino gesteuert-Sicherheits-Licht auch beängstigend Prop für Halloween

Arduino gesteuert-Sicherheits-Licht auch beängstigend Prop für Halloween

Wenn Sie sind in einem Dschungel verloren und wissen nicht, was zu tun, um Sie über ein Tier zu informieren und wie mache ich Sie Ihr Arduino-Kit, nahm dann ist dies ein Ultraschall Oject-Ditector, die Ihnen, über jedes Tier sagen in der Nähe von...S