Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

horloge maîtresse

Composants et fournitures

Arduino UNO
× 1
Affichage Freetronics DMD
× 1
Module RTC
× 1
Bouton poussoir momentané
× 1
Interrupteur marche/arrêt
× 1

Applications et services en ligne

Arduino IDE

À propos de ce projet

À propos

Il s'agit d'un projet pour tous ceux qui veulent une belle grosse horloge visible à 12 mètres ou de près. Vous pouvez le faire aussi grand que vous le souhaitez. Il intègre également un réveil intégré qui peut être utilisé comme gestionnaire d'événements, par exemple pour un système d'arrosage automatisé pour un jardin ou pour vous rappeler cette réunion hebdomadaire à laquelle vous êtes censé aller, ou toute autre chose que vous pouvez connecter à un relais .

Vous aurez besoin de :

● Affichage DMD Freetronics

● Module d'horloge en temps réel pour Arduino 

● Buzzer (facultatif :quelque chose d'assez fort pour vous réveiller le matin)

● Bouton-poussoir momentanément activé

● 2x boutons marche-arrêt (Power one est en option)

● Carte compatible Arduino UNO ou Arduino

● Proto-shield pour Arduino (facultatif)

● Alimentation pour Arduino

● Une alimentation régulée 5VDC capable de 4 à 30 ampères (en option pour une luminosité élevée - pas nécessaire pour un fonctionnement normal)

Construction :

Partie 1 – Électronique :

Étape 1 : Connectez le buzzer, le bouton de silence et le commutateur de réglage de l'alarme à la planche à pain

Étape 2 :câblez l'une des broches de chaque commutateur à la terre et la broche GND des buzzers à la broche GND de l'Arduino (comme indiqué sur le schéma)

Étape 3 :câblez l'autre broche du commutateur de réglage d'alarme à D2, la broche de silence à D3 et le buzzer à D4

Étape 4:Connectez votre module RTC à l'Arduino en fonction de son type (lisez les données de fabrication - suivez le schéma dans la plupart des cas)

Étape 5 :connectez le DMDCON à Arduino et branchez le DMD

Étape 6 :Pour une luminosité totale du DMD, connectez une source 5 V aux bornes haute luminosité

Étape 7 :Si vous souhaitez le faire sur un blindage proto, soudez toutes les pièces au blindage et connectez-les de manière appropriée

Partie 2 - Logiciel :

Vous devez d'abord installer la bibliothèque DMD disponible ici et l'installer dans votre dossier bibliothèques.

Le logiciel peut être téléchargé depuis Prototyping Corner ou en bas de cette page. Celui-ci contient les opérations de base de l'horloge maître.

Pour régler l'heure sur le module RTC, recherchez les lignes 117 à 124 et ajustez-les à l'heure actuelle. Décommentez maintenant la ligne 124 et téléchargez-la sur l'Arduino. Maintenant, commentez à nouveau la ligne 124 et téléchargez à nouveau. Si cela n'est pas fait, le RTC restera le même temps.

Sur les lignes 593 et ​​594, vous définissez l'heure et les jours auxquels vous souhaitez que l'alarme se déclenche. La ligne 593 est le jour de la semaine où vous souhaitez que cela se produise. Les jours correspondent aux nombres suivants :

1 =dimanche

2 =lundi

3 =mardi

4 =mercredi

5 =jeudi

6 =vendredi

7 =samedi

Ensuite, sur la ligne 594, réglez l'heure à laquelle l'alarme se déclenche en 24 heures.

Aller plus loin :

Ajout d'affichages supplémentaires :

Vous pouvez ajouter plus d'écrans DMD pour augmenter la taille de l'horloge. Lisez ceci pour plus d'informations.

Ajout d'autres alarmes :

Pour ajouter plus d'alarme, ajoutez les lignes de code suivantes au croquis et appelez le vide dans la boucle principale :

void CheckAlarm-ALARM-NO-() {

AlarmSet =digitalRead(AlarmSetPin);

Répéter =digitalRead(SnoozePin);

octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ;

getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);

/* Déclencher une alarme uniquement s'il s'agit d'un jour répertorié ci-dessous. Cela peut être modifié en remplaçant les numéros par l'un des éléments suivants :

1 =dimanche

2 =lundi

3 =mardi

4 =mercredi

5 =jeudi

6 =vendredi

7 =samedi

*/

if(dayOfWeek ==2 || dayOfWeek ==3 || dayOfWeek ==4 || dayOfWeek ==5 ||dayOfWeek ==6) { //Ce sont des jours AUTORISÉS à sonner l'alarme

if(hour ==18 &&minute ==05 ) { //Définir l'heure ici (sur 24 heures)

if(AlarmSet ==LOW) { //Si la broche d'alarme est activée

Répéter =digitalRead(SnoozePin);

while(Snooze ==HIGH)

{

Répéter =digitalRead(SnoozePin);

//Ajouter ce qui se passe ici

}

}

}

}

Code

  • Code pour l'horloge maîtresse
Code pour Master ClockC/C++
/* Esquisse de l'horloge principale. Créé le 26/03/14 Il s'agit d'un programme arduino utilisant le DMD Freetronics comme sortie pour l'affichage. Il contient une fonction d'alarme. Le jour, la date et l'heure sont imprimés sur le DMD. Le bouton de fonction d'alarme est sur les broches 2 pour le réglage de l'alarme, 3 pour la répétition et 4 pour l'alarme de sortie. L'heure de l'alarme et les jours de la semaine peuvent être réglés sur les lignes 551 et 552. Jed Hodson 2014 */byte dayOfWeek=4;byte dayOfMonth=1;#include  //SPI.h doit être inclus lorsque DMD est écrit par SPI (l'IDE se plaint du contraire)#include  //#include  //#include "SystemFont5x7.h"#include "Wire.h"#define DS1307_I2C_ADDRESS 0x68int AlarmSetPin =2;int SnoozePin =3;int Alarm =4;int AlarmSet =0;int Snooze =0;// Convertit les nombres décimaux normaux en octets décimaux codés binaire decToBcd(byte val){ return ( (val/10*16) + (val%10) );}// Convertir les nombres décimaux codés binaires en nombres décimaux normauxbyte bcdToDec(byte val){ return ( (val/16*10) + (val%16) );}// 1) Définit la date et l'heure sur le ds1307// 2) Démarre l'horloge // 3) Définit le mode heure sur 24 heures // Suppose que vous transmettez des nombres valides void setDateDs1307 (octet seconde, // 0-59 octets minute, // 0-59 octets heure, // 1-23 octets dayOfWeek, // 1-7byte dayOfMonth, // 1-28/29/30/31byte mois, // 1-12byte year) // 0-99{ Wire.beginTransmission(DS1307_I2C_AD ROBE); Wire.write(0); Wire.write(decToBcd(second)); // 0 au bit 7 démarre l'horloge Wire.write(decToBcd(minute)); Wire.write(decToBcd(hour)); Wire.write(decToBcd(dayOfWeek)); Wire.write(decToBcd(dayOfMonth)); Wire.write(decToBcd(mois)); Wire.write(decToBcd(year)); Wire.write(000100000); // envoie 0x10 (hex) 00010000 (binaire) au registre de contrôle - active l'onde carrée Wire.endTransmission();}// Obtient la date et l'heure du ds1307void getDateDs1307(byte *second,byte *minute,byte *hour, byte *dayOfWeek,byte *dayOfMonth,byte *month,byte *year){ // Réinitialise le pointeur de registre Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.write(0); Wire.endTransmission(); Wire.requestFrom(DS1307_I2C_ADDRESS, 7); // Certains d'entre eux ont besoin de masques car certains bits sont des bits de contrôle *second =bcdToDec(Wire.read() &0x7f); *minute =bcdToDec(Wire.read()); *heure =bcdToDec(Wire.read() &0x3f); // Besoin de changer cela si 12 heures am/pm *dayOfWeek =bcdToDec(Wire.read()); *dayOfMonth =bcdToDec(Wire.read()); *mois =bcdToDec(Wire.read()); *année =bcdToDec(Wire.read());}//Lancer la bibliothèque DMD en tant que dmdDMD dmd(1,1);void ScanDMD(){ dmd.scanDisplayBySPI();}void setup(){ octet seconde, minute , heure, jour de semaine, jour de mois, mois, année ; //initialiser l'interruption/l'utilisation du processeur de TimerOne utilisée pour analyser et actualiser l'affichage Timer1.initialize( 5000 ); //période en microsecondes pour appeler ScanDMD. Tout ce qui dépasse 5 000 (5 ms) et vous pouvez voir le scintillement. Timer1.attachInterrupt( ScanDMD ); //attache l'interruption Timer1 à ScanDMD qui va à dmd.scanDisplayBySPI() //efface/initialise les pixels DMD contenus dans la RAM dmd.clearScreen( true ); //true est normal (tous les pixels désactivés), false est négatif (tous les pixels activés) dmd.selectFont(System5x7) ; Fil.begin(); // Remplacez ces valeurs par celles sur lesquelles vous souhaitez régler votre horloge. // Vous ne souhaitez probablement régler votre horloge qu'une seule fois, puis supprimer // l'appel setDateDs1307. seconde =0 ; minute =35 ; heure =11 ; // utilise l'heure de 24 heures sinon les calculs jour/date seront désactivés dayOfWeek =1; jourDuMois =23 ; mois =3 ; année =14 ; // Décommentez l'appel setDateDs1307 ci-dessous pour définir l'heure aux intervalles ci-dessus. N'oubliez pas que si vous définissez l'heure // vous devez à nouveau décommenter la ligne ci-dessous, sinon le croquis ne restera qu'à l'heure définie. //setDateDs1307(seconde, minute, heure, jour de semaine, jour de mois, mois, année); pinMode (AlarmSetPin, INPUT_PULLUP); pinMode(SnoozePin, INPUT_PULLUP); pinMode(Alarme, SORTIE); digitalWrite(Alarm, LOW);}void drawDay()// affiche le jour de la semaine{ octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(dayOfWeek) { cas 1 :dmd.drawString( 1,0, "Sun,", 3, GRAPHICS_NORMAL ); Pause; cas 2:dmd.drawString( 1,0, "Mon,", 3, GRAPHICS_NORMAL ); Pause; cas 3 :dmd.drawString( 1,0, "Mar", 3, GRAPHICS_NORMAL ); Pause; case 4:dmd.drawString( 1,0, "Mer," 3, GRAPHICS_NORMAL ); Pause; case 5:dmd.drawString( 1,0, "Jeu,", 3, GRAPHICS_NORMAL ); Pause; cas 6 :dmd.drawString( 1,0, "Ven", 3, GRAPHICS_NORMAL ); Pause; cas 7 :dmd.drawString( 1,0, "Sat,", 3, GRAPHICS_NORMAL ); Pause; }}void drawDate()// affiche la date numérique{ octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(dayOfMonth) { cas 1 :dmd.drawString( 20,0, "01", 2, GRAPHICS_NORMAL ); Pause; cas 2:dmd.drawString( 20,0, "02", 2, GRAPHICS_NORMAL ); Pause; cas 3 :dmd.drawString( 20,0, "03", 2, GRAPHICS_NORMAL ); Pause; cas 4:dmd.drawString( 20,0, "04", 2, GRAPHICS_NORMAL ); Pause; cas 5:dmd.drawString( 20,0, "05", 2, GRAPHICS_NORMAL ); Pause; cas 6 :dmd.drawString( 20,0, "06", 2, GRAPHICS_NORMAL ); Pause; cas 7 :dmd.drawString( 20,0, "07", 2, GRAPHICS_NORMAL ); Pause; cas 8 :dmd.drawString( 20,0, "08", 2, GRAPHICS_NORMAL ); Pause; cas 9 :dmd.drawString( 20,0, "09", 2, GRAPHICS_NORMAL ); Pause; cas 10 :dmd.drawString( 20,0, "10", 2, GRAPHICS_NORMAL ); Pause; cas 11 :dmd.drawString( 20,0, "11", 2, GRAPHICS_NORMAL ); Pause; cas 12 :dmd.drawString( 20,0, "12", 2, GRAPHICS_NORMAL ); Pause; cas 13 :dmd.drawString( 20,0, "13", 2, GRAPHICS_NORMAL ); Pause; cas 14 :dmd.drawString( 20,0, "14", 2, GRAPHICS_NORMAL ); Pause; cas 15 :dmd.drawString( 20,0, "15", 2, GRAPHICS_NORMAL ); Pause; cas 16 :dmd.drawString( 20,0, "16", 2, GRAPHICS_NORMAL ); Pause; cas 17 :dmd.drawString( 20,0, "17", 2, GRAPHICS_NORMAL ); Pause; case 18 :dmd.drawString( 20,0, "18", 2, GRAPHICS_NORMAL ); Pause; cas 19 :dmd.drawString( 20,0, "19", 2, GRAPHICS_NORMAL ); Pause; cas 20 :dmd.drawString( 20,0, "20", 2, GRAPHICS_NORMAL ); Pause; cas 21 :dmd.drawString( 20,0, "21", 2, GRAPHICS_NORMAL ); Pause; case 22 :dmd.drawString( 20,0, "22", 2, GRAPHICS_NORMAL ); Pause; cas 23 :dmd.drawString( 20,0, "23", 2, GRAPHICS_NORMAL ); Pause; cas 24 :dmd.drawString( 20,0, "24", 2, GRAPHICS_NORMAL ); Pause; cas 25 :dmd.drawString( 20,0, "25", 2, GRAPHICS_NORMAL ); Pause; cas 26 :dmd.drawString( 20,0, "26", 2, GRAPHICS_NORMAL ); Pause; cas 27 :dmd.drawString( 20,0, "27", 2, GRAPHICS_NORMAL ); Pause; cas 28 :dmd.drawString( 20,0, "28", 2, GRAPHICS_NORMAL ); Pause; case 29 :dmd.drawString( 20,0, "29", 2, GRAPHICS_NORMAL ); Pause; case 30 :dmd.drawString( 20,0, "30", 2, GRAPHICS_NORMAL ); Pause; case 31 :dmd.drawString( 20,0, "31", 2, GRAPHICS_NORMAL ); Pause; }}void drawHour()// dessine l'aiguille des heures{ octet seconde, minute, heure, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); if (hour>12) // Supprimer cette commande if pendant 24 heures { hour=hour-12; // Ceci est une horloge de 12 heures } switch(hour) { case 1:dmd.drawString( 1,8, "01", 2, GRAPHICS_NORMAL ); Pause; cas 2 :dmd.drawString( 1,8, "02", 2, GRAPHICS_NORMAL ); Pause; cas 3 :dmd.drawString( 1,8, "03", 2, GRAPHICS_NORMAL ); Pause; cas 4:dmd.drawString( 1,8, "04", 2, GRAPHICS_NORMAL ); Pause; cas 5:dmd.drawString( 1,8, "05", 2, GRAPHICS_NORMAL ); Pause; cas 6 :dmd.drawString( 1,8, "06", 2, GRAPHICS_NORMAL ); Pause; cas 7 :dmd.drawString( 1,8, "07", 2, GRAPHICS_NORMAL ); Pause; cas 8 :dmd.drawString( 1,8, "08", 2, GRAPHICS_NORMAL ); Pause; cas 9 :dmd.drawString( 1,8, "09", 2, GRAPHICS_NORMAL ); Pause; cas 10 :dmd.drawString( 1,8, "10", 2, GRAPHICS_NORMAL ); Pause; cas 11 :dmd.drawString( 1,8, "11", 2, GRAPHICS_NORMAL ); Pause; cas 12 :dmd.drawString( 1,8, "12", 2, GRAPHICS_NORMAL ); Pause; cas 13 :dmd.drawString( 1,8, "13", 2, GRAPHICS_NORMAL ); Pause; cas 14 :dmd.drawString( 1,8, "14", 2, GRAPHICS_NORMAL ); Pause; cas 15 :dmd.drawString( 1,8, "15", 2, GRAPHICS_NORMAL ); Pause; cas 16 :dmd.drawString( 1,8, "16", 2, GRAPHICS_NORMAL ); Pause; cas 17 :dmd.drawString( 1,8, "17", 2, GRAPHICS_NORMAL ); Pause; cas 18 :dmd.drawString( 1,8, "18", 2, GRAPHICS_NORMAL ); Pause; cas 19 :dmd.drawString( 1,8, "19", 2, GRAPHICS_NORMAL ); Pause; cas 20 :dmd.drawString( 1,8, "20", 2, GRAPHICS_NORMAL ); Pause; cas 21 :dmd.drawString( 1,8, "21", 2, GRAPHICS_NORMAL ); Pause; cas 22 :dmd.drawString( 1,8, "22", 2, GRAPHICS_NORMAL ); Pause; cas 23 :dmd.drawString( 1,8, "23", 2, GRAPHICS_NORMAL ); Pause; cas 24 :dmd.drawString( 1,8, "24", 2, GRAPHICS_NORMAL ); Pause; }}void drawMinute(){ octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); switch(minute) { case 0:dmd.drawString( 20,8, "00", 2, GRAPHICS_NORMAL ); Pause; cas 1 :dmd.drawString( 20,8, "01", 2, GRAPHICS_NORMAL ); Pause; cas 2:dmd.drawString( 20,8, "02", 2, GRAPHICS_NORMAL ); Pause; cas 3 :dmd.drawString( 20,8, "03", 2, GRAPHICS_NORMAL ); Pause; cas 4:dmd.drawString( 20,8, "04", 2, GRAPHICS_NORMAL ); Pause; cas 5:dmd.drawString( 20,8, "05", 2, GRAPHICS_NORMAL ); Pause; cas 6 :dmd.drawString( 20,8, "06", 2, GRAPHICS_NORMAL ); Pause; cas 7 :dmd.drawString( 20,8, "07", 2, GRAPHICS_NORMAL ); Pause; cas 8 :dmd.drawString( 20,8, "08", 2, GRAPHICS_NORMAL ); Pause; cas 9 :dmd.drawString( 20,8, "09", 2, GRAPHICS_NORMAL ); Pause; cas 10 :dmd.drawString( 20,8, "10", 2, GRAPHICS_NORMAL ); Pause; cas 11 :dmd.drawString( 20,8, "11", 2, GRAPHICS_NORMAL ); Pause; cas 12 :dmd.drawString( 20,8, "12", 2, GRAPHICS_NORMAL ); Pause; cas 13 :dmd.drawString( 20,8, "13", 2, GRAPHICS_NORMAL ); Pause; cas 14 :dmd.drawString( 20,8, "14", 2, GRAPHICS_NORMAL ); Pause; cas 15 :dmd.drawString( 20,8, "15", 2, GRAPHICS_NORMAL ); Pause; cas 16 :dmd.drawString( 20,8, "16", 2, GRAPHICS_NORMAL ); Pause; cas 17 :dmd.drawString( 20,8, "17", 2, GRAPHICS_NORMAL ); Pause; cas 18 :dmd.drawString( 20,8, "18", 2, GRAPHICS_NORMAL ); Pause; cas 19 :dmd.drawString( 20,8, "19", 2, GRAPHICS_NORMAL ); Pause; cas 20 :dmd.drawString( 20,8, "20", 2, GRAPHICS_NORMAL ); Pause; cas 21 :dmd.drawString( 20,8, "21", 2, GRAPHICS_NORMAL ); Pause; cas 22 :dmd.drawString( 20,8, "22", 2, GRAPHICS_NORMAL ); Pause; cas 23 :dmd.drawString( 20,8, "23", 2, GRAPHICS_NORMAL ); Pause; cas 24 :dmd.drawString( 20,8, "24", 2, GRAPHICS_NORMAL ); Pause; cas 25 :dmd.drawString( 20,8, "25", 2, GRAPHICS_NORMAL ); Pause; cas 26 :dmd.drawString( 20,8, "26", 2, GRAPHICS_NORMAL ); Pause; cas 27 :dmd.drawString( 20,8, "27", 2, GRAPHICS_NORMAL ); Pause; cas 28 :dmd.drawString( 20,8, "28", 2, GRAPHICS_NORMAL ); Pause; case 29 :dmd.drawString( 20,8, "29", 2, GRAPHICS_NORMAL ); Pause; case 30 :dmd.drawString( 20,8, "30", 2, GRAPHICS_NORMAL ); Pause; case 31 :dmd.drawString( 20,8, "31", 2, GRAPHICS_NORMAL ); Pause; case 32 :dmd.drawString( 20,8, "32", 2, GRAPHICS_NORMAL ); Pause; case 33 :dmd.drawString( 20,8, "33", 2, GRAPHICS_NORMAL ); Pause; cas 34 :dmd.drawString( 20,8, "34", 2, GRAPHICS_NORMAL ); Pause; case 35 :dmd.drawString( 20,8, "35", 2, GRAPHICS_NORMAL ); Pause; case 36 :dmd.drawString( 20,8, "36", 2, GRAPHICS_NORMAL ); Pause; case 37 :dmd.drawString( 20,8, "37", 2, GRAPHICS_NORMAL ); Pause; case 38 :dmd.drawString( 20,8, "38", 2, GRAPHICS_NORMAL ); Pause; case 39 :dmd.drawString( 20,8, "39", 2, GRAPHICS_NORMAL ); Pause; case 40 :dmd.drawString( 20,8, "40", 2, GRAPHICS_NORMAL ); Pause; case 41 :dmd.drawString( 20,8, "41", 2, GRAPHICS_NORMAL ); Pause; case 42 :dmd.drawString( 20,8, "42", 2, GRAPHICS_NORMAL ); Pause; case 43 :dmd.drawString( 20,8, "43", 2, GRAPHICS_NORMAL ); Pause; case 44 :dmd.drawString( 20,8, "44", 2, GRAPHICS_NORMAL ); Pause; case 45 :dmd.drawString( 20,8, "45", 2, GRAPHICS_NORMAL ); Pause; case 46 :dmd.drawString( 20,8, "46", 2, GRAPHICS_NORMAL ); Pause; case 47 :dmd.drawString( 20,8, "47", 2, GRAPHICS_NORMAL ); Pause; case 48 :dmd.drawString( 20,8, "48", 2, GRAPHICS_NORMAL ); Pause; case 49 :dmd.drawString( 20,8, "49", 2, GRAPHICS_NORMAL ); Pause; case 50 :dmd.drawString( 20,8, "50", 2, GRAPHICS_NORMAL ); Pause; case 51 :dmd.drawString( 20,8, "51", 2, GRAPHICS_NORMAL ); Pause; case 52 :dmd.drawString( 20,8, "52", 2, GRAPHICS_NORMAL ); Pause; case 53 :dmd.drawString( 20,8, "53", 2, GRAPHICS_NORMAL ); Pause; case 54 :dmd.drawString( 20,8, "54", 2, GRAPHICS_NORMAL ); Pause; case 55 :dmd.drawString( 20,8, "55", 2, GRAPHICS_NORMAL ); Pause; case 56 :dmd.drawString( 20,8, "56", 2, GRAPHICS_NORMAL ); Pause; case 57 :dmd.drawString( 20,8, "57", 2, GRAPHICS_NORMAL ); Pause; case 58 :dmd.drawString( 20,8, "58", 2, GRAPHICS_NORMAL ); Pause; case 59 :dmd.drawString( 20,8, "59", 2, GRAPHICS_NORMAL ); Pause; }}void drawCol(){ dmd.drawString( 14,8, ":", 1, GRAPHICS_NORMAL );}void runClock(){ drawDay(); Date du tirage(); dessinerHeure(); dessinerCol(); drawMinute(); CheckAlarm();}void AlarmSequence() { drawDay(); Date du tirage(); dessinerHeure(); dessinerCol(); drawMinute(); digitalWrite (Alarme, HAUT); retard(1000); dmd.clearScreen( true ); digitalWrite (Alarme, FAIBLE); delay(1000);}void CheckAlarm() { AlarmSet =digitalRead(AlarmSetPin); Répéter =digitalRead(SnoozePin); octet seconde, minute, heure, dayOfWeek, dayOfMonth, mois, année ; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); /* Déclencher une alarme uniquement s'il s'agit d'un jour répertorié ci-dessous. Cela peut être modifié en changeant les nombres en l'un des suivants :1 =dimanche 2 =lundi 3 =mardi 4 =mercredi 5 =jeudi 6 =vendredi 7 =samedi */ if(dayOfWeek ==2 || dayOfWeek ==3 | | dayOfWeek ==4 || dayOfWeek ==5 ||dayOfWeek ==6) { //Ce sont les jours AUTORISÉS à sonner l'alarme if(hour ==18 &&minute ==05 ) { //Régler l'heure ici (dans 24 heures Time) if(AlarmSet ==LOW) { //Si la broche d'alarme est activée Snooze =digitalRead(SnoozePin); while(Snooze ==HIGH) { Snooze =digitalRead(SnoozePin); AlarmSequence(); } } } }}boucle vide(){ runClock(); }

Schémas


Processus de fabrication

  1. horloge à coucou
  2. horloge de vision Arduino pov
  3. horloge IV9 Numitron DIY la plus simple avec Arduino
  4. Horloge de mots simple (Arduino)
  5. Horloge Arduino avec heures de prière islamique
  6. Arduino Spybot
  7. FlickMote
  8. Téléviseur maison B-Gone
  9. Réveil simple avec DS1302 RTC