Rise and Shine ! -Arduino LDR réveil (5 / 7 étapes)

Etape 5: Logiciel : le Code

/ *** * Sunrise Alarm Clock par Ali Shah MakeCourse printemps 2016 ** lorsque LDR le détecte le lever du soleil, il provoquera les servo(hammer attached) faire 50 degrés * et frapper une cloche, comme un alarme de réveil. Comme une sauvegarde le code calcule la durée de l’aube pour l’emplacement * de l’horloge à l’aide de coordonnées de latitude et de longitude et activer l’alarme dans le cas où il n’y a aucun lever * détecté. Ce projet inclut également un module de CCF qui gardera le temps en cas de panne de courant. #include < Wire.h > < Servo.h > de #include #include < TimeLib.h > //works en collaboration avec #include < TimeLord.h > DS1307RTC.h //contains sunrise calculs #include < DS1307RTC.h > //RTC bibliothèque #include < LiquidCrystal_I2C.h > //library pour être utilisé avec écran LCD avec un module V1 YwRobot Arduino LCM1602 IIC joint #define DS1307_ADDRESS 0x68 //RTC addressLiquidCrystal_I2C lcd(0x27,20,4) ; La valeur 0 x 27 l’adresse LCD pour un 16 caractères et affichage de la ligne 2 Servo myservo ; Faire un servo objet int pos = 50 ; Définissant une position servo à 50 degrés int lightPin = A0 ; Connectez le LDR au seuil de broches A0 int = 500 ; Vous définissez le seuil de lumière sur un valeur const int fuseau horaire = -5 ; Définir votre fuseau horaire ; le mien est float const EST LATITUDE = 27.9506 ; Réglez votre latitude et longitude ; les miens sont pour Tampa, FL const float LONGITUDE =-82.4572 ; sillage int = 0 ; drapeau de bool = 1 ; Ici, nous avons un indicateur booléen qui va changer lorsque l'on réalise notre réveil actions int sunriseMin ; minute de ce lever de soleil jours calculé à utiliser pour la comparaison < /p >< p > void setup() {void digitalClockDisplay() ; //digital lheure de la printDigits() Sub temps ; //utility fonction d’affichage de l’horloge numérique : tirages précédents du côlon et menant à 0 Sub sunriseCalc() //calculate sunrise actionAM() Sub //function pour effectuer des actions checkPM() Sub se réveiller ; //for débogage Sub lowLight() ; //function pour afficher la valeur de la sonde si elle est inférieure au seuil de Serial.begin(9600) ; //begin serial communication pinMode (13 SORTIE) ; myservo.Attach(9) ; servo, attaché à la broche 9 lcd.init() ; initialiser le lcd.backlight() lcd ; allumer l’écran LCD rétro-éclairage setSyncProvider(RTC.get) ; fonction permettant d’obtenir le temps de la RTC if(timeStatus()
! = timeSet) {Serial.println ("Impossible de synchroniser avec le CCF");} else {Serial.println ("CCF a définir l’heure système"); digitalClockDisplay();} sunriseCalc() ; } < /p >< p > void loop() {if(wake = 0) {si (isAM()) {Serial.println ("isAM true"); suite = 1; //if it's morning 'réveiller' passera de 0 à 1 drapeau = 0; //we va aussi changer la variable drapeau à 0 Serial.println ("tout d’abord si is running"); //debugging Serial.print ("drapeau:") ; pour le débogage Serial.println(flag) ; pour le débogage}} si (wake = 1 & & drapeau == 0) {//Because wake est 1 et drapeau est 0, et nous pouvons commencer la lumière détection digitalClockDisplay() ; //consistent l’affichage de la l’actuel drapeau de temps = 1; //We va changer le drapeau à 1 parce que les actions de réveil en cours Serial.println(analogRead(lightPin)) ; //readout de la lumière actuelle étant détecté if(analogRead(lightPin) > seuil) {//if la lumière détectée est supérieure à notre seuil : actionAM() ; effectuer des actions Serial.println de réveil (« deuxième si is running") ; débogage} else {drapeau = 0; printDigits(minute()) ; //debugging Serial.println() ; //If aucune lumière n’est détectée pour effectuer des actions, de réveil nous allons vérifier pour voir si l’heure actuelle n’a pas passé sunriseMin + 10 si (sunriseMin < minute()) {//if la minute actuelle valeur est supérieure à la actionAM() de valeur des minutes de lever du soleil ; //perform réveiller drapeau actions = 1 ; Serial.println ("sunrise min est inférieur à l’actuel min") ; débogage de nous faire savoir que la boucle a traversé cette déclaration} lowLight() ; Si il n’y a aucune lumière, nous allons vérifier} delay(1000) ; } Si (isPM()) {checkPM();}} / *** FONCTIONS *** / void sunriseCalc() {TimeLord tardis ; tardis. Fuseau horaire (-4 * 60) ; dire TimeLord quel fuseau horaire votre RTC est synchronisé à. Vous pouvez ignorer la DST tardis. Position (LATITUDE, LONGITUDE) ; dire TimeLord où dans le monde, nous sommes aujourd'hui Byte = {0, 0, 12, 6, 4, 2016} ; stocker la date du jour (à midi) dans un tableau par TimeLord à utiliser si (tardis. SunRise(today)) {/ / si le soleil se lèvera aujourd'hui (il ne pourrait pas, dans l’Arctique [ant]) Serial.print ("lever du soleil:") ; Serial.Print((int) today[tl_hour]) ; Serial.Print(":") ; Serial.Print((int) today[tl_minute]) ; Serial.Print ("AM") ; Serial.println() ; sunriseMin = (int) aujourd'hui [tl_minute] + 10 ; stockage de la valeur de la durée de l’aube + 10 Serial.print ("sunriseMin:") ; Serial.println(sunriseMin) ; }} void digitalClockDisplay() {/ / numérique horloge affichage de l’heure 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 chiffres) {/ / utilitaire de fonction pour l’affichage de l’horloge numérique : imprime les deux points précédents et leader Serial.print(":") 0 ; if(digits < 10) Serial.print('0') ; Serial.Print(digits) ; } void actionAM() {//function qui contient toutes les actions à effectuer lorsqu’il est temps de se lever! digitalWrite (13, HIGH); //turns la LED embarquée sur Serial.println("High") //we imprimer l’état de la quantité de lumière lcd.setCursor(3,0) détecté ; //setting la lcd.print position de curseur ("Wake up Bee"); //printing un message de réveil! lcd.setCursor(2,1) ; lcd.print ("c’est Sunrise!"); lcd.setCursor(0,2) ; //servo actions (pos = 0; pos < = 50; pos += 1) {/ / va de 0 degrés à 50 degrés dans les étapes de 1 degré myservo.write(pos) ; Delay(5) ; {pour (pos = 50; pos > = 0; pos-= 1) {/ / va de 50 degrés à 0 degrés myservo.write(pos) ; delay(5);} pour (pos = 0; pos < = 50; pos += 1) {//0---> 50 répéter myservo.write(pos) ; delay(5);} pour (pos = 50; pos > = 0; pos-= 1) {//50---> 0 répéter myservo.write(pos) ; delay(5);}} void checkPM() {//function qui renvoie une instruction sur le moniteur de la série, s’il est PM; utilisé pour le débogage lcd.noDisplay() ; //turning désactiver l’affichage sur l’écran LCD pour économiser l’énergie Serial.println("isPM() True"); digitalClockDisplay() ; Serial.println(analogRead(lightPin)) ; lecture de la lumière actuelle étant détecté delay(1000) ; } void lowLight() {//if la lumière détectée est inférieure au seuil, nous imprimerons il sur le moniteur série pour garder la trace de celui-ci Serial.println(analogRead(lightPin)) ; //readout de la lumière actuelle étant détectée digitalWrite (13, faible) ; Serial.println("Low") ; myservo.Write(0) ; retour servo à 0 degrés}

Articles Liés

Truc effrayant à l’aide de app Arduino-LDR-BlueAct

Truc effrayant à l’aide de app Arduino-LDR-BlueAct

Avec un petit truc drôle commencent à plaisanter avec vos amis pendant la nuit s'ennuyer et faire beaucoup de tours à l'aide d'une chose que nous avons tous ce qui est des smartphones ou tablettes... ici j'ai trouvé un soft sur PlayStore qui peut aid
Suivi de mouvement Arduino LDR

Suivi de mouvement Arduino LDR

J'ai été à jouer avec l'idée de faire quelque chose avec suivi de mouvement. J'ai eu comme pour construire la tourelle de Nerf de suivi de mouvement un peu (ou similaire) alors j'ai pensé que je voudrais commencer par quelques notions de base, rien d
Arduino binaire réveil

Arduino binaire réveil

ce Instructable vous montrera comment construire un réveil binaire, avec un bouton de snooze capteur tactile. Il s'agit de mon premier instructable et mon premier projet arduino réelle, j'espère vous plaira !J'ai acheté un arduino tout à l'heure et j
Saisir à l’aide de l’alarme arduino + LDR + piezo buzzer

Saisir à l’aide de l’alarme arduino + LDR + piezo buzzer

Ce petit projet va vous apprendre, comment faire une ponction simple d'alarme à l'aide d'une LDR (légère résistance dépendante). Lorsque vous essayez de déplacer votre main sur le LDR, il y a une alarme stridente qui se passe, et l'alarme s'arrête dè
Arduino LDR tachymètre

Arduino LDR tachymètre

Peut-être vous avez une mini voiture de câble ou de toute autre chose que vous voulez connaître sa vitesse.Il y a plusieurs façons sur la vitesse de mesure How-to, mais aujourd'hui nous allons travailler avec mesure de la vitesse de base. Juste, je c
Contrôleur plug and Play Arduino température

Contrôleur plug and Play Arduino température

J'ai vu quelques projets de contrôleur température différente ici. Je voulais construire un, avec les contraintes suivantes :Appareil « idiot » contrôlé peut être branché directement dans l'appareil. Je ne voulais pas entailler dans l'appareil, mais
Interrupteur d’éclairage paresseux Arduino

Interrupteur d’éclairage paresseux Arduino

Salut! Bienvenue sur mon deuxième instructable ! Seconde ? Oui, en effet, deuxième. Cliquez ici pour voir mon premier.Cette fois, j'ai décidé d'automatiser mon interrupteur d'éclairage. Pourquoi ? Eh bien, je suis un informaticien, et je suis paresse
Arc-en-ciel de savons drapeau anarchiste

Arc-en-ciel de savons drapeau anarchiste

J'ai récemment eu l'occasion de faire du camping avec plus d'un millier de personnes qui se considèrent comme libertaires et anarchistes. Parfois le mot « anarchiste » est mal utilisé par les membres des médias d'information pour décrire des voyous v
Bretzels de citrouille douces avec le sucre cannelle !

Bretzels de citrouille douces avec le sucre cannelle !

Ma copine aime faire cuire, et j'aime aider (surtout avec la partie manger.) Ensemble, nous avons décidé de faire une instructable pour l'un de nos collations préférées de Halloween. Délicieux, chaud, cannelle et sucre citrouilles bretzels sont amusa
Baguettes maison (douleur D'epi)

Baguettes maison (douleur D'epi)

Y a-t-il quelque chose de mieux que du pain ? Je peux répondre à ça pour vous dès maintenant et dire qu'il n'existe pas. Tout d'abord, j'ai enseigné moi-même pour faire du pain de quatre ans, après j'ai trouvé un pan de la baguette dans la maison ! S
Auotmatic Street lights contrôle à l’aide de LDR et Arduino

Auotmatic Street lights contrôle à l’aide de LDR et Arduino

Commande automatique des phares rue est utilisée pour contrôler l'éclairage public (activer ou désactiver selon la lumière).Ici, nous faisons usage de LDR (légère résistance dépendant) et LED (Light Emitting diode) et arduino.Composants de matériel r
RÉGULATEUR de CHARGE solaire ARDUINO (Version 2.0)

RÉGULATEUR de CHARGE solaire ARDUINO (Version 2.0)

L'an dernier, j'ai commencé à construire mon propre système solaire pour alimenter ma maison de village. Au départ, j'ai fait un contrôleur de charge LM317 basé et un compteur d'énergie pour le système de surveillance. Enfin, j'ai fait régulateur de
Palm Arduino V3

Palm Arduino V3

j'ai concevoir et créer ce prototype de Palm Arduino V3 PCB, comme j'étais fatigué de recréer Arduino Compatible perf embarquer chaque fois j'ai prototypage un nouveau projet, surtout quand j'ai dû passer beaucoup de temps à retracer le câblage pour
Plus simple et la moins chère Arduino

Plus simple et la moins chère Arduino

utiliser un ATTiny85 (peut être ATTiny45, ATTiny44) pour faire un Arduino juste pour US3.00 et appelez-la comme Tiny Arduino.Arduino minuscule ont seulement huit broches tel qu'illustré dans la figure ci-dessus, Pin4 est la masse (Gnd), Pin8 est de 5