Crazy Makers

Faites-le vous même!

SOUTENEZ-NOUS!
Déjà 8 personnes nous ont soutenu.
Nous vous sommes très reconnaissants!
PARTAGER SUR:
  • facebook
  • twitter
  • linkin
  • Google Plus
Logo CrazyMakers

Horloge RVB design pour moins de 10€

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.crazy...



La culture maker (de l'anglais make, lit. faiseur) est une culture (ou sous-culture) contemporaine constituant une branche de la culture Do it yourself (DIY) (qu'on peut traduire en français par « faites-le vous-même »).          (Source: Wikipedia)
les "Crazy Makers" sont les plus fous et les plus passionnés des makers...

Catégorie

Arduino

Niveau de difficulté

temps nécessaire

5h

Horloge RVB design pour moins de 10€



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.

🔌 NOTRE MATERIEL: 🔌
Caméra: Samsung Galaxy S7
SJCam SJ5000+ Wifi: https://goo.gl/giFhVV
Trépied: https://goo.gl/L7VCPD

⭐️ COMMENT NOUS AIDER ? ⭐️
❤️️ 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/
🎥 Chaine Youtube: https://www.youtube.com/c/CrazyMakersFr



Le Circuit:

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

Téléchargement:

Voici l'archive contenant les fichiers à imprimer, le fichier fritzing pour le raccordement et le programme.
Fichiers

Le Programme:


// Importation bibliothèques
#include ‹virtuabotixRTC.h›
#include ‹Time.h›
#include ‹Wire.h›
#include ‹EEPROM.h›



/*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(leds, NOMBRE_LEDS_TOTAL); // Initialisation de la librairie FastLED

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;}
}



Commentaires de la vidéo

### Déposer un commentaire ###

Par: ONCLEFLY le 2018-11-16T19:49:58.000Z
Salut l'ami, top ton horloge a fabriquer soi même en ^lus pas un soir froid en hiver, j'adore. Mélange d'impression 3D, électrique, informatique programmation, montage, il y a de tout, chapeau. 😉

Par: Ducatez Serge le 2018-11-13T02:34:52.000Z
Super, j'adore. Bravo.

Par: AirConOne le 2018-11-10T10:20:52.000Z
Super boulot :)
Je ne connaissais pas ces Leds adressable en série. Hop un tour chez ALI et c'est dans le panier.

Par: caape62 le 2018-11-05T19:25:32.000Z
Bonjour. Super résultat.
Où as tu acheté ton ruban led? Et a combien?
J'ai l'impression que ça revient plus cher que 10€ avec les LE Ds et PLA. Enfin j'aurais imaginé plus.
Continu comme ça
Bye

Par: Fabrice Motard le 2018-11-05T08:17:38.000Z
Génial bravo je compte bien l'a réalisé des que j'aurai installer mon imprimante 3d vraiment du beau travail !! 👏👏👍

Par: Fabrice Motard le 2018-11-05T08:17:29.000Z
Génial bravo je compte bien l'a réalisé des que j'aurai installer mon imprimante 3d vraiment du beau travail !! 👏👏👍

Par: sebastien vivier le 2018-11-04T17:44:39.000Z
tres sympa ça. par contre est ce qu'on ne voit pas trop que ce n'est qu'une led par cabochon qui eclaire ? est ce bien diffus comme eclairage ? sur la video on vois clairement le point de la led mais en vrai ce n'est peu etre pas pareil....

Par: Fondation3 le 2018-11-03T22:21:44.000Z
Merci pour ce tuto.
Tu l'évoques dans la vidéo, l'horloge du module RTC se décale avec le temps. J'ai entendu parler de 'quelques' secondes chaque jour. Mais ce quelques est un peu vide de sens (entre 2 secondes et 50 secondes par jour, il y a un monde). D'après ce que tu observes sur ton horloge, le décalage que tu constates est de combien ?
Si ce décalage est réel, je me demande aussi si il n'existe pas des modules RTC plus précis (car c'est quand même son boulot de nous donner l'heure, et pas le notre)... Ca serait quand même dommage de devoir récupérer l'heure sur un module GPS pour avoir une valeur qui ne se dérègle pas. Je me demande d'ailleurs sur quoi les horloges "Radio Controlled" se calent (peut être y'a t'il moyen de s'en inspirer).

Par: Michel BRE le 2018-11-03T18:23:04.000Z
Un portage sur wemos serait idéal avec interrogation d'une sonde température extérieure se serait le top et WAF

Par: lmdm57 le 2018-11-03T17:16:02.000Z
super travail... une idée à lancer si un jour il y a une v2 et d'ajouter une appli bluetooth pour régler aussi depuis son tel.

Par: Div Merte le 2018-11-03T16:49:54.000Z
vraiment top et détaillé juste comme il faut ! milles merci !

Par: kikosricos le 2018-11-03T15:21:13.000Z
Superbe horloge, moi j'adore .Ça mélange le dessin 3d, l'électronique et la programmation, enfin tout ce que j'aime.
Bravo.

Par: Crazy Seb le 2018-11-03T14:34:22.000Z
Effectivement, une bien sublime horloge.
J’espère que les changements perso sont positifs.
Merci pour le partage.

Par: Monsieur KHONAR le 2018-11-03T13:29:36.000Z
Tu dis que c'est normal qu'il y ait un décalage sur le rtc, non ce n'est pas normal, c'est logique parce que c'est un module chinois. Les modules chinois sont de mauvaises qualité, et ont ce p@&€in de décalage. Avec un module RTC acheté dans un vrai magasin a 4 ou 5 fois plus cher (voire plus) il n'y a plus de décalage.
Il arrive qu'en soudant le quartz a la masse le décalage soit moindre.

Mais il existe un autre module RTC plus moderne pour l'arduino plus fiable. Je n'ai pas la référence en tête par contre. Mais un tour sur les forums , c'est trouvé rapidement.

Par: Miguel Ponte le 2018-11-03T12:30:05.000Z
Super tuto, j'ai une question à propos d'arduino : je vais faire un système son mais je sais pas si je peux faire un circuit qui fonctionne avec un nano, une enceinte, un support sd et des leds ? (Branché sur une batterie)

Par: 59540rebel le 2018-11-03T11:38:20.000Z
ces cool mais ou trouve ton les fichiers je suis tout tes videos il son cool et avec la bonne humeur