LED Dawn / Sunrise Alarm Clock, nachtlampje & veiligheid Light - Arduino compatibele (6 / 22 stap)

Stap 6: Module1 - Arduino/RTC - Test Code


Om te zien als we met onze 328 ' en ' 1307 communiceren, kunnen we de bijgevoegde code gebruiken.  Dit stelt de tijd door seriële input in het seriële venster dat kwam met de Arduino IDE.

Wees u ervan bewust dat alle van de code voor dit project werd geschreven in Arduino 0022.  Ik heb niet geprobeerd 1.0 nog.

Ik heb niet geweest kundig voor elke code als .pde-bestanden uploaden.  Ik weet niet waarom.

Ik heb hen opnieuw genoemd als .txt die u kunt openen in WordPad en kopiëren/plakken in de IDE of u kunt deze namen wijzigen .pde wanneer u ze hebt gedownload.

UPLOADEN:

Deze kleine Ardu' hoeft niet een fancy auto-reset-circuit.  Dientengevolge moeten we druk op de reset-schakelaar op het juiste moment.  Ik heb een aantal manieren voorgesteld voor timing dit gezien, maar deze werkt goed voor mij:

1) - de Tx en Rx pinnen uit uw USB converter verbinden met de headers op pin 2 en 3 van de chip (D0 en D1).
2) - macht je board (van de USB-indien mogelijk - indien niet zorg ervoor dat de verbindingen van de aarde uitmaken maar de + 5V zijn niet!).
3) - merk zekere u uitgezocht "Duemilanove/Tiny met ' 328" als uw targetbord.
4) - Klik op de upload-knop in de IDE.
5) - terwijl de code wordt gecompileerd, Bekijk de statusregel onder aan het venster van de IDE.
6) - zodra het kleine venster op de bodem van de winde vertelt u de grootte van uw gecompileerde schets, druk op reset.
7) - de Tx/Rx lampjes op uw USB omvormer moeten flash voor een tijdje.

Als het niet eerste keer werkt voor welke reden dan ook, het zal time-out na ongeveer 30 seconden en u kunt het opnieuw proberen.  Het is zeer zeldzaam gaat om meer dan twee pogingen.

De bijgevoegde code zal in eerste instantie de tijd instellen en vervolgens de tijd weergeven in het venster Serial Monitor van de IDE.  In de 'setup' routine kunt u het een "R"-teken voor het opnieuw instellen van de tijd, zodat u kunt opnieuw het instellen van de klok elke keer dat u opnieuw uw '-328.

Het zal u dan vragen om geleidelijk minder belangrijke aspecten van de datum en tijd en tot slot weer de nieuwe instellingen voor u om te bevestigen.  Het is niet zeer geavanceerde, dus vergeet niet:

Bij elke numerieke invoer het vereist twee decimale cijfers, dus voor dag 2 (dinsdag) Voer "02" in de seriële monitor.

Wanneer bevestiging enz wordt aangevraagd, is dit geval specifieke, dus voor het instellen van de klok, alleen een "Y" als het definitieve antwoord doen zal.

Zodra de tijd set of u "Q" uit de routine van de instelling is zal vervolgens tonen de tijd van de RTC naar de seriële monitor elke seconde.

Natuurlijk, zodra de RTC ligt de batterij zal houden lopen zelfs wanneer u power-down uw ardu' dus kunt u nu uitvoeren van uw eigen schets en zweep slechts een paar functies van deze schets om de tijd wanneer je het nodig hebt.  Voor de afgewerkte klok zal stellen we de tijd direct uit de Ardu' maar we moeten sommige ingangen en een display voor dat! Tijd om verder te gaan naar een andere module...

****************
Ugi van Dawn-Light Alarm klok schets.
RTC Test schets

MIT licentie

Ugi Dec 2012
Geschreven voor Arduino-022 op ATmega328 uitgevoerd.
vereist draad bibliotheek

Arduino Pin aansluitingen:
A4 - 1307 (I2C gegevens)
A5 - 1307 (I2C klok)

Algemene klokinstellingen:

#include < Wire.h > - / / usees analoge pinnen A4 (SDA - pin 27) & A5 (SCL-pin 28) voor de 2-draads gegevens.

Const byte DS1307_Address = 0x68;
byte seconden = 45, oldseconds = 0, minuten = 52, uren = 23, datum = 8, maand = 12, dag = 4 jaar = 11, beschermen = 0; standaardinstelling is gewoon ergens beginnen.
byte NEWseconds = 45, NEWminutes = 52, NEWhours = 23, implementatiedatum = 8, NEWmonth = 12, NEWday = 4, NEWyear = 11; Dit zijn voor de instelling.

VOID Setup {}
Serial.begin(9600); Serial.println ("DS1307 RTC gebaseerd klok - Ugi 2012");
delay(2000); RTC geven wat tijd om af te wikkelen.
Wire.begin(); Noodzaak voor RTC
RTCsetFromSerial(); Tijd instellen van seriële elke kans opnieuw instellen. Kan leiden tot een timeout.
}

void loop {}
RTCread();
RTCprintTime(); tijd aan serial stuurt.
delay(1000);
} / / Einde van de hoofdlus

Tijd van de RTC leest in tijdvariabelen.
VOID RTCread() {}
bytegegevens [11] = {0,0,0,0,0,0,0,0,0,0,0};
Wire.beginTransmission(DS1307_Address);
Wire.send(0); ingestelde register naar begin
Wire.endTransmission();
Wire.requestFrom (DS1307_Address, (byte) 10); 7 bytes voor aanvragen van RTC in buffer.

voor (byte _loop = 0; _loop < 10; _loop ++) {}
data[_loop]=(Wire.receive());
}

seconden = ((([0] gegevens & B01110000) >> 4) * 10) + (gegevens [0] & B00001111);
minuten = (((gegevens [1] & B01110000) >> 4) * 10) + (gegevens [1] & B00001111);
uren = (((gegevens [2] & B00110000) >> 4) * 10) + (gegevens [2] & B00001111);
dag = (gegevens [3] & B00000111);
datum = (((gegevens [4] & B00110000) >> 4) * 10) + (gegevens [4] & B00001111);
maand = (((gegevens [5] & B00010000) >> 4) * 10) + (gegevens [5] & B00001111);
jaar = (((gegevens [6] & B11110000) >> 4) * 10) + (gegevens [6] & B00001111);
}

Huidige tijd schrijven naar RTC
VOID RTCwrite() {/ / schrijft alle huidige gegevens naar RTC - als u alleen wilt schrijven één parameter dan enkel de klok eerst lezen!

bytegegevens [7];
gegevens [0] = (10 seconden %) + ((seconds/10) << 4);
gegevens [1] = (10 minuten %) + ((minutes/10) << 4);
gegevens [2] = (10 uur %) + ((hours/10) << 4);
gegevens [3] = dag;
gegevens [4] = (datum % 10) + ((date/10) << 4);
gegevens [5] (maand 10%) = + ((month/10) << 4);
gegevens [6] (jaar 10%) = + ((year/10) << 4);

Wire.beginTransmission(DS1307_Address);

Wire.send(0); ingestelde register naar begin
voor (byte _loop = 0; _loop < 7; _loop ++) {}
Wire.send(data[_loop]);
}
Wire.endTransmission();
oldseconds = seconden;
} / / RTC schrijven beëindigen

Huidige tijd naar seriële afdrukken...
VOID RTCprintTime() {}
RTCread();

Serial.Print ("Time ="); Serial.Print (uren, DEC); Serial.Print(":"); Serial.Print (minuten, DEC); Serial.Print(":"); Serial.println (seconden, DEC);
Serial.Print ("datum ="); Serial.Print (datum, DEC); Serial.Print("/"); Serial.Print (maand, DEC); Serial.Print("/20"); Serial.Print (jaar, DEC);

}

byte RTCgetSerial (byte _val, String _Str) {}

Serial.println("");
Serial.println ("***"+ _Str +"***");
Serial.Print ("huidige waarde ="); Serial.Print (_val, DEC); Serial.println ("" + _Str);
Serial.println ("Geef nieuwe waarde (bijvoorbeeld '01' met twee cijfers):");

Serial.Flush();

byte NEW_val = -1;
terwijl (Serial.available() < 2) {}
delay(50);}

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

Serial.Flush();
Serial.Print ("nieuwe waarde ="); Serial.Print (NEW_val, DEC); Serial.println ("" + _Str); Serial.println("");

Als (NEW_val > = 0) {return NEW_val;}
else {return _val;}

}

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

Serial.Flush();

Serial.println("");
Serial.println ("wijziging? (Y/N): ");
Serial.Print ("time ="); Serial.Print (NEWhours, DEC); Serial.Print(":"); Serial.Print (NEWminutes, DEC); Serial.Print(":"); Serial.println (NEWseconds, DEC);
Serial.Print ("datum ="); Serial.Print (implementatiedatum, DEC); Serial.Print("/"); Serial.Print (NEWmonth, DEC); Serial.Print("/20"); Serial.Print (Nieuwjaar, DEC);
char _conf = -1;
terwijl (Serial.available() < 1) {}
delay(50);}

_CONF = Serial.read();

Serial.Flush();

Serial.Print ("bevestigen cijfer ="); Serial.println(_CONF);
if(_CONF=='Y') {return true;}
else {return false;}
}

Booleaanse RTCsetFromSerial() {}

Krijgen nieuwe tijdinstelling van seriële poort
Serial.Flush(); Vermijd willekeurige gegevens in de buffer.

Zie als we willen bijwerken
char _input = 'X';
terwijl (_input! = 'R' & & _input! = 'Q') {}
terwijl (Serial.available() < 1) {}

RTCprintTime(); We houden van de huidige tijd weer te geven en zien of deze bijwerken moet.
Serial.println ("Enter 'R' door ingang voor seriële opnieuw instellen") of Q te stoppen met het instellen van de routine;
Serial.println("");
delay(1000);
}
_input = Serial.read();
Serial.Flush();
}

Als (_input! = ' R'){Serial.println(""); Serial.println ("*** stoppen ***"); Serial.println("");  return false;}
Serial.println("");
Serial.println ("*** resetten RTC ***");
Serial.println("");

RTCprintTime();
Nieuwjaar = RTCgetSerial (jaar, "jaar");
RTCprintTime();
NEWday = RTCgetSerial (dag, "dag van de week");
RTCprintTime();
NEWmonth = RTCgetSerial (maand, "maanden");
RTCprintTime();
Implementatiedatum = RTCgetSerial (datum, "dagen van de maand");
RTCprintTime();
NEWhours = RTCgetSerial (uren, "Uren");
RTCprintTime();
NEWminutes = RTCgetSerial (minuten, "");
RTCprintTime();
NEWseconds = RTCgetSerial (seconden, "Seconden");

Als (RTCconfirm()) {}
seconden = NEWseconds;
minuten = NEWminutes;
uren = NEWhours;
datum = implementatiedatum;
maand = NEWmonth;
dag = NEWday;
jaar = Nieuwjaar;
RTCwrite();

Serial.println ("");
Serial.println ("*** RTC bijgewerkt ***");
return true;
}

else {}
Serial.println ("*** Update geannuleerd ***");
}

return false;
}

Gerelateerde Artikelen

Blauwe LED dawn simulator voor Soleil zon Alarm

Blauwe LED dawn simulator voor Soleil zon Alarm

deze add-on aan een alarm Soleil zon laat de klok de helderheid van een bank van de LEDs bepalen. Een microcontroller past de macht van de LED's, zodat ze lijken te dim tegen hetzelfde tarief als elke gloeilamp verlichting u deze mogelijk gekoppeld a
Bacon Alarm Clock

Bacon Alarm Clock

BAKON zijn een wekker die je wakker tot de geur van bacon en het geluid van een piggy. BAKON begint uw spek bij het koken tijd en wekt u tot de heerlijke kamer geur van bacon en de piggy geluid te vullen.Als een student die dit is de perfecte manier
Sleep Cycle Alarm Clock met motiesensor

Sleep Cycle Alarm Clock met motiesensor

motivatie:Ik wilde een of andere manier verbeteren de standaard alarm clock, dus ik een dat u wakker zachtjes maakte door alleen wakker u wanneer u niet in uw diepe slaap. Een extra bonus is dat het speelt de Super Mario Theme Song als haar alarm.Hoe
Arduino All de dingen--S.M.A.R.T Alarm Clock-Setup voor vergaderingen, afspraken, herinneringen, en taken, deze klok maakt gebruik van een Arduino-Yún en uw Google agenda om automatisch alarm. en het ziet er ook Cool!

Arduino All de dingen--S.M.A.R.T Alarm Clock-Setup voor vergaderingen, afspraken, herinneringen, en taken, deze klok maakt gebruik van een Arduino-Yún en uw Google agenda om automatisch alarm. en het ziet er ook Cool!

S.M.A.R.T. wekkerSetup voor vergaderingen, afspraken, herinneringen en taken, deze klok automatisch instellen van alarmen maakt gebruik van een Arduino Yún en uw Google agenda. En het ziet er ook cool!Door Tony DiCola moeilijkheid: matigZou het niet
Geluid Alarm Clock Light Sensing

Geluid Alarm Clock Light Sensing

Allereerst wil ik zeggen dat dit een cool project voor elk willekeurig bereik van vaardigheidsniveau. Als u een beginner met Arduino bent en nerveus over complexiteit zijn moedig ik u dit een poging geven zoals ik om zo behulpzaam proberen zal mogeli
LED veiligheid Light

LED veiligheid Light

Oke de delen net aangekomen. Het punt van dit project is om een oude lichte beveiligingssysteem en maken het een eco vriendelijke LED veiligheid licht. Het oude systeem gebruikt een halogeen lamp met een lood-zuur batterij. Het nieuwe systeem gebruik
Waterdicht Smart Alarm Clock

Waterdicht Smart Alarm Clock

Ooit wakker worden met je wekker alleen voor het uitgeschakeld, terug vast, sluit je ogen voor een paar seconden... en eindigen waking opwaarts veel later dan u had gewild? Dit project beoogt op te lossen dat probleem door het bouwen van een slimme w
Bacon Alarm Clock - Arduino

Bacon Alarm Clock - Arduino

Dit is een project dat ik kwam met dat werd geïnspireerd door mijn liefde voor spek!Dit is een wekker die is ontworpen om je wakker met de geur van bacon. Met behulp van een arduino die de wekker zal al het spek aroma vult de kamer om wakker wilt u u
Arduino binaire Alarm Clock (pocket formaat)

Arduino binaire Alarm Clock (pocket formaat)

ooit wilde een binaire wekker? Ik ook van jou. Dus ik keek rond op Instructables, want er veel goeden rond zijn.Wat is nog beter: ze zijn gebaseerd op de Arduino, een van mijn favoriete speelgoed.Mijn favoriet is deze: Het inspireerde mij veel, en ja
Sunrise Alarm

Sunrise Alarm

Alarm is vervelend in de ochtend. Je slaperig, hoewel je opstaan. We vinden echter dat te worden blootgesteld aan het licht is een natuurlijke manier om wakker te worden. Stel je voor hoe comfortabel het is als u wekken opwaarts van nature met de eer
Fire Bell Alarm Clock

Fire Bell Alarm Clock

Er zijn vele manieren die u kunt uw eigen brand klok wekker die alles hangt af van wat voor soort wekker die u gaat gebruiken. Op de wekker koos ik er is een led LCD achtergrondverlichting en het wordt voor ongeveer 6 seconden, wanneer het alarm afga
DIY LED 12v DC Street Lights (zonne-compatibel)

DIY LED 12v DC Street Lights (zonne-compatibel)

Buiten de lichten zijn nette handige lampjes die een grote verscheidenheid van toepassingen hebben.Ze beschermen uw huizen tegen inbrekersZe voorkomen dat u storten over zwerven 's nachtsZij licht de weg zodat u veiliger rijdenof ze maken gewoon uw p
Alarm Clock gedeconstrueerd

Alarm Clock gedeconstrueerd

niet langer als uw oude digitale klok? het uit elkaar te halen naar de naakte essentie! nooit horen dat vervelend alarm opnieuw. nieuwe technologische futuristisch uitziende klok en nog steeds in staat om de tijd.
Alarm Clock wijziging

Alarm Clock wijziging

In dit instructable ga ik u tonen hoe te maken van een wekker met een beweegbare speaker. Ik deed dit zodat ik kan de klok op een plank echter de spreker dichtbij mijn hoofd hebben zodat het zal me wakker zonder anderen te storen.Ga naar de volgende