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 LED Arduino RTC

Composants et fournitures

Arduino UNO
× 1
Horloge en temps réel (RTC)
× 1
Résistance 1k ohm
× 15
Résistance à trou traversant, 120 ohm
× 15
Régulateur linéaire (7805)
× 1
Condensateur 22 pF
× 1
Cristal 16 MHz
× 1
Condensateur 10 µF
× 1
Pile bouton CR2032
× 1
Support de batterie, Lithium CR2032
× 1
LED 5 mm :Vert
× 190
Bipolaire - Transistor RF, NPN
× 10
Transistor à usage général PNP
× 12
Commutateur tactile, actionné par le haut
× 4
Alimentation Digilent 60W PCIe 12V 5A
× 1

Outils et machines nécessaires

Fer à souder (générique)
Fil à souder, sans plomb
Multimètre numérique Digilent Mastech MS8217 Autorange

À propos de ce projet

Vous devez d'abord télécharger les bibliothèques suivantes (le lien est donné à la fin de cette page) 1. Fil.h

2. RTClib.hListe des pièces

Regardez la vidéo

Ceci est le module d'horloge RTC

Voici le circuit Arduino

Connexions de câblage RTC

Commutateurs RTC

Identifier l'anode et la cathode

Schéma de circuit (ANODE COMMUN)

SI VOUS UTILISEZ UNE LED CATHODE COMMUNE, FAITES LES CHANGEMENTS COMME SUIT

ALIMENTATION

Code

  • CODE d'horloge LED
CODE d'horloge LEDArduino
Téléchargez ce code et téléchargez sur le projet
/* Affichage à 4 chiffres et 7 segments :http://www.sparkfun.com/products/9483 Fiche technique :http://www.sparkfun.com/datasheets/Components/LED/ 7-Segment/YSD-439AR6B-35.pdf */// connexion modifiée par niq_ro depuis http://nicuflorica.blogspot.com// dataseet :http://www.tme.eu/ro/Document/dfc2efde2e22005fd28615e298ea2655/KW4 -563XSA.pdf// Code modifié par BMIAK Basnayaka// http://www.setnfix.comint digit1 =11; int chiffre2 =10;int chiffre3 =9; int digit4 =6;int digit5 =5; int digit6 =3 ; //Mappage des broches d'Arduino vers l'ATmega DIP28 si vous en avez besoin//http://www.arduino.cc/en/Hacking/PinMappingint segA =0; //Afficher la broche 11int segB =1 ; //Afficher la broche 7int segC =2; //Afficher la broche 4int segD =4; //Afficher la broche 2int segE =7; //Afficher la broche 1int segF =8; //Afficher la broche 10int segG =12 ; //Afficher la broche 5int segDP =13 ; // Affichage de la broche 3#include #include "RTClib.h"RTC_DS1307 RTC ;// Fonctions de date et d'heure utilisant un DS1307 RTC connecté via I2C et Wire lib// sketck original de http://learn.adafruit .com/ds1307-real-time-clock-breakout-board-kit/// ajouter une partie avec SQW=1Hz à partir de http://tronixstuff.wordpress.com/2010/10/20/tutorial-arduino-and-the- i2c-bus /// ajouter une partie avec réglage manuel http://www.bristolwatch.com/arduino/arduino_ds1307.htmbyte SW0 =A0;byte SW1 =A2;byte SW2 =A1;byte SWT =A3;int Adhr=0; int Admnt=0;int D =0;int Z =0;// utiliser pour hexa dans la conversion zecimallong zh, uh, minerai;long zm, um, miniti;void setup() { //Serial.begin(57600); Fil.begin(); RTC.begin(); // RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));// si vous avez besoin de régler l'horloge... il suffit de supprimer // de la ligne au-dessus de ceci// le code de partie pour faire clignoter LEDWire.beginTransmission (0x68);Wire.write(0x07); // déplace le pointeur vers l'adresse SQW // Wire.write (0x00); // désactive la broche SQW Wire.write (0x10); // envoie 0x10 (hex) 00010000 (binaire) au registre de contrôle - active l'onde carrée à 1 Hz // Wire.write (0x13); // envoie 0x13 (hex) 00010011 (binaire) 32kHzWire.endTransmission(); pinMode(segA, SORTIE); pinMode(segB, SORTIE); pinMode(segC, SORTIE); pinMode(segD, SORTIE); pinMode(segE, SORTIE); pinMode(segF, SORTIE); pinMode(segG, SORTIE); pinMode(segDP, SORTIE); pinMode(chiffre1, SORTIE); pinMode(chiffre2, SORTIE); pinMode(chiffre3, SORTIE); pinMode(chiffre4, SORTIE); pinMode(chiffre5, SORTIE); pinMode(digit6, OUTPUT);//Serial.begin(9600);pinMode(SW0, INPUT); // NON. bouton poussoir switchpinMode (SW1, INPUT); // NON. bouton poussoir switchpinMode (SW2, INPUT); // NON. bouton poussoir switchpinMode (SWT, INPUT); // NON. interrupteur à bouton-poussoirdigitalWrite(SW0, HIGH); // tire sur digitalWrite(SW1, HIGH);digitalWrite(SW2, HIGH);digitalWrite(segDP, LOW);}void loop() { DateTime now =RTC.now(); longue HR =now.hour()*1000; timp long =(HR*10)+now.minute()*100+now.second(); Adhr =maintenant.heure(); Admnt=now.minute();int DIM =0;if (timp>
=250000)timp=timp-240000;//---------------------- ------------------//12/24 heures merde //--------- -----------------------------------------------------------si (timp <130000 ){digitalWrite(segDP, LOW);}if (digitalRead(SWT)==0){delay(300); if (D ==0) { D =1;delay(200);} else{D =0;}}if (D ==0){ if (timp>
=130000){timp=timp-120000;digitalWrite( segDP, HIGH);}}if (timp>
=130000){ digitalWrite(segDP, LOW);}if ((D==1)&(timp <130000))digitalWrite(segDP, LOW);//--- -------------------------------------------------- - //int timp =(now.minute(), DEC);// displayNumber(12); // c'est le nombre à afficher pour (int i =100; i>0; i--) { if (timp>
=100000) displayNumber01(timp); else displayNumber02(timp); } for(int i =100; i>0; i--) { if (timp>
=100000) displayNumber03(timp); else displayNumber04(timp); } for(int i =100; i>0; i--) { if (timp>
=100000) displayNumber05(timp); else displayNumber06(timp); } if (digitalRead(SW0)==0){delay(100);Z=1; régler le temps(); }// maintenez le commutateur pour définir l'heure} void set_time() { byte minutes1 =0; octet heures1 =0 ; minutes d'octet =0 ; octet heures =0 ; heures=Adhr; minutes=Admnt; si ((heures &0x0f)> 9) heures =heures + 6 ; si (heures> 0x24) heures =1 ; // Mid night 12.00 s'affichera comme 12:00 (avec la LED PM allumée) ou 24:00 //si (heures> 0x24) heures =1 ; // Mid night 12.00 affichera 0:00 si ((minutes &0x0f)> 9) minutes =minutes + 6; si (minutes> 0x59) minutes =0 ; while (!(Z==0)){ // l'interrupteur horaire réglé doit être relâché pour quitter int TST =digitalRead(SW2); while (TST==0) // set hours { hours++; // conversion de l'hexa en zecimal :zh =hours / 16; euh =heures - 16 * zh; minerai =10 * zh + euh; zm =minutes/16 ; um =minutes - 16 * zm; miniti =10 * zm + um; si ((heures &0x0f)> 9) heures =heures + 6 ; si (heures> 0x24) heures =1 ; // Mid night 12.00 s'affichera comme 12:00 (avec la LED PM allumée) ou 24:00 //si (heures> 0x24) heures =1 ; // Mid night 12.00 s'affichera comme 0:00 if (heures <=9) delay(1); for(int i =400; i>0; i--) { displayNumber01(ore*10000+miniti*100); } TST =lecture numérique(SW2) ; } while (!(digitalRead(SW1))) // set minutes { minutes++; // conversion de l'hexa en zecimal :zh =hours / 16; euh =heures - 16 * zh; minerai =10 * zh + euh; zm =minutes/16 ; um =minutes - 16 * zm; miniti =10 * zm + um; for(int i =400; i>0; i--) { displayNumber01(ore*10000+miniti*100); } si ((minutes &0x0f)> 9) minutes =minutes + 6; si (minutes> 0x59) minutes =0 ; si (minutes>=9) délai(1) ; } Wire.beginTransmission (0x68); // activer DS1307 Wire.write(0); // par où commencer Wire.write(0x00); //secondes Wire.write(minutes); //minutes Wire.write(0x80 | heures); //heures (24 heures) Wire.write(0x06); // Jour 01-07 Wire.write(0x01); // Date 0-31 Wire.write(0x05); // mois 0-12 Wire.write(0x09); // Année 00-99 Wire.write(0x10); // Control 0x10 produit une onde carrée de 1 HZ sur la broche 7. Wire.endTransmission(); // conversion de l'hexa en zecimal :zh =hours / 16; euh =heures - 16 * zh; minerai =10 * zh + euh; zm =minutes/16 ; um =minutes - 16 * zm; miniti =10 * zm + um; for(int i =400; i>0; i--) { displayNumber01(ore*10000+miniti*100); }retard (100); //Serial.print(digitalRead(SW0));if (digitalRead(SW0)==0) Z =0; retard (300); }//Serial.print(SW2);}void displayNumber01(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //Activer un chiffre pour un court laps de temps switch(chiffre) { cas 1 :digitalWrite(chiffre1, DIGIT_ON); Pause; cas 2:digitalWrite(digit2, DIGIT_ON); //digitalWrite(segDP, LOW); Pause; cas 3 :digitalWrite(digit3, DIGIT_ON); Pause; cas 4:digitalWrite(digit4, DIGIT_ON); Pause; cas 5:digitalWrite(digit5, DIGIT_ON); Pause; cas 6 :digitalWrite(digit6, DIGIT_ON); Pause; } lightNumber(àAfficher % 10); àAfficher /=10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Désactiver tous les segments lightNumber(10) ; //Désactiver tous les chiffres digitalWrite(digit1, DIGIT_OFF); digitalWrite(chiffre2, CHIFFRE_OFF); digitalWrite(chiffre3, CHIFFRE_OFF); digitalWrite(chiffre4, DIGIT_OFF); digitalWrite(chiffre5, CHIFFRE_OFF); digitalWrite(chiffre6, DIGIT_OFF);}} void displayNumber02(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //Activer un chiffre pour un court laps de temps switch(chiffre) { case 1 :lightNumber(10); Pause; cas 2:digitalWrite(digit2, DIGIT_ON); //digitalWrite(segDP, LOW); Pause; cas 3 :digitalWrite(digit3, DIGIT_ON); Pause; cas 4:digitalWrite(digit4, DIGIT_ON); Pause; cas 5:digitalWrite(digit5, DIGIT_ON); Pause; cas 6 :digitalWrite(digit6, DIGIT_ON); Pause; } lightNumber(àAfficher % 10); àAfficher /=10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Désactiver tous les segments lightNumber(10) ; //Désactiver tous les chiffres digitalWrite(digit1, DIGIT_OFF); digitalWrite(chiffre2, CHIFFRE_OFF); digitalWrite(chiffre3, CHIFFRE_OFF); digitalWrite(chiffre4, DIGIT_OFF); digitalWrite(chiffre5, CHIFFRE_OFF); digitalWrite(chiffre6, DIGIT_OFF);}} void displayNumber03(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //Activer un chiffre pour un court laps de temps switch(chiffre) { cas 1 :digitalWrite(chiffre1, DIGIT_ON); Pause; cas 2:digitalWrite(digit2, DIGIT_ON); Pause; cas 3 :digitalWrite(digit3, DIGIT_ON); Pause; cas 4:digitalWrite(digit4, DIGIT_ON); Pause; cas 5:digitalWrite(digit5, DIGIT_ON); Pause; cas 6 :digitalWrite(digit6, DIGIT_ON); Pause; } lightNumber(àAfficher % 10); àAfficher /=10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Désactiver tous les segments lightNumber(10) ; //Désactiver tous les chiffres digitalWrite(digit1, DIGIT_OFF); digitalWrite(chiffre2, CHIFFRE_OFF); digitalWrite(chiffre3, CHIFFRE_OFF); digitalWrite(chiffre4, DIGIT_OFF); digitalWrite(chiffre5, CHIFFRE_OFF); digitalWrite(chiffre6, DIGIT_OFF);}} void displayNumber04(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //Activer un chiffre pour un court laps de temps switch(chiffre) { case 1 :lightNumber(10); Pause; cas 2:digitalWrite(digit2, DIGIT_ON); Pause; cas 3 :digitalWrite(digit3, DIGIT_ON); Pause; cas 4:digitalWrite(digit4, DIGIT_ON); Pause; cas 5:digitalWrite(digit5, DIGIT_ON); Pause; cas 6 :digitalWrite(digit6, DIGIT_ON); Pause; } lightNumber(àAfficher % 10); àAfficher /=10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Désactiver tous les segments lightNumber(10) ; //Désactiver tous les chiffres digitalWrite(digit1, DIGIT_OFF); digitalWrite(chiffre2, CHIFFRE_OFF); digitalWrite(chiffre3, CHIFFRE_OFF); digitalWrite(chiffre4, DIGIT_OFF); digitalWrite(chiffre5, CHIFFRE_OFF); digitalWrite(chiffre6, DIGIT_OFF);}} void displayNumber05(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //Activer un chiffre pour un court laps de temps switch(chiffre) { cas 1 :digitalWrite(chiffre1, DIGIT_ON); Pause; cas 2:digitalWrite(digit2, DIGIT_ON); Pause; cas 3 :digitalWrite(digit3, DIGIT_ON); Pause; cas 4:digitalWrite(digit4, DIGIT_ON); Pause; cas 5:digitalWrite(digit5, DIGIT_ON); Pause; cas 6 :digitalWrite(digit6, DIGIT_ON); Pause; } lightNumber(àAfficher % 10); àAfficher /=10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Désactiver tous les segments lightNumber(10) ; //Désactiver tous les chiffres digitalWrite(digit1, DIGIT_OFF); digitalWrite(chiffre2, CHIFFRE_OFF); digitalWrite(chiffre3, CHIFFRE_OFF); digitalWrite(chiffre4, DIGIT_OFF); digitalWrite(chiffre5, CHIFFRE_OFF); digitalWrite(chiffre6, DIGIT_OFF);}} void displayNumber06(long toDisplay) {#define DISPLAY_BRIGHTNESS 25#define DIGIT_ON HIGH#define DIGIT_OFF LOW for(int digit =6; digit> 0; digit--) { //Activer un chiffre pour un court laps de temps switch(chiffre) { cas 1 ://digitalWrite(chiffre1, DIGIT_ON); Pause; cas 2:digitalWrite(digit2, DIGIT_ON); Pause; cas 3 :digitalWrite(digit3, DIGIT_ON); Pause; cas 4:digitalWrite(digit4, DIGIT_ON); Pause; cas 5:digitalWrite(digit5, DIGIT_ON); Pause; cas 6 :digitalWrite(digit6, DIGIT_ON); Pause; } lightNumber(àAfficher % 10); àAfficher /=10; delayMicroseconds(DISPLAY_BRIGHTNESS); //Désactiver tous les segments lightNumber(10) ; //Désactiver tous les chiffres digitalWrite(digit1, DIGIT_OFF); digitalWrite(chiffre2, CHIFFRE_OFF); digitalWrite(chiffre3, CHIFFRE_OFF); digitalWrite(chiffre4, DIGIT_OFF); digitalWrite(chiffre5, CHIFFRE_OFF); digitalWrite(digit6, DIGIT_OFF);}} //Donc un nombre, active ces segments//Si nombre ==10, puis éteint numbervoid lightNumber(int numberToDisplay) {//Common Anode ********* **************#define SEGMENT_ON HIGH#define SEGMENT_OFF LOW/* Common Cathode ***************** #define SEGMENT_ON LOW # définir SEGMENT_OFF HIGH*/ switch (numberToDisplay){ case 0:digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_OFF); Pause; cas 1 :digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); Pause; cas 2 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); Pause; cas 3 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_ON); Pause; cas 4:digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); Pause; cas 5 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); Pause; cas 6 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); Pause; cas 7 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); Pause; cas 8 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_ON); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); Pause; cas 9 :digitalWrite(segA, SEGMENT_ON); digitalWrite(segB, SEGMENT_ON); digitalWrite(segC, SEGMENT_ON); digitalWrite(segD, SEGMENT_ON); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_ON); digitalWrite(segG, SEGMENT_ON); Pause; // tous les segments sont ON case 10 :digitalWrite(segA, SEGMENT_OFF); digitalWrite(segB, SEGMENT_OFF); digitalWrite(segC, SEGMENT_OFF); digitalWrite(segD, SEGMENT_OFF); digitalWrite(segE, SEGMENT_OFF); digitalWrite(segF, SEGMENT_OFF); digitalWrite(segG, SEGMENT_OFF); Pause; }// Fin du codage, BUDHUSARANAI, Bonne chance. }

Schémas

C'est le câblage du SSD avec LED

Processus de fabrication

  1. horloge de vision Arduino pov
  2. Horloge de mots simple (Arduino)
  3. Oscilloscope Arduino 20 kHz simple bricolage sur écran LCD Nokia 5110
  4. horloge maîtresse
  5. Stores intelligents
  6. Horloge de mots italienne
  7. Arduino avec Bluetooth pour contrôler une LED !
  8. Arduino quadrupède
  9. Une entrée analogique isolée pour Arduino