Stiga och glänsa! -LDR Arduino väckarklocka (5 / 7 steg)

Steg 5: Programvara: koden

/************************************************************************************************************
* Sunrise väckarklocka av Björn Shah MakeCourse våren 2016
*
* När LDR upptäcker soluppgången, kommer att det orsaka servo(hammer attached) att vända 50 grader
* och träffa en klocka, som en vakna upp larmet. Som en backup kommer att koden beräkna soluppgång tid för plats
* på klockan med hjälp av latitud och longitud, och aktivera larmet om det finns ingen soluppgång
* upptäckt. Detta projekt omfattar också en RTC modul som kommer att hålla tiden vid strömavbrott.
***********************************************************************************************************/
#include < Wire.h >
#include < Servo.h >
#include < TimeLib.h > //works i samband med DS1307RTC.h
#include < TimeLord.h > //contains sunrise beräkningar
#include < DS1307RTC.h > //RTC bibliotek
#include < LiquidCrystal_I2C.h > //library som ska användas med LCD med en YwRobot Arduino LCM1602 IIC V1 modul kopplad
#define DS1307_ADDRESS 0x68 //RTC adress
LiquidCrystal_I2C lcd(0x27,20,4); Ange adressen som LCD till 0x27 för en 16 tecken och 2 raders display
Servo myservo; Göra ett servo objekt
int pos = 50; Välja en servo position på 50 grader
int lightPin = A0; Anslut LDR till stift A0
int tröskel = 500. Du ställa in ljus tröskeln till ett värde
CONST int TIMEZONE = -5; Ställa in din tidszon; min är EST
CONST float latitud = 27.9506; Ställa in latitud och longitud; Mina är för Tampa, FL
CONST float longitud =-82.4572;
int vakna = 0; //
bool flagga = 1; Här har vi en boolesk flagga som kommer att förändra när vi utför våra wakeup åtgärder
int sunriseMin; minut av den dagar beräknade soluppgången som ska användas för jämförelse < /p >< p > void setup() {
void digitalClockDisplay(); digital klocka av tiden
void printDigits(); verktyget funktion för digital klocka: utskrifter före kolon och ledande 0
void sunriseCalc(); beräkna soluppgång
void actionAM(); funktion för att utföra vakna upp åtgärder
void checkPM(); för felsökning
void lowLight(); funktion för att Visa sensor värde om det är mindre än tröskelvärdet

Serial.BEGIN(9600); börja seriell kommunikation
pinMode (13, OUTPUT);
myservo.attach(9); servo bifogas pin 9
LCD.init(); initiera lcd
LCD.backlight(); slå på LCD-bakgrundsbelysning
setSyncProvider(RTC.get); funktion för att få tiden från RTC
IF(timeStatus()! = tidInställning) {
Serial.println ("kan inte synkronisera med RTC"); }
annat {
Serial.println ("RTC har angett systemtiden");
digitalClockDisplay(); }
sunriseCalc();
} < /p >< p > void loop() {
IF(Wake = 0) {
om (isAM()) {
Serial.println ("isAM sant");
vakna = 1; om det är morgon "vakna" ändras från 0 till 1
flagga = 0; Vi kommer också att ändra variabeln flagga till 0
Serial.println ("första om körs"); felsökning
Serial.Print ("flagga:"); för felsökning
Serial.println(Flag); för felsökning
}
}
om (vakna = 1 & & flagga == 0) {//Because wake är 1, och flaggan är 0, och vi kan börja ljus upptäckt
digitalClockDisplay(); konsekvent avläsning av den aktuella tiden
Flagga = 1; Vi kommer att ändra flaggan till 1 eftersom wakeup åtgärderna utförs
Serial.println(analogRead(lightPin)); avläsning av aktuella ljuset upptäcks
IF(analogRead(lightPin) > tröskel) {//if den upptäckt är större än vår tröskel:
actionAM(); utföra vakna upp åtgärder
Serial.println ("andra om körs"); felsökning
}
annat {
flagga = 0;
printDigits(minute()); felsökning
Serial.println();
Om inget ljus upptäcks utföra vakna upp åtgärder, kommer att vi kontrollera för att se om nuvarande tid inte klarat sunriseMin + 10
om (sunriseMin < minute()) {//if i nuvarande stund värdet är större än värdet sunrise minut
actionAM(); utföra vakna upp åtgärder
Flagga = 1;
Serial.println ("sunrise min är lägre än nuvarande min"); Felsöka för att låta oss veta att slingan har gått igenom detta uttalande
}
lowLight(); om det finns inget ljus, kommer att vi kontrollera
}
Delay(1000);
}
om (isPM()) {
checkPM();
}
}
/**************************************************** FUNCTIONS ****************************************************/
void sunriseCalc() {
TimeLord tardis;
TARDIS. Tidszon (-4 * 60); berätta TimeLord vilken tidszon ditt RTC synkroniseras till. Du kan ignorera DST
TARDIS. Position (latitud, longitud); Säg TimeLord var i världen vi är
byte i dag [] = {0, 0, 12, 6, 4, 2016}; lagra dag (kl) i en matris för TimeLord att använda
om (tardis. SunRise(today)) {/ / om att solen går upp idag (det kanske inte, i [ant] Arktis)
Serial.Print ("Sunrise:");
Serial.Print((int) today[tl_hour]);
Serial.Print(":");
Serial.Print((int) today[tl_minute]);
Serial.Print ("AM");
Serial.println();
sunriseMin = (int) idag [tl_minute] + 10. lagra värdet av soluppgången tiden + 10
Serial.Print ("sunriseMin:");
Serial.println(sunriseMin);
}
}
void digitalClockDisplay() {
digital klocka av tiden
Serial.Print(Hour());
printDigits(minute());
printDigits(second());
Serial.Print("");
Serial.Print(Day());
Serial.Print("/");
Serial.Print(Month());
Serial.Print("/");
Serial.Print(Year());
Serial.println();
Delay(200);
}
void printDigits (int siffror) {
verktyget funktion för digital klocka: utskrifter före kolon och ledande 0
Serial.Print(":");
IF(digits < 10)
Serial.Print('0');
Serial.Print(digits);
}
void actionAM() {
funktion som innehåller alla åtgärder som ska utföras när det är dags att gå upp!
digitalWrite 13, hög. tänds lysdioden ombord
Serial.println("High"); Vi skriver ut status för mängden blixtreflexer upptäckt
lcd.setCursor(3,0); ställa in markörens position
LCD.Print ("vaknar Bee"); skriva ut en vakna upp meddelande!
lcd.setCursor(2,1);
LCD.Print ("det är soluppgång!");
lcd.setCursor(0,2);
servo åtgärder
för (pos = 0; pos < = 50; pos + = 1) {/ / går från 0 grader till 50 grader i steg om 1 grad
myservo.write(POS);
Delay(5);
}
för (pos = 50; pos > = 0; pos-= 1) {/ / går från 50 grader till 0 grader
myservo.write(POS);
Delay(5);
}
för (pos = 0; pos < = 50; pos + = 1) {//0---> 50 upprepa
myservo.write(POS);
Delay(5);
}
för (pos = 50; pos > = 0; pos-= 1) {//50---> 0 upprepade
myservo.write(POS);
Delay(5);
}
}
void checkPM() {
funktion som returnerar ett uttalande på den seriella bildskärmen om det är PM; för felsökning
lcd.noDisplay(); stänga av displayen på LCD att spara ström
Serial.println("isPM() sant");
digitalClockDisplay();
Serial.println(analogRead(lightPin)); avläsning av aktuella ljuset upptäcks
Delay(1000);
}
void lowLight() {
om ljuset är mindre än tröskelvärdet, vi kommer att skriva ut det på serial monitorn att hålla reda på det
Serial.println(analogRead(lightPin)); avläsning av aktuella ljuset upptäcks
digitalWrite 13, låg.
Serial.println("Low");
myservo.write(0); returnera servo till 0 grader
}

Se Steg
Relaterade Ämnen

Enkel ljusstyrka indikator och alert med LDR, Arduino, Python.

Används LDR (Light beroende motstånd) för att ändra motståndet i kretsen som kan användas för att styra beteendet hos olika komponenter.I detta projekt använder jag LED och högtalare som utdata komponenterna som upptäcker ljusstyrkan i rummet och var...

Arduino väckarklocka Canvas--hur man

material behöver du:1. duk (valfri storlek)2. tyg (tillräckligt för att täcka duken)3. kardborre4. 8-10 LED-lampor5. ledande tråd6. tråd7. 1 Lilypad enkel fäst styrelsen (du kan välja att använda andra Lilypad brädor också)8. 1 Lilypad högtalare/Summ...

LDRs + Arduino = en enkel robot som kan känna av ljuset!

An LDR är en ljus beroende av motstånd och har många användningsområden, till exempel en photocel som kan förvandla ljus i ditt hus på när dess blir mörkt ute.Ett intressant sätt att förstå hur det fungerar är att läsa sina värderingar med en Arduino...

Hur gränssnittet fukt och temperaturgivare (DHT11) till Arduino och inklusive DHT11 bibliotek.

DTH11 omfattar både fukt och temperatur sensor.Maskinvarukomponenter krävs:-1) DTH11 Fukt och temperaturgivare2) Arduino UNO3) anslutande trådar4) DTH bibliotekDu kan få sensorn DTH11 datablad från den länken nedanhttp://www.micro4you.com/files/senso...

Ansiktsigenkänning och spårning med Arduino och OpenCV

uppdateringar20 feb 2013: Som svar på en fråga från student Hala Abuhasna om du vill använda klassen .NET seriell, använda namnkonventionen "\\\.\\COMn" och ersätt n med en nummer > 9 definiera com-porten för COM-portar över 9 som COM10, COM1...

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

PacMan och anpassade tecken på Arduino med en 16 x 2 LCD I2C YwRobot LCM1602 IIC V1

Hej alla, detta är min första instructables!Jag gjorde denna guide eftersom jag hade en massa problem att köra YwRobot LCD-I2C med Arduino på grund av problem i samband med programvara bibliotek.Efter mycket forskning och provning, i slutet, jag hitt...

Arduino väckarklocka med mänskliga upptäckt

Detta är en Arduino projekt baserat på en väckarklocka tha kan upptäcka om någon är på säng eller inte, detta är det möjligt genom en resistiv sensor placeras under de madrasser som kan upptäcka om någon är över madrasser eller inte genom skillnaden...

Bygga IllyClock - baserade Arduino väckarklocka i en kaffe kan

uppdaterad augusti 4, 2011En strömlinjeformad version är nu beskrivs här.Syftet med detta projekt är att bygga en väckarklocka som liknar den som presenteras i videon nedan.Bredvid inhägnad, den ursprungliga inslaget i IllyClock visar tiden i färger:...

Vakta hunden och Mailman Scenario med Arduino

Syftet med detta projekt är att programmera två robotar att samverka framgångsrikt med varandra, agerar ut en vakt hund-mailman scenario. Scenariot är att vakthund roboten skyddar dess hus (aka ljuskälla) från allt som kommer inom dess räckvidd. Om d...

Arduino väckarklocka

Arduino är en fantastisk maskin. Detta projekt är bara en av många. Du kan bygga din projektet enligt den instructable eller expandera till mer funktioner om du vill.Vi kommer att bygga en helt interaktiv arduino powered väckarklocka.Här är en video...

Byta Arduino väckarklocka

Denna väckarklocka fungerar med följande;Arduino UnoSkärbräda2 lysdioder1 Summerhoppare ledningarEn knapp, från en LED-ficklampaStrömkälla (jag använde min bärbara dator, men du kan också ansluta ett batteri)Denna väckarklocka tänds och släcks basera...

Skapa egna membran matris knappsatsen (och ansluter den till Arduino)

så du vill skapa din egen membran knappsatsen? Varför? bra att göra din egen knappsats kan vara bra av många skäl. Det är billigt och lätt att göra, den kan placeras i situationer där det kan vara vandaliserade eller stulen utan mycket frustration, h...

Högt och Awesome ljudeffekter på Arduino

Detta är en enkel 3 komponent enhet som förstärker ljudet Arduino kan producera ungefär med en faktor på 10!I princip är så det fungerar följande:En PIN-kod på Arduino oscillerande (slå på och av) vilket skapar ett ljud med en viss frekvens. Signalen...

Kontrollera allt och spara energi med Arduino

Jag använde detta för min egen mycket specifikt problem men det skulle kunna användas för någonting egentligen.Problemet:De flesta högtalare är inte smart, och så du måste stänga dem off manuellt, särskilt studio typ monitorhögtalare. På grund av det...

K.K. Bossa sång och Animation på en Arduino

Vad gör det?Spelar låten K.K. Bossa från Animal Crossing och en animation med en Arduino Uno, en piezo och en 16 X 2 LCD.Animeringen är baserade bort av Animal Crossing nytt blad.Upp video är med den manliga bybo och botten video är med den kvinnliga...

Hur man bygger en 8 x 8 x 8 LED cube och styra med en Arduino

det finns en hel del LED kuber på Instructables, så varför göra en annan? De flesta är för små kuber som består av 27 eller 64 lysdioder, sällan större eftersom de är begränsade till antalet utgångar på mikrokontroller. Denna kub blir 512 lysdioder,...

Tjurar och kor spel med arduino

Även känd som kor och tjurar eller svin och tjurar eller tjurar och Cleots) är en gammal kod tillkommen sinne eller papper och penna spel för flera spelare, föregick den liknande kommersiellt saluförda brädspel Mastermind.Det är ett spel med siffror...

Kodgenerator för anpassade Android/Arduino menyer att slå Arduino utgångar på och av. Android/Arduino för nybörjare. Absolut ingen programmering krävs

Uppdatering: användare frågade för undermeny support. pfodApp alltid stött sub-menyerna men jag har lagt undermenyer till pfodDesigner. Den instructable Design A Custom menysystemet visar hur du använder pfodDesigner för att bygga en meny med underme...