Sleep Cycle Alarm Clock avec détecteur de mouvement (4 / 5 étapes)

Étape 4: Programmer l’horloge

Comment programmer chaque composant :

Horloge temps réel
Après avoir exécuté la SetTime initiale, il est très facile d’utiliser le DS1307. N’oubliez pas d’inclure le Time.h ainsi que les fichiers DS1307RTC.h et porter la mention « tmElements_t tm; ». Afin de pouvoir lire l’heure de l’horloge, créez un if déclaration en disant "if(RTC.read(tm))" pour vérifier si l’heure du CCF peut être lue. Dans ce cas exposé, vous pouvez obtenir toute potion du temps en écrivant ce qui suit :
TM. Heure
TM. Minute
TM. Journée
TM. Mois
TM. Année

Avertisseur sonore
Utilisez la fonction de tone() Arduino pour jouer les notes de diverses fréquences et durée sur mon buzzer piezo. Broche 9 sert une sortie pour le buzzer. La fonction de tonalité devrait être écrit comme suit :
ton (pin, fréquence, durée) ;
J’ai trouvé que la meilleure façon de jouer et de la chanson entière était de créer 3 tableaux qui dont les éléments individuels sont accessibles dans une boucle for. Un tableau a été pour les fréquences de chaque note, était pour la durée de chaque note, et la dernière était pour les pauses entre les notes. J’ai trouvé toutes ces informations pour la chanson thème de Super Mario depuis le poste de recréer sur ce forum :
http://Arduino.cc/forum/index.php/topic, 8409.0.html
Il ou elle utilise une bibliothèque séparée de tonalité dans son propre code, donc j’ai simplement copié les fréquences, les durées et les pauses dans mes propres tableaux. J’ai aussi ajouté 100 millisecondes à chaque pause et la durée, car la mélodie a été un peu rapide.

Affichage à cristaux liquides
Télécharger la bibliothèque de bouclier de LCD RVB de Adafruit trouvée au lien suivant :
https://github.com/Adafruit/Adafruit-RGB-LCD-Shield-Library
Dans votre code, incluent Adafruit_MCP23017.h et Adafruit_RGBLCDShield.h afin de manipuler l’écran LCD.

Comment le produit final devrait fonctionner :

L’affichage sur l’écran LCD doit se lire « Appuyer sur Select ». En appuyant sur la touche select passera l’horloge de mode de Set Alarm clock normal ou en mode horloge. Une fois en mode Set Alarm, appuyant sur la touche droite permettra vous permet de régler l’alarme activer ou désactiver (contrôlé par le bouton de gauche), régler l’heure de l’alarme (contrôlée par le bouton du haut) ou réglez les minutes de l’alarme (contrôlée par le bouton vers le bas). Pas de soucis si ce n’est pas tout à fait sensé encore. Chaque étape a des instructions sur quel bouton à presser le long du chemin.

Une fois que l’alarme est aller au large, vous pouvez le désactiver en appuyant simplement sur le bouton supplémentaire (attaché sur le devant de mon horloge).

Obtenir le code complet :

Ma boucle est assez compliqué, mais l’horloge fonctionne ! Si vous avez des suggestions sur la façon de simplifier le code, faites le moi savoir. Je l’ai trouvé plus difficiles à programmer que le bouton appuie comme des actions distinctes et d’obtenir l’horloge pour imprimer la date et l’heure afin qu’il mettrait à jour continuellement.
J’espère que vous serez capable de le comprendre dans le cas où vous voulez faire quelques réglages pour votre propre à l’horloge !

#include < DS1307RTC.h >
#include < Time.h >
#include < Wire.h >
#include < Adafruit_MCP23017.h >
#include < Adafruit_RGBLCDShield.h >

Code pour un cycle de sommeil-réveil
Utilise le détecteur de mouvement PIR, écran LCD, bouton piezo buzzer, horloge temps réel

Ces #defines le rendent facile définir la couleur du rétro-éclairage
#define rouge 0 x 1
#define jaune 0 x 3
#define vert 0 x 2
#define TEAL 0 x 6
#define bleu 0 x 4
#define VIOLET 0 x 5
#define blanc 0 x 7

Fréquences de sons joués dans la mélodie de l’alarme
la mélodie d’int [] = {660,660,510,660,770,380,510,380,320,440,480,450,
430,380,660,760,860,700,760,660,520,580,480,510,380,320,440,480,
450,430,380,660,760,860,700,760,660,520,580,480,500,760,720,680,
620,650,380,430,500,430,500,570,500,760,720} ;

durée des tons a joué dans la mélodie de l’alarme
la durée d’int [] = {200,200,200,200,200,200,200,200,200,200,180,200,
200,200,180,150,200,180,150,180,180,180,180,200,200,200,200,180,
200,200,200,180,150,200,180,150,180,180,180,180,200,200,200,200,
250,250,200,200,200,200,200,200,200,200,200} ;

délai entre les tons
int /Delay [] = {175,250,250,150,250,375,387,325,300,350,250,265,
175,250,200,200,175,250,175,275,250,175,175,275,375,300,350,250,265,
175,250,200,200,275,250,175,275,250,175,175,350,250,150,175,175,250,
250,175,175,250,175,150,210,250,150} ;

int switchPin = 5 ;
int pirPin = 6 ;
int buzzerPin = 9 ;

Sélectionne soit mode jeu ou horloge d’alarme
int modeSelect ;
entier de choisir quelle partie de l’alarme pour régler
int alarmSelect ;
Entier pour réglage de l’alarme sur on ou sur off
int alarmSetOnInt ;
Nombre entier à l’heure de réglage pour alarme
int alarmHourSet ;
Entier pour le réglage des minutes pour alarme
int alarmMinSet ;
Entier qui indique si la touche a été enfoncée
int buttonVal ;
Requête de suivi détecté entier
int motionDetected ;

Si l’alarme est activée
alarmOn booléen = false ;
Si oui ou non l’alam se passe actuellement au large
alarmGoingOff booléen = false ;
valeur booléenne qui est true, une fois passé l’heure de l’alarme
alarmCanGoOff booléen = false ;

tmElements_t tm ;
Lcd Adafruit_RGBLCDShield = Adafruit_RGBLCDShield() ;

void setup() {}

Wire.Begin() ;
Serial.Begin(9600) ;
LCD.Begin(16,2) ;

Set rétro-éclairage et message initial
lcd.setBacklight(VIOLET) ;
lcd.setCursor(1,1) ;
LCD.Print ("select de presse ») ;

pinMode (pirPin, entrée) ;
modeSelect = 0 ;
alarmSelect = 0 ;
alarmSetOnInt = 0 ;
alarmHourSet = -1 ;
alarmMinSet = -1 ;
motionDetected = 0 ;
alarmGoingOff = false ;

uint8_t i = 0 ;

}

void loop() {}
boutons d’uint8_t = lcd.readButtons() ;

buttonVal = digitalRead(switchPin) ;
if(buttonVal == High) {}
LCD.Clear() ;
alarmOn = false ;
alarmCanGoOff = false ;
alarmGoingOff = false ;
}

Si l’alarme n’est pas aller au large, imprimer la date normale et l’heure
{if(!alarmGoingOff)}
printDateTime() ;
}

Si l’alarme se passe au large et il n’est pas l’heure de l’alarme, continuer l’alarme
Si (alarmGoingOff & tm. Minute! = alarmMinSet) {}
LCD.Clear() ;
alarmOn =! alarmOn ;
alarmGoingOff =! alarmGoingOff ;
}

{if(Buttons)}
Si l’option touche, choisissez un mode
if(Buttons & BUTTON_SELECT) {}
if(modeSelect>1) {}
modeSelect = 0 ;
}
LCD.Clear() ;
modeSelect = modeSelect + 1 ;
alarmSelect = 0 ;
Delay(1000) ;
if(modeSelect == 1) {}
LCD.Clear() ;
lcd.setCursor(1,0) ;
LCD.Print ("alarme") ;
lcd.setCursor(1,1) ;
LCD.Print ("Appuyez sur droite") ;
Delay(1000) ;
}

}
Mode sélectionné, s’alarme ensemble, activez le paramètre de l’alarme
if(modeSelect == 1) {}
if(Buttons & BUTTON_RIGHT) {}
if(alarmSelect>2) {}
alarmSelect = 0 ;
}
alarmSelect = alarmSelect + 1 ;
Delay(1000) ;
Voir l’établissement si l’alarme est activée ou désactivée
if(alarmSelect == 1) {}
LCD.Clear() ;
{if(!alarmOn)}
lcd.setCursor(1,0) ;
LCD.Print ("Alarm off") ;
lcd.setCursor(1,1) ;
LCD.Print ("Appuyez sur gauche") ;
Delay(1000) ;
} else {if(alarmOn)
lcd.setCursor(1,0) ;
LCD.Print ("Alarm sur") ;
print2digits(alarmHourSet,10,0) ;
lcd.setCursor(12,0) ;
LCD.Print(":") ;
print2digits(alarmMinSet,13,0) ;
}
} else if(alarmSelect == 2) {}
LCD.Clear() ;
lcd.setCursor(1,0) ;
LCD.Print ("Set Hour") ;
lcd.setCursor(1,1) ;
LCD.Print (« press UP") ;
} else if(alarmSelect == 3) {}
LCD.Clear() ;
lcd.setCursor(1,0) ;
LCD.Print ("Set Minutes ») ;
lcd.setCursor(1,1) ;
LCD.Print ("appuyer") ;
}
}
}

Indiquez si l’alarme est activée ou désactivée
if(alarmSelect == 1) {}
if(Buttons & BUTTON_LEFT) {}
alarmOn =! alarmOn ;
LCD.Clear() ;
Delay(1000) ;
{if(alarmOn)}
LCD.Print ("Alarm sur") ;
} else {if(!alarmOn)
LCD.Print ("Alarm Off") ;
}
}
}

Heures fixes
if(alarmSelect == 2) {}
if(Buttons & BUTTON_UP) {}
LCD.Clear() ;
alarmHourSet = alarmHourSet + 1 ;
if(alarmHourSet>24) {}
alarmHourSet = 0 ;
}
Delay(500) ;
}
print2digits(alarmHourSet,14,0) ;
}

Régler les minutes
if(alarmSelect == 3) {}
if(Buttons & BUTTON_DOWN) {}
LCD.Clear() ;
alarmMinSet = alarmMinSet + 1 ;
if(alarmMinSet>59) {}
alarmMinSet = 0 ;
}
Delay(100) ;
}
print2digits(alarmMinSet,14,0) ;
}

}

Alarme peut partir une fois que l’heure de l’alarme est égal à l’heure actuelle
Si (alarmOn & alarmMinSet == tm. Minute & alarmHourSet == tm. Heure & modeSelect! = 1) {}
alarmCanGoOff = true ;
Serial.println ("alarme peut partir") ;
}

Si l’alarme peut s’éteignent et que l’horloge est en mode horloge, l’alarme sera
s’éteint après 3 consécutifs détections de mouvement
Si (alarmCanGoOff & modeSelect! = 1) {}
Serial.println(alarmCanGoOff) ;
int pirVal = digitalRead(pirPin) ;
if(pirVal == High) {}
motionDetected ++ ;
Serial.println ("mouvement détecté") ;
Delay(1000) ;
}
if(pirVal == Low) {}
motionDetected = 0 ;
}
{if(alarmCanGoOff)}
Si (motionDetected > 2 || tm. Heure == alarmHourSet + 1) {}
Alarm() ;
motionDetected = 0 ;
}
}

}

}

Méthode de s’alarmer. Modifie l’affichage et joue la mélodie
alarm() Sub {}
LCD.Clear() ;
lcd.setCursor(1,0) ;
LCD.Print ("WAKE UPPPP!!!") ;
alarmGoingOff = true ;
pour (int i = 0; i < 54; i ++) {}
buttonVal = digitalRead(switchPin) ;
{if(buttonVal!=High)}
Delay(delayTime[i]) ;
ton (buzzerPin, melody[i],duration[i]) ;
}
}

}

imprimer la date et l’heure
void printDateTime() {}
if(RTC.Read(TM) & modeSelect == 2) {}
print2digits(TM. Heure, 1, 0) ;
lcd.setCursor(3,0) ;
LCD.Print(":") ;
print2digits(TM. Minute, 4, 0) ;
lcd.setCursor(6,0) ;
LCD.Print(":") ;
print2digits(TM. Seconde, 7, 0) ;
print2digits(TM. Mois, 1, 1) ;
lcd.setCursor(3,1) ;
LCD.Print("/") ;
print2digits(TM. Jour, 4, 1) ;
Serial.println (tm. Journée) ;
}
}

Imprimer des numéros dans un endroit à l’aide de deux chiffres (pour le format de l’horloge appropriée)
void print2digits (int, int colonne, int row) {}
Si (nombre > = 0 & & nombre < 10) {}
lcd.setCursor(column,row) ;
LCD.Print('0') ;
lcd.setCursor(column+1,row) ;
LCD.Print(Number) ;
}
else if (nombre > = 10) {}
lcd.setCursor(column,row) ;
LCD.Print(Number) ;
}
}

Articles Liés

Buglar alarme avec détecteur de mouvement PIR

Buglar alarme avec détecteur de mouvement PIR

Dans ce INSTRUCTABLE,Nous allons faire un simple BUGLAR alarme avec détecteur de mouvement PIR & ARDUINON'oubliez pas de ce vote pour le concours de capteur ! : D(Vous pouvez voir un bouton de Vote à la médaille IN the TOP)Pour visiter des projets de
Système d’éclairage avec détecteur de mouvement PIR et Arduino DIY chambre Smart

Système d’éclairage avec détecteur de mouvement PIR et Arduino DIY chambre Smart

Bonjour amis, sujet d'aujourd'hui est système intelligent Light Room et comment les détecteur de mouvement PIR détecte le mouvement et le travail en conséquence. Je vais vous parler du projet dans lequel vous apprendrez comment vous pouvez auto allum
Pirater votre bande de LED avec détecteur de mouvement et Timer

Pirater votre bande de LED avec détecteur de mouvement et Timer

Je trouve que la mesure d'une bonne Instructable est les idées qu'elle suscite, c'est pourquoi j'ai aimé Instructable de Liam.great98 intitulé « Donnez votre Underglow lit! » Je n'aurais jamais pensé d'ajouter une bande LED vers le bas d'un autre lit
Projet d’éclairage de Led Safe pistolet : bicolore avec détecteur de mouvement

Projet d’éclairage de Led Safe pistolet : bicolore avec détecteur de mouvement

il y a beaucoup de grands guides éclairage LED ici sur Instructables je ne perdre du temps sur ce qu'ils recouvrent. J'ai référencera un peu au cours de cette instructable que je croyais bon comme The definitive guide d'accent LED d'éclairage.Il y a
Caméra espion trousseau 808 avec détecteur de mouvement PIR contrôlé par Arduino puce

Caméra espion trousseau 808 avec détecteur de mouvement PIR contrôlé par Arduino puce

ce projet décrit comment prendre automatiquement des photos avec une résolution de 1024 x 768 pixelsen utilisant une miniature modèle #3 808 trousseau spycam avec carte microSD de 8 Godéclenchée par un détecteur de mouvement PIRet articulé par puce A
Programme automatique démarreur avec détecteur de mouvement

Programme automatique démarreur avec détecteur de mouvement

Salut! Bienvenue sur mon instructable !J'ai décidé de faire une demande de capteur en fonction de distance / programme starter pour mon pc, car je suis trop paresseux pour démarrer un programme moi-même !Vous aurez besoin des éléments suivants :Matér
3D imprimés bracelet LED avec détecteur de mouvement

3D imprimés bracelet LED avec détecteur de mouvement

Ce projet a commencé quand j'ai imprimé Diagrid Bracelet par nervoussystem et eu l'idée d'y ajouter quelques LEDs. J'ai conçu le modèle using123D Design. Un bijou Adafruit (Attiny85) est contrôlant une bande Neopixel 144 LED/m et lire la valeur d'un
Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

Compléter une horloge numérique avec détecteur de présence (RTC - alarme - PIR - Point de rosée température - humidité -)

SalutJ'ai déjà fait quelques projets de pendules à lecture digitale avec Arduino, y compris les écrans LED et LCD, mais celui-ci est plus spécial car j'ai introduit une nouvelle fonctionnalité avec un capteur de mouvement (PIR).Voir la vidéoPrincipal
Détecteur de mouvement PIR alarme Arduino (avec checking→Packing→end)

Détecteur de mouvement PIR alarme Arduino (avec checking→Packing→end)

il s'agit d'un guide sur comment faire un détecteur de mouvement avec un arduino ! Profitez !Étape 1: Éléments nécessaires Microcontrôleur Arduino UnoMaquette, MiniCapteur PIR, SE-10Fils de raccordementBuzzer piezoLED, une taille ou un typePlywood(op
Détecteur de mouvement sans fil portable a déclenché l’alarme avec une sonnette sans fil et un capteur de mouvement de moignon

Détecteur de mouvement sans fil portable a déclenché l’alarme avec une sonnette sans fil et un capteur de mouvement de moignon

j'ai eu l'idée de combiner ces deux éléments pendant un certain temps maintenant, donc quand un magasin local a obtenu la sonnette sans fil pour environ 11, 50USD j'ai juste eu à l'acheter...Pièces et outils nécessaires :Station de soudageTournevisQu
À l’aide de téléphone intelligent comme alarme de détecteur de mouvement

À l’aide de téléphone intelligent comme alarme de détecteur de mouvement

Aujourd'hui, nous vivons dans un monde où les téléphones intelligents devenons de plus en plus moins chers, téléphone Android de base juste coûte environ 60 $ dans la région du monde où j'habite à. Quelle que soit la marque et le modèle du système d'
Détecteur de mouvement PIR avec Arduino : Exploité à plus faible puissance consommation Mode

Détecteur de mouvement PIR avec Arduino : Exploité à plus faible puissance consommation Mode

Cette vidéo montre rapide et facile consistant à réduire la consommation électrique de ATMEGA 328p basée Arduino planches d'environ 70-75 % à l'aide de capteurs PIR ou PID pour la détection de mouvement.Ce projet introduit la suite choses :1) détecte
Bluetooth sous contrôle alarme détecteur de mouvement

Bluetooth sous contrôle alarme détecteur de mouvement

Capteur PIR est relié à l'arduino. Quand un mouvement est détecté, une alarme sonore et clignotante LED commencera à agir. Les temps des détections de mouvement sont enregistrées et peuvent être consultés plus tard sur un petit écran LCD. Les données
IoT WiFi bricolage détecteur de mouvements avec notification par courrier électronique à l’aide de capteurs PIR et ESP8266

IoT WiFi bricolage détecteur de mouvements avec notification par courrier électronique à l’aide de capteurs PIR et ESP8266

Dans ce projet, j'utilise le module ESP8266 WiFi et détecteur de mouvement PIR sensor pour obtenir des alertes par courrier électronique si quelqu'un entre dans la pièce alors que je suis absent. J'utilise la plate-forme de Cloud GadgetKeeper aux not