Faites-le vous même!
SOUTENEZ-NOUS! Déjà 28 personnes nous ont soutenu. Nous vous en sommes très reconnaissants. |
RETROUVEZ NOUS SUR: |
Arduino
Réalisez une magnifique horloge RVB très design à l'aide d"un arduino pro mini, d'un RTC clock et de quelques mètres de filament 3D.
Plus de renseignements sur la page du projet:
http://www.crazymakers.fr/videos-youtube/horloge_rvb_design_pour_moins_de_1ae-art-OxHgl5IvX5E.html
➕ INFORMATIONS: ➕
⁉️ Catégorie: Arduino.
⏰ Temps: 5h.
💪 Difficulté: 6/10.
⭐️ COMMENT NOUS AIDER ? ⭐️
🚨Un petit geste sur Utip: https://www.utip.io/myprofile
❤️️ Soutenez-nous: http://www.crazymakers.fr/don-crazymakers.html
👍 Pensez à "liker" la vidéo.
🔗 Partagez nos vidéos et parlez de nous autour de vous
📡 NOUS SUIVRE OU NOUS CONTACTER: 📡
🔹Site Internet: http://www.crazymakers.fr
🔹Facebook: https://www.facebook.com/CrazyMakers/
🔹Twitter: https://twitter.com/CrazymakersF
🔹Instagram: https://www.instagram.com/crazymakers_fr/
🔹Chaine Youtube: https://www.youtube.com/c/CrazyMakersFr
#horlogervb #rvbclock #ws2812
Un circuit extrêmement simple utilisant un module RTC DS1302, un arduino pro mini, une résistance 4,7 Kohms, une photorésistance, 4 micro switch et 42 modules leds RVB Diam. 10mm Noirs
Voici l'archive contenant les fichiers à imprimer, le fichier fritzing pour le raccordement et le programme.
Fichiers
/*Définition Pinout du RTC DS1302 + Création du RTC
SCLK (Clock) -> 6, I/O (Data) -> 7, CE (reset) -> 8*/
virtuabotixRTC myRTC(6, 7, 8);
// Configuration FAST LED
#include "FastLED.h"
#define NOMBRE_LEDS_TOTAL 45 // Nombre de leds total
#define RTC_DATA_PIN 3 // Pin utilisée pour les données.
CRGB leds[NOMBRE_LEDS_TOTAL]; // Définition du tableau de couleurs RGB pour les LEDS.
byte SEGMENTS[10][7] = {{1,1,1,1,1,1,0}, // Digit 0
{0,1,1,0,0,0,0}, // Digit 1
{1,1,0,1,1,0,1}, // Digit 2
{1,1,1,1,0,0,1}, // Digit 3
{0,1,1,0,0,1,1}, // Digit 4
{1,0,1,1,0,1,1}, // Digit 5
{1,0,1,1,1,1,1}, // Digit 6
{1,1,1,0,0,0,0}, // Digit 7
{1,1,1,1,1,1,1}, // Digit 8
{1,1,1,1,0,1,1}}; // Digit 9
//Variables pour le choix de couleurs
uint32_t liste_couleurs[]={0x0000FF,0x00FF00,0xFF0000,0xFFCC00,0xFF6600,0x0099FF,0xFF0099};
int nombre_couleurs=7;
//Chargement de la derniére couleur sélectionnée.
int Num_Color=EEPROM.read(1);
//Variable pour horloge ou date
int MODE_AFFICHAGE=0; //0 horloge, 1 date
long delai_attente;
unsigned long ledColor; // Color used (in hex)
void setup(){
FastLED.addLeds
pinMode(5, INPUT_PULLUP); // BOUTON 1
pinMode(4, INPUT_PULLUP); // BOUTON 2
pinMode(11, INPUT_PULLUP); // BOUTON 3 HAUT
pinMode(10, INPUT_PULLUP); // BOUTON 3 BAS
}
void Luminosite_Auto()
{FastLED.setBrightness(map (analogRead(A3),10,1024,255,50));}
void RemplirArray(){
int cursor;
String minutes;
String heures;
String secondes;
long Now;
FastLED.clear();
ledColor = liste_couleurs[Num_Color];
if (MODE_AFFICHAGE==0) {
// ---------------------------- Récupération de l'heure du RTC et formatage ----------------------------
myRTC.updateTime(); //Lecture de l'heure sur le RTC
heures=String(myRTC.hours); minutes=String(myRTC.minutes); secondes=String(myRTC.seconds);
if (heures.length()==1){heures="0"+heures;} //Formatage de l'heure
if (minutes.length()==1){minutes="0"+minutes;} //Formatage des minutes
if (secondes.length()==1){secondes="0"+secondes;} //Formatage des secondes
Now=secondes.toInt()+minutes.toInt()*100+heures.toInt()*10000; //Création de l'heure brute en INT pour envoi sur Ruban
// ------------------------- Fin récupération de l'heure du RTC et formatage --------------------------
}
else
{
// ------------------------------- Récupération de la date et formatage -------------------------------
myRTC.updateTime(); //Lecture de la date sur le RTC
String heures=String(myRTC.hours); String minutes=String(myRTC.minutes); String secondes=String(myRTC.seconds); //Récupération de l'heure sur le RTC
String jour= String(myRTC.dayofmonth); String mois=String(myRTC.month); String annee=String(myRTC.year-2000);
if (jour.length()==1){jour="0"+jour;}
if (mois.length()==1){mois="0"+mois;} //Formatage des minutes
if (annee.length()==1){annee="0"+annee;} //Formatage des secondes
Now=annee.toInt()+mois.toInt()*100+jour.toInt()*10000; //Création de l'heure brute en INT pour envoi sur Ruban
// ----------------------------- Fin Récupération de la date et formatage -----------------------------
}
leds[14]=ledColor;
leds[15]=ledColor;
leds[30]=ledColor;
for(int i=1;i<=6;i++){
int Position_Chiffres[]={38,31,23,16,7,0}; //Position des différents chiffre sur la chaine de leds
int digit = Now % 10; // Récupération du dernier caractére de l'heure
cursor=Position_Chiffres[i-1]; //Positionnement du curseur sur la position du chiffre
for(int k=0; k<=6;k++){ //Remplissage du chiffre avec les valeurs des LEDS.
if (SEGMENTS[digit][k]== 1){leds[cursor]=ledColor;} else if (SEGMENTS[digit][k]==0){leds[cursor]=0x000000;}; //Remplissage des segments avec 0 ou couleur.
cursor ++;
};
Now /= 10; // Suppression du dernier caractére de l'heure Affiché
};
};
void Reglage() {
int button1 = digitalRead(5); // BOUTON 1
int button2 = digitalRead(4); // BOUTON 2
int button3 = digitalRead(11); // BOUTON 3 HAUT
int button4 = digitalRead(10); // BOUTON 3 BAS
int jour= myRTC.dayofmonth;
int mois=myRTC.month;
int annee=myRTC.year;
if (button1 == LOW || button2 == LOW|| button3==LOW || button4==LOW) {
delay(500);
myRTC.updateTime();
int hours = myRTC.hours;
int minutes = myRTC.minutes;
int seconds = myRTC.seconds;
if (button1 == LOW && button4==HIGH && MODE_AFFICHAGE==0) {if (hours == 23) {hours = 0;} else {hours += 1;}}
if (button1 == LOW && button4==LOW && MODE_AFFICHAGE==0) {if (hours == 0) {hours = 23;} else {hours -= 1;}}
if (button2 == LOW && button4==HIGH && MODE_AFFICHAGE==0) {if (minutes == 59) {minutes = 0;} else {minutes += 1;}}
if (button2 == LOW && button4==LOW && MODE_AFFICHAGE==0) {if (minutes == 0) {minutes = 59;} else {minutes -= 1;}}
if (button1 == LOW && button4==HIGH && MODE_AFFICHAGE==1) {if (jour == 31) {jour = 0;} else {jour += 1;}delai_attente=millis();}
if (button1 == LOW && button4==LOW && MODE_AFFICHAGE==1) {if (jour == 0) {jour = 31;} else {jour -= 1;}delai_attente=millis();}
if (button2 == LOW && button4==HIGH && MODE_AFFICHAGE==1) {if (mois == 12) {mois = 0;} else {mois += 1;}delai_attente=millis();}
if (button2 == LOW && button4==LOW && MODE_AFFICHAGE==1) {if (mois == 0) {mois = 12;} else {mois -= 1;}delai_attente=millis();}
if (button3 == LOW && button4==HIGH && MODE_AFFICHAGE==1) {annee += 1;MODE_AFFICHAGE=1;delai_attente=millis();}
if (button3 == LOW && button4==LOW && MODE_AFFICHAGE==1) {annee -= 1;MODE_AFFICHAGE=1;delai_attente=millis();}
if (button3 == LOW && MODE_AFFICHAGE==0) {MODE_AFFICHAGE=1;delai_attente=millis();}
if (button4 == LOW && MODE_AFFICHAGE==0 && button1==HIGH && button2==HIGH && button3==HIGH) {Num_Color+=1;if(Num_Color>=nombre_couleurs){Num_Color=0;}; EEPROM.write(1,Num_Color);}
myRTC.setDS1302Time(seconds, minutes, hours, 0, jour, mois, annee);
}
}
void loop() // Main loop
{
Reglage(); // Check to se if time is geting modified
RemplirArray(); // Get leds array with required configuration}
Luminosite_Auto();
FastLED.show(); // Display leds array
if (millis()>delai_attente+5000){MODE_AFFICHAGE=0;}
}
Crazymakers le 2019-12-15 06:56:41
Selon le modèles, deux pattes sont connectées ensemble.
jmarie le 2019-12-14 18:37:17
bonsoir excuse je me pose une question les poussoirs sont des 2 coté normalement ouvert ou d un coté normalement ouvert et l autre fermer
car mon probleme est que mes led ne font que clignoté
Crazymakers le 2019-12-14 10:17:03
Cela fonctionnera tout autant, pas de soucis...
Il faut bien brancher sur les pins correspondants du programme. Cdlt.
jmarie le 2019-12-13 23:09:28
bonjour je voudrais reproduire l horloge mais avec un arduino nano et ma question est le programme est le même ou il change je suis un peux perdu avec les pin merci d'avance
Newsletter (Lettre d'information)Recevez nos lettres d'information dans votre boite mail. |