Le contenu de cet article a été entièrement réécrit et mis à jour sur le site Carnet du Maker.
Liens vers les nouveaux articles :
- Utiliser un module horloge temps réel DS1307 avec une carte Arduino / Genuino : https://www.carnetdumaker.net/articles/utiliser-un-module-horloge-temps-reel-ds1307-avec-une-carte-arduino-genuino/
N.B. Les commentaires de l’article ont été pris en compte lors de la rédaction des nouveaux articles 😉
bonjour,
et avec ds1302 rtc module+pcd8544 monochrome sur arduino uno
quel sont les modif a faire pour que cela fonctionne?
je rencontre un probleme pour garde l heure avec la pile apres un reset
Si tu as acheté ton DS1302 sur eBay, pense à remplacer la pile 🙂
Super article !
pour l’utilisation de PROGMEM, un petit lien sur ce que c’est permet de mieux comprendre les mécaniques en oeuvre. J’ai toruvé ce lien http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=38003
En un peu moins complet il y aussi la référence de PROGMEM sur arduino.cc : http://www.arduino.cc/en/Reference/PROGMEM
bonjour.
très intéressant votre projet.
la routine de clignotement est super!!!
void blinkPoint1(unsigned long interval, byte x, byte y) {
093 static unsigned char state = 0;
094 static unsigned long prevMillis = 0;
095 unsigned long curMillis = millis();
096 if(curMillis – prevMillis > interval) {
097 prevMillis = curMillis;
098 lcd.setCursor(x, y);
099 lcd.write(state ? ‘:’ : ‘ ‘);
100 state = !state;
101 }
je voudrai remplacer les « : » par la valeur d’une variable est ce possible ?
j’ai essayé lcd.write(state ? ‘ ma variable : ‘ ‘) pas possible!!!!
avez vous une idée?
merci de votre lecture
Il suffit de remplacer lcd.write() par lcd.print().
Ps: ne pas oublier de remplacer ‘ ‘ par une chaine de caractére vide de la longueur de la variable 😉
Sinon il restera des morceaux de l’ancienne valeur par moment 😉
merci SKYWODD.
Cool ce progamme !!
Felicitation au concepteur…
J’aimerai ajouter un capteur de temperature (LM35 ou DS1631) a ce systeme et afficher la temperature sur le LCD…
Pourriez vous m’aider ?
>> Cool ce progamme !!
>> Felicitation au concepteur…
Merci 🙂
>> J’aimerai ajouter un capteur de temperature (LM35 ou DS1631) a ce systeme et afficher la temperature sur le LCD…
Pour le capteur de température j’ai fait un tutoriel sur le DS18B20 :
https://skyduino.wordpress.com/2012/04/26/arduino-capteur-de-temperature-ds18b20/
Sinon sur la site de ladyada est disponible un tutoriel pour le LM35 :
http://www.ladyada.net/learn/sensors/tmp36.html
Pour l’affichage il doit être possible d’enlever les espaces avant et aprés les ‘:’ pour gagner de la place et afficher la température en fin de la 2eme ligne.
Bonsoir,
Dites le code en python, comment l’ajoute t-on au programme ?
Helpe me !
Et s’il vous plaît où trouver la librairie pgmspace
>> Dites le code en python, comment l’ajoute t-on au programme ?
Le code python est un programme pour PC pas pour arduino.
Il faut installer python 2.7 sur ton ordinateur pour le lancer.
http://www.python.org/getit/
Il faut aussi installer pyserial pour utiliser le script python :
http://pypi.python.org/pypi/pyserial
>> Et s’il vous plaît où trouver la librairie pgmspace
Ce n’est pas une librairie, c’est un fichier inclut de base dans avr-libc.
http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.html
Il suffit de compiler le programme, il n’y as pas besoin de librairies arduino spécifique.
Bonjour,
Merci pour ce tutoriel.
J’ai un problème au niveau de la déclaration de ma libraire structure.h.
J’ai bien mis la libraire dans le même fichier que mon .ino
Mais j’ai le message d’erreur « error: structure.h: No such file or directory »
Je l’appelle bien par #include « structure.h » pourtant … (et le nom est bien orthographié)
L’erreur disparaît lorsque j’écris #include , mais c’est sans effet (il ne connaît pas la structure Date lorsque je l’utilise).
Une idée de comment corriger ce problème ?
>> J’ai bien mis la libraire dans le même fichier que mon .ino
>> Mais j’ai le message d’erreur “error: structure.h: No such file or directory”
J’ai bien précisé dans l’article :
Ps: si lors de la compilation vous avez une erreur au niveau de la structure, c’est normal, un bug dans l’ide arduino fait qu’il est impossible d’utiliser une structure en la déclarant dans un sketch, il faut obligatoirement la placer dans un .h dans le même dossier que le .pde (ou .ino) puis l’inclure avec #include “monheader.h” par exemple.
La structure doit être déclaré dans un fichier structure.h présent dans le même dossier que le .ino, mais pas dans le .ino.
Oui c’est ce que j’ai fait, désolé je me suis mal exprimé.
J’ai un dossier avec dedans mon .ino et mon .h (structure.h).
J’ai réussi à corriger le problème.
En fait il fallait placer le .h dans le dossier où se trouve le dossier contenant le .ino (et pas dans le même dossier que le .ino).
Par contre j’ai un autre problème. La librairie Wire.h ne connaît pas pas « Wire.send(donnee) », et me « conseille » d’utiliser « Wire.write(donnee) ».
Quand je regarde dans la libraire, ça me semble en effet être juste. Tu peux me confirmer que ça a bien le même effet ?
Merci pour ton aide en tout cas.
>> En fait il fallait placer le .h dans le dossier où se trouve le dossier contenant le .ino (et pas dans le même dossier que le .ino).
Oui c’est ça, pourquoi tu avais un dossier dans le dossier ?
>> Par contre j’ai un autre problème. La librairie Wire.h ne connaît pas pas “Wire.send(donnee)”, et me “conseille” d’utiliser “Wire.write(donnee)”.
>> Quand je regarde dans la libraire, ça me semble en effet être juste. Tu peux me confirmer que ça a bien le même effet ?
Tu est sous arduino 1.0 ?
Il y a eu des modifications entre 0023 et 1.0 :
– Wire.send est devenu Wire.write
– Wire.receive est devenu Wire.read
Il suffit juste de remplacer send / receive par write / read 😉
Très bien, merci beaucoup pour ton aide !
Bonsoir,
Pourrais-tu nous aider, pour nous qui n’avons pas de connaissance sur le langage python, en nous montrant concrètement la manip qu’il faut faire avec le code python pour la synchronisation de l’heure ?
PS. La procédure à suivre
Merci !
1 – Installer python 2.7.x
2 – Modifier le script pour que le port série correspondent à celui de l’arduino
SERIALPORT = « LeNomDuPortSérieIci »
3 – Brancher l’arduino
4 – Enregistrer et lancer le script
5 – Enjoy
Il n’y a absolument rien à comprendre dans le script python, juste changer le port série et exécuter le tout 😉
Bonjour
Totalement novice dans la programmation j’ai le probleme ci dessous
sketch_jun30a.cpp:2:98: error: structure.h: No such file or directory
sketch_jun30a:-1: error: variable or field ‘ecrire’ declared void
sketch_jun30a:-1: error: ‘Date’ was not declared in this scope
sketch_jun30a:-1: error: ‘date’ was not declared in this scope
sketch_jun30a:-1: error: variable or …… etc
Merci de bien vouloir m’aider
Le solution au probléme a été donné trois commentaires plus haut 😉
https://skyduino.wordpress.com/2012/01/07/tutoriel-arduino-horloge-rtc-ds1307-librairie-liquidcrystal/#comment-1008
https://skyduino.wordpress.com/2012/01/07/tutoriel-arduino-horloge-rtc-ds1307-librairie-liquidcrystal/#comment-1009
https://skyduino.wordpress.com/2012/01/07/tutoriel-arduino-horloge-rtc-ds1307-librairie-liquidcrystal/#comment-1011
ok merci mais je comprend pas tout le dossier structure je ne le trouve pas je le doit le crée comment ? il vas bien dans le dossier librarie ?
merci
Les fichiers sont agencé comme ceci :
– Ma_super_horloge (-> le dossier contenant le programme arduino)
| – Ma_super_horloge.ino (-> le programme arduino)
| – structure.h (-> le code de structure.h)
Bonsoir,
j´ai adoré votre tutoriel je suis entrain de l´adapter pour mes besoin ( car je n´ai pas de lcd mais plus pour faire du data loggin sur carte SD)
par contre en lisant votre code j´ai du mal a comprendre cette ligne de code:
» date->heures = bcd2dec(Wire.receive() & 0b111111); » (ligne 39)
j´ai du mal a comprende pouquoi est il necesseraire de faire » & 0b111111 » ?
je vous remercie d´avance
C’est pour ignorer le bit 6 qui contient le flag du mode « 24h/12h ».
Si on ne le masque pas avec ce ET logique il viendrait fausser la valeur.
Bonsoir, j’essaye de voir comment votre code fonctionne.
j’ai une carte mega 2560. Apres quelques modifs, le code fonctionne sur l’arduino et affiche l’heure (non à jours). Maintenant, j’essaye de lancer le code sous python pour mettre à l’heure et j’ai un problème :
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type « copyright », « credits » or « license() » for more information.
>>> ================================ RESTART ================================
>>>
Traceback (most recent call last):
File « C:\Users\Rodolphe\Documents\Arduino\ds1307\ds1307\Nouveau document texte.txt », line 2, in
import serial, datetime, time
ImportError: No module named serial
>>>
Pourtant j’ai bien modifé le port serie à « com16 », je ne vois pas ou est le probleme,
merci de votre aide.
C’est bon j’ai trouvé.
J’avais un problème d’installation de Py-serial, ça fonctionne maintenant 😉
Par contre, j’ai un problème avec l’année, affiché à 01 ???
A priori, la ligne : print « Current year: %d » % int(str(now.year)[-2]) me renvoie juste « 1 »
Avec un peu d’aide exterieur avec cette ligne ca fonctionne : print « Current year: %s » % str(now.year)[-2:]
Petit problème avec wordpress et la balise code désolé …
La ligne devrait être :
et rajouter le : sur la ligne
arduino.write(chr(int(str(now.year)[-2:])))
j’avais le bug de l’année 01 sans.
Bonjour, quand je rentre ton code complet arduino dans le logiciel Arduino 1.5.2 il me trouve des erreurs a la ligne 13 ,
il me dit sa :
HelloWorld:55: error: variable or field ‘synchronisation’ declared void
HelloWorld:55: error: ‘Date’ was not declared in this scope
HelloWorld:55: error: ‘date’ was not declared in this scope
merci de ton aide et ton tuto et parfait, continue comme sa
La version 1.5.2 (encore en beta) de l’ide arduino est réservé à l’arduino DUE en priorité, pour une utilisation avec les cartes arduino « autres » il faut la version 1.0.3.
Sinon concernant l’erreur il faut faire un fichier .h séparé pour la déclaration de la structure Date, est-ce que tu l’as fait ?
je n’ai rien touché par rapport a ton code donnée
et merci ,je vais télécharger la version 1.0.3 quand le site de arduino sera en ligne
Je précise bien qu’il faut faire un fichier .h séparé pour la structure, regarde les commentaires pour l’explication 😉
comment on fait ça ? je ne m’y connais peu en Arduino ,je commence juste .
Sur la droite de l’ide (en haut) -> la petite flèche -> nouvel onglet 😉
non ,pour mettre le fchier h séparément
en gros : quel code il faut mettre dans un autre fichier ?
« Le fichier structure.h :
(…) »
En plein milieu d’article, faut lire 😉
Merci pour ce tuto très complet!
Mais…étant débutant(j’ai 17 ans et l’arduino est imposé dans mon projet pour le BAC, je découvre) j’aimerais savoir pour le code python, où le placer et dans quoi colle t’on le code, car au lancement de python j’ai une console qui me propose juste les copyright, la licence et les crédits…
C’est bon j’ai trouvé, mais j’ai un problème pour installer pyserial 2.6 comme un commentaire plus haut mais je ne sais pas comment le résoudre 😦
C’est quoi le probléme ?
Quand je lance le code python dans python shell, il m’affiche:
« import serial, datetime, time
ImportError: No module named serial », sans doute a cause de la libraire pyserial et je ne sais pas comment (bien) l’installer
Manifestement PySerial n’est pas installé …
Il suffit de ce rendre sur le site de PySerial, télécharger l’installateur pour ta version de python (j’utilise python 2.7 personnellement) et le reste ce fait tout seul normalement.
c’est ce que j’ai fait mais ça n’a pas marché, rien ne c’est fait, j’ai finalement trouvé une solution sur internet mais c’etait plutôt compliqué…Je pense que ça marche mais je confirmerais demain avec les arduinos du lycée
Maintenant que j’ai réussi a tout téléversser, j’ai un autre problème…
L’afficheur me met 4 espace vide puis 15 / 15 / 15 puis à la ligne 45 : 15 :15
Comment ajuster l’heure et la date?
Il faut lancer le script python au moins une fois avec la carte arduino connecter en usb.
C’est lui qui se charge de mettre à jour l’heure, la date et le jour en fonction de l’horloge de l’ordinateur.
C’est ce que j’ai fais, mais python m’affiche à son exécution la bonne date et la bonne heure mais a mon avis ne le transmet pas à l’arduino et donc ne l’affiche pas sur l’afficheur…
Essaye un code d’exemple de la librairie RTClib pour tester ton module RTC 😉
Mon erreur doit venir de là, je n’ai pas la librarie RTClib. Les arduinos étant au lycée(je ne peux presque rien tester sans), je testerais ça une autre fois.
Merci beaucoup!
Avec le prof, je me suis rendu compte que l’heure et la date dépende des résistances placés sur SCL et SDA.(l’heure changeait tout le temps ou restait fixe mais il était 45 : 15 : 15). Il faut mettre quel résistance pour que ça marche?
10K marche sans probléme normalement.
C’est surement une erreur de câblage, vérifie que les lignes SCL et SDA ne sont pas inversée et qu’elles soit bien sur A4 et A5 (broches analogique).
Sinon c’est peut être le DS1307 qui est défectueux ?
Avec 10k il était 45 :15 15, avec 2.2k l’heure et la date changeais toute les secondes. Donc je pense que le module peut être défectueuse mais le module est neuf… (sur les broches, je suis sur de ne pas m’être trompé)
Essaye sans résistances, elle sont peut être déjà intégré dans ton module 😉
C’est un module sparkfun, j’essayerais la semaine prochaine(je peut pas avant T.T), j’ai vu un schéma où ça marche sur un autre microcontroleur merci 😉
Si c’est ce module :
https://skyduino.wordpress.com/2011/08/18/test-module-rtc-ds1307/
Tu n’as rien à ajouter tout est inclut sur la carte (résistance, pile, …) 😉
merci pour ce lien, j’essayerais la semaine prochaine 🙂
J’ai toujours un problème x_x
J’ai remarqué qu’en fait l’affichage de l’heure et la date dépend de la « forme » du câble, quand je déplace le câble(en le laissant connecté) quelques rares fois(mais très rare et environ 2 secondes) l’affichage de l’heure et la date est bon (sauf l’année mais je n’en ai pas besoin). Comment faire pour pouvoir réussir a l’avoir sans toucher au câble?changer la breadboard?
C’est un probléme de câblage, c’est sûr, check tes câbles et tes connections je peut pas t’aider plus …
J’ai déjà vérifier mes câbles très souvent, ça doit être la breadboard. Merci de ton aide quand même 🙂
(j’ai quand même assez « pollué » les commentaires, tu peux en supprimer quelques un de moi si tu veux 😉 )
(désolé de t’embêter encore^^) en fait le programme marche uniquement (je l’ai découvert par hasard) lorsque la masse est débranché sur le module d’horloge. C’est assez étrange mais j’aimerais juste savoir s’il n’y a aucun risque sur le montage du coup…
Un circuit sans masse ne devrait pas pouvoir marcher … Tu as définitivement un probléme avec ton montage 😉
bonjour
je suis à la recherche du logiciel qui me permetra de simuler mes montages avec arduino
merci pour….
VirtualBreadboard c’est le seul logiciel qui simule une carte Arduino + circuit.
Mais c’est pas franchement terrible, rien ne vaut un test réel.
Bonjour et merci de ce tuto génial. Je débute et j’ai un pb sur la synchro date/heure de l’appli python au niveau de la ligne while not « SYNC » in ligne: où « SYNC » n’est pas reconnu. Le message d’erreur obtenu est :
while not « SYNC » in ligne:
TypeError: Type str doesn’t support the buffer API
Heeeeelp merci d’avance !
Tu utilises quelle version de python ? C’est la branche 2.7 (pas 3.x) qu’il faut 😉
Effectivement c’est une version 2.7. Pourquoi la 33 n’est pas compatible ? branche ???
Ok nickel avec la 2.7. Merci
La branche 3.x a donné lieu à des modifications profondes des fonctions Python, toute le monde reste donc sur la 2.7 😉
Bonjour,
Merci pour cette excellent article, je débute, pouvez vous me dire comment je peux télécharger les librairie.
j’ai fait un copier coller dans ARDUINO 1.5 et j’ai plein d’erreur, je pens qu’il manque les librairie
Merci pour votre réponse
Charles
Arduino 1.5 c’est UNIQUEMENT pour l’arduino Due qui utilise un processeur bien différent des autres cartes et qui est encore en beta.
Si tu veut utiliser mon code sur une carte classique utilise l’ide « classique » 1.0.5.
Bonsoir,
j’ai installé la version 1.0.5 d’arduino, j’ai carte UNO
j’ai fait un copier coller
et voilà les fautes, je pense qu’il me manque quelquechose
sketch_jun10a.ino:2:98: error: structure.h: No such file or directory
sketch_jun10a:12: error: variable or field ‘ecrire’ declared void
sketch_jun10a:12: error: ‘Date’ was not declared in this scope
sketch_jun10a:12: error: ‘date’ was not declared in this scope
sketch_jun10a:13: error: variable or field ‘lire’ declared void
sketch_jun10a:13: error: ‘Date’ was not declared in this scope
sketch_jun10a:13: error: ‘date’ was not declared in this scope
sketch_jun10a:14: error: variable or field ‘synchronisation’ declared void
sketch_jun10a:14: error: ‘Date’ was not declared in this scope
sketch_jun10a:14: error: ‘date’ was not declared in this scope
sketch_jun10a:19: error: variable or field ‘affichage’ declared void
sketch_jun10a:19: error: ‘Date’ was not declared in this scope
sketch_jun10a:19: error: ‘date’ was not declared in this scope
sketch_jun10a:10: error: ‘Date’ does not name a type
sketch_jun10a:23: error: variable or field ‘ecrire’ declared void
sketch_jun10a:23: error: ‘Date’ was not declared in this scope
sketch_jun10a:23: error: ‘date’ was not declared in this scope
sketch_jun10a:38: error: variable or field ‘lire’ declared void
sketch_jun10a:38: error: ‘Date’ was not declared in this scope
Il faudrait que je puise chargé la librairie structure .h
Charles
Bonsoir,
j’ai fait un copier coller de structure .h dans un fichier avec wordpad, que j’ai copié dans le répertoire du fichier principale et là les erreurs ont evoluées
Horloge_RTC__DS1307____librairie_LiquidCrystal.ino:2:98: error: structure.h: No such file or directory
Horloge_RTC__DS1307____librairie_LiquidCrystal:12: error: variable or field ‘ecrire’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:12: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:12: error: ‘date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:13: error: variable or field ‘lire’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:13: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:13: error: ‘date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:14: error: variable or field ‘synchronisation’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:14: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:14: error: ‘date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:19: error: variable or field ‘affichage’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:19: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:19: error: ‘date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:10: error: ‘Date’ does not name a type
Horloge_RTC__DS1307____librairie_LiquidCrystal:23: error: variable or field ‘ecrire’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:23: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:23: error: ‘date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:38: error: variable or field ‘lire’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:38: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:38: error: ‘date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:55: error: variable or field ‘synchronisation’ declared void
Horloge_RTC__DS1307____librairie_LiquidCrystal:55: error: ‘Date’ was not declared in this scope
Horloge_RTC__DS1307____librairie_LiquidCrystal:55: error: ‘date’ was not declared in this scope
là je pense qu’il me manque le fichier LiquidCristal.ino
Charles
1er ligne :
« error: structure.h: No such file or directory »
En gros le fichier structure.h n’existe pas dans le dossier de ton code arduino.
salut, je test ton tuto pour l’introduire dans un projet, et je n’arrive pas a utiliser ton script python, j’ai un
I2C DS1307 que j’ai cablé comme ton tuto, mais lorsque je lance le script sa reste bloqué sur Booting up arduino …
…
aurais tu une idée ? pour m’aider ?
Merci
sa marche, j’avais mal cablé dsl et merci encore SKYWOOD!!
par contre j’ai l’année qui m’affiche 01 au lieu de 13 alors que j’ai bien Current year: 13
A la ligne :
Ajoute un : (double point) âpres -2.
Bonjour Skywodd, et bravo pour ton superbe tutoriel. C’est vraiment une aide précieuse pour tous les débutants qui se lancent dans l’électronique
J’ai moi aussi quelques soucis avec mon RTC.
Après quelques adaptations,
– création d’une variable « int zero =0; » et remplacement des « Wire.send(0); » par « Wire.send(zero); »
– remplacement des Wire.send et Wire.receive par Wire.write et Wire.read
le sketch compile sans alertes et semble tourner correctement.
Le script Python se déroule normalement jusqu’au « bye bye », mais l’heure ne s’ajuste pas comme prévu.
Mon écran LCD affiche irrémédiablement 13/15/2031…
Quelques infos sur mon setup :
– Arduino Uno R3
– module « TinyRTC by Waiwan » sur base de DS1037 avec l’I2C connecté aux ports A4 et A5 de l’arduino
– j’ai aussi un module barometrique BMP085 qui fonctionne sur ce bus, sans soucis.
– j’ai vérifié les connections, tout semble bon. La pile du RTC est neuve…
Aurais-tu une idée ?
J’ai aussi des petites questions complémentaires :
– Dans ton code, je vois plusieurs fois la même instruction avec des significations différentes :
Wire.send(0); // Arrête l’oscillateur du DS1307
Wire.send(0); // Redémarre l’oscillateur du DS1307
Wire.send(0); // Demande les info à partir de l’adresse 0 (soit toutes les info)
Quelle en est l’explication ?
– J’ai essayé de régler le RTC manuellement via le serial monitor. Si je veux programmer la date du 01/01/2001, dois-je entrer 010101 ou 111 ? Comment le RTC fait-il la distinction ?
Cela fait-il une différence si j’envoie chaque byte séparément, ou si je tape tout à la file ?
Merci d’avance !
Pourquoi avoir créé une variable « zero » ?
Wire.send((byte) 0); au lieu de Wire.send(zero); devrait résoudre quelques soucis à mon avis 😉
Pour les autres questions c’est très simple :
– Ce n’est pas parce que l’instruction est la même que le contexte et la signification est le même.
Suivant où et quand tu envois « 0 » dans un registre le résultat est totalement différent, c’est la doc constructeur qui dit quoi faire et quand 😉
– Tu ne peut pas changer l’heure manuellement avec le serial monitor. Il faut transmettre les valeurs sous forme d’octets bruts, pas de caractères. « 010101 » ça fait 6 octets en ASCII par exemple 😉
Si tu veut faire le changement manuellement il te faut un vrai terminal série qui permet d’envoyer des données brutes au lieu de texte ASCII.
Salut, merci d’avoir pris le temps de répondre à mes questions.
J’ai créé la variable « zero » afin d’éviter le message d’erreur suivant :
« RTC.cpp:39:15: error: call of overloaded ‘write(int)’ is ambiguous »
En fouillant sur le web, plusieurs sources expliquaient que ce message indique que le compilateur ne sait pas quel type de variable utiliser. Je me suis dit qu’en utilisant un entier déclaré au début du programme, le doute serait levé.
Wire.send((byte) 0) me renvoie une erreur, mais effectivement, avec Wire.write((byte) 0) c’est plus simple et il n’y a pas d’erreur au compilage.
Par contre, je n’arrive toujours pas à un résultat correct.
Les secondes défilent bien, le temps continue à s’incrémenter quand je débranche l’arduino, mais le réglage de la date ne se fait pas 😦
Infos à tout hasard : après l’exécution du script Python, l’écran LCD reste noir. Il faut que je reset manuellement l’arduino.
Aurais-tu une autre idée ?
Revérifie ton câblage à mon avis il y a un truc qui va pas. Le code devrait marcher en remplaçant Wire.send par Wire.write et en ajoutant le (byte) 0 où il faut, il y a rien d’autre à faire normalement.
Salut SKYWODD , et Salut a tous
Super code BRAVO très belle réalisation,
mais j’aimerais l’intégrer dans mon programme en menu veille et étant novice j’aimerai savoir comment il faut que je m’y prenne.
J’ai tenté d’ajouté une fonction void veille(){ ton code } mais sans résultat
cordialement un novice arduino
Le contenu de loop() permet de lire la date et de l’afficher.
Si tu as une fonction qui est appelée lors de la veille il te suffit de mettre le code dedans pour faire l’affichage.
/!\ Si cette fonction n’est pas appelée en boucle comme pour loop() il faudra que tu fasse toi même une boucle avec une condition de fin pour quitter le mode veille (sinon tu resteras éternellement en mode veille).
OK géniale désoler de ne pas avoir répondu tout de suite merci pour ta raiponce ça fonctionne par contre comment avec la fonction:
lire(&date); peut t’ont comparer l’heure actuel pour créer une interruption suivant l’heure actuel.
Par exemple: si il est 22h fait ceci
cordialement
Oui, exemple :
Merci de ta raiponce,
en revanche que faut t’il apporter comme librairie
car il me met en erreur
in function ‘ void loop() ‘:
error: expected primary-expression before ‘<' token
error: 'span' was not declared in this scop
error: expected ')' before 'class'
merci pour ton aide
cordialement
OK,
finalement c’est bon j’ai trouvé mon erreur
en revanche autre problème comment faire pour que le code ne s’exécute une seule fois par jour car j’ai écris
void loop(){
lire(&date);
if(date.heures == 22) {
digitalWrite(led, HIGH);
delay(10000);
digitalWrite(led, LOW);
}
et le code s’exécute en boucle sur une heure
y a t’il un moyen de cassé la boucle mais quelle reparte la prochaine fois que 22h00 arrive
si non je suis obliger d’écrire (bien que ce ne soit pas dérangent)
c’est juste pour accroître mes faible connaissance car le code dessous fonctionne
void loop(){
lire(&date);
if(date.heures == 22)&&(date.minutes==1)&&(date.secondes==1) ) {
digitalWrite(led, HIGH);
delay(10000);
digitalWrite(led, LOW);
}
cordialement
Tu as deux solutions :
– soit tu test les heures/minutes/secondes
– soit tu fait une variables dans laquelle tu stocks le jour de la dernière exécution.
Ensuite le code deviendrait quelques chose dans ce style :
lire(&date);
if(date.heures == 22 && data.jour != lastJour) {
digitalWrite(led, HIGH);
delay(10000);
digitalWrite(led, LOW);
lastJour = date.jour;
}
Bonjour,
Merci pour ces exemples très utiles.
Est-il possible de décaler l’horloge en milli-secondes sans réinitialiser ?
Cela pour le réglage à l’aide de boutons + et – par exemple.
Cordialement.
Salut SKYWOOD
merci pour ta raiponce,
Que pence tu du bouclier LCD 16*2 sainsmart?
A tu déjà travailler avec?
Car j’ai un petit soucis lors des appuie sur mes bouton
j’ai essayer avec un condensateur 10nF derrière en touchant les soudure et rien n’y fait et suivant comment j’appuie sur les bouton mon texte passe de affichage jour a mode incendie aurait tu une idée?
void menu(){
key = read_LCD_buttons(); //lecture des boutons déclarer ligne 24 à 33
lcd.clear();//efface l’afficheur LCD pour enlever les charactère qui ne seront pas remplacer.
lcd.setCursor(0,0);
lcd.print( » MENU »);
while(key != btnRIGHT){
key = read_LCD_buttons();
switch(key){
case btnDOWN:{
if(key == btnDOWN)
{afficheur = afficheur++;}
}
case btnUP:{
if (key == btnUP)
{afficheur = afficheur–;}
}
if(afficheur <= 0)
{
afficheur = 0 ;
}
affiche(afficheur);
}
}}
void affiche(int valeurRecue)
{
if(valeurRecue ==1)
{
key = read_LCD_buttons();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ESPACE JOUR");
lcd.setCursor(0,1);
lcd.print(" OK RETOUR");
while(key != btnRIGHT){
key = read_LCD_buttons();
switch(key){
case btnLEFT:{
if(key == btnLEFT)
{voletEspaceJourUP();}
}}}}
if(valeurRecue ==2)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" ESPACE NUIT");
lcd.setCursor(0,1);
lcd.print(" OK RETOUR");
}
if(valeurRecue ==3)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TOUS LES VOLETS");
lcd.setCursor(0,1);
lcd.print(" OK RETOUR");
}
if(valeurRecue ==4)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" MODE INCENDIE");
lcd.setCursor(0,1);
lcd.print(" OK RETOUR");
}
}
Pour le LCD 16*2 sainsmart, il vaut mieux analyser l’entrée analogique A0 et faire ce que l’on souhaite…
Ok merci pour ta raiponce
cordialement
Bonjour ,
Actuellement j’ai comme « projet » de développer un logger pour un capteur solaire.
En ce moment j’ai câblé l’arduino DUE et l’horloge RTC … j’ai commencé par faire un premier programme que je vous le laisserai ci-dessous. mon programme doit mettre a l’heure le système manuellement ensuite l’ envoyer a l’horloge puis régler la fréquence d’acquisition et lancer les mesures. Je dois récupérer et afficher les mesures puis arrêter les mesures quand je veux.
Voici le premier sketch:
#include « Wire.h »
#define DS1307_I2C_ADDRESS 0×68
//Pour convertir des nombres décimaux normal à des nombres décimaus codés binaire
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
//Pour convertir des nombres binaires à des nombres normales
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
void setDateDs1307
(byte seconde, // 0 à 59 secondes
byte minute, // 0 à 69 minutes
byte heure, // 1 à 23 heures
byte joursdanslasemaine, // 1 à 7 jours
byte joursdanslemois, // 1 à 28jours ou 1 à 29jours ou 1 à 30jours ou 1 à 31jours
byte mois, // 1 à 12mois
byte annee) // 0-99
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.write(0×80);
Wire.write(decToBcd(seconde));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(heure));
Wire.write(decToBcd(joursdanslasemaine));
Wire.write(decToBcd(joursdanslemois));
Wire.write(decToBcd(mois));
Wire.write(decToBcd(annee));
Wire.endTransmission();
}
// Obtient la date et l’heure du DS1307.
void getDateDs1307
(byte *seconde,
byte *minute,
byte *heure,
byte *joursdanslasemaine,
byte *joursdanslemois,
byte *mois,
byte *annee)
{
// Réinitialiser le pointeur de registre.
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
*seconde = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*heure = bcdToDec(Wire.read() & 0x3f); //Besoin de changer cela si 12 heures am / pm
*joursdanslasemaine = bcdToDec(Wire.read());
*joursdanslemois = bcdToDec(Wire.read());
*mois = bcdToDec(Wire.read());
*annee = bcdToDec(Wire.read());
}
void setup()
{
byte seconde, minute, heure, joursdanslasemaine, joursdanslemois, mois, annee;
Wire.begin();
Serial.begin(9600);
seconde = 4;
minute = 3;
heure = 7;
joursdanslasemaine = 5;
joursdanslemois = 17;
mois = 4;
annee = 8;
setDateDs1307(seconde, minute, heure, joursdanslasemaine, joursdanslemois, mois, annee);
}
void loop()
{
byte seconde, minute, heure, joursdanslasemaine, joursdanslemois, mois, annee;
getDateDs1307(&seconde, &minute, &heure, &joursdanslasemaine, &joursdanslemois, &mois, &annee);
Serial.print(heure, DEC);
Serial.print(« : »);
Serial.print(minute, DEC);
Serial.print(« : »);
Serial.print(seconde, DEC);
Serial.print( » « );
Serial.print(mois, DEC);
Serial.print(« / »);
Serial.print(joursdanslemois, DEC);
Serial.print(« / »);
Serial.print(annee, DEC);
Serial.print( » jours_dans_lasemaine: »);
Serial.println(joursdanslasemaine, DEC);
delay(1000);
}
Mon problème c’est que je n’arrive pas à avoir la date et l’heure du pc mais que des 0 partout.
Il me semble que l’horloge n’arrive pas à démarrer !!!
Voici ce que m’affiche le port com :
0:0:0 0/0/0 jours_dans_lasemaine:0
0:0:0 0/0/0 jours_dans_lasemaine:0
0:0:0 0/0/0 jours_dans_lasemaine:0
0:0:0 0/0/0 jours_dans_lasemaine:0
0:0:0 0/0/0 jours_dans_lasemaine:0
0:0:0 0/0/0 jours_dans_lasemaine:0
0:0:0 0/0/0 jours_dans_lasemaine:0
HEEEELP pouvez-vous m’aider svp 😦 😦
Juste un mot pour dire merci Skywodd 😉
Bonjour,
J’ai installé le code dans un Arduino Due Ide V 1.5.8,
J’ai le message de défaut suivant:
Clock_Sky.ino: In function ‘void synchronisation(Date*)’:
Clock_Sky.ino:74:22: error: ‘ecrire’ was not declared in this scope
Clock_Sky.ino:80:10: error: ‘lire’ was not declared in this scope
Pour tester j’ai éliminé la partie du code concernée, j’arrive à lancer Python qui me renvoie les bonnes infos, une trame avec des zéros et points clignotants sont affichés sur le display ce qui est sans doute normal.
J’ai bien lu précédemment que la version Ide V1.5.8 posait problème, j’avais exactement le même problème avec la fonction « date » mais le fichier.h n’était pas installé correctement, maintenant le fichier.h semble fonctionner, mais il ne me reste que cette erreur.
D’avance merci de votre attention et aide.
Cordialement.
D’aprés le message d’erreur, il manque le code des deux fonctions lire et ecrire dans le fichier .ino
Bonjour,
Désolé pour le retard, j’étais absent.
J’ai le message de défaut suivant:
Clock_Sky.ino: In function ‘void ecrire(Date*)’:
Clock_Sky.ino:27:8: error: ‘class TwoWire’ has no member named ‘send’ de ligne 27 à 35.
Clock_Sky.ino:42:8: error: ‘class TwoWire’ has no member named ‘send’
Clock_Sky.ino:47:33: error: ‘class TwoWire’ has no member named ‘receive’ de ligne 47 à 53.
J’ai essayé des modifs suivant les commentaires précédents mais j’ai davantage de défauts.
D’avance merci de ton attention et aide.
Remplace Wire.send() par Wire.write() et Wire.receive() par Write.read() si tu utilises une version d’arduino IDE supérieur ou égale à 1.0.
Merci bcp
Bonjour,
Si je masque les lignes de code contenant « wire.send », « wire.recieve », »wire.send(0) », j’arrive à transférer via Python la date et heure du Pc mais elle reste fixe ce qui est à mon avis normal, elle se réinitialise à chaque fois que je relance Python.
J’ai un doute avec la Duino Due et sa version V1.5.8 mais je suis totalement incapable de le confirmer.
D’avance merci de m’aider à aboutir ce tutoriel qui m’apprend énormément.
Bonjour je suis sur Arduino 1.0.6 et quand je copie le programme il y a une erreur à ce niveau » hour = bcdToDec(Wire.read() & 0x3f); » le programme que j’ai copié est: C’est mon PPE de TSI j’ai besoin d’aide je ne trouve pas merci d’avance 🙂
#include
int clockAddress = 0x68; // This is the I2C address
int command = 0; // This is the command char, in ascii form, sent from the serial port
long previousMillis = 0; // will store last time Temp was updated
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
byte test;
// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
return ( (val/10*16) + (val%10) );
}
// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you’re passing in valid numbers,
// Probably need to put in checks for valid numbers.
void setDateDs1307()
{
// Use of (byte) type casting and ascii math to achieve result.
second = (byte) ((Serial.read() – 48) * 10 + (Serial.read() – 48));
minute = (byte) ((Serial.read() – 48) *10 + (Serial.read() – 48));
hour = (byte) ((Serial.read() – 48) *10 + (Serial.read() – 48));
dayOfWeek = (byte) (Serial.read() – 48);
dayOfMonth = (byte) ((Serial.read() – 48) *10 + (Serial.read() – 48));
month = (byte) ((Serial.read() – 48) *10 + (Serial.read() – 48));
year= (byte) ((Serial.read() – 48) *10 + (Serial.read() – 48));
Wire.beginTransmission(clockAddress);
Wire.write(byte(0x00));
Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour)); // If you want 12 hour am/pm you need to set
// bit 6 (also need to change readDateDs1307)
Wire.write(decToBcd(dayOfWeek));
Wire.write(decToBcd(dayOfMonth));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();
}
// Gets the date and time from the ds1307 and prints result
void getDateDs1307() {
// Reset the register pointer
Wire.beginTransmission(clockAddress);
Wire.write(byte(0x00));
Wire.endTransmission();
Wire.requestFrom(clockAddress, 7);
// A few of these need masks because certain bits are control bits
second = bcdToDec(Wire.read() & 0x7f);
minute = bcdToDec(Wire.read());53
// Need to change this if 12 hour am/pm
hour = bcdToDec(Wire.read() & 0x3f);
dayOfWeek = bcdToDec(Wire.read());
dayOfMonth = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
Serial.print(hour, DEC);
Serial.print(« : »);
Serial.print(minute, DEC);
Serial.print(« : »);
Serial.print(second, DEC);
Serial.print( » « );
Serial.print(month, DEC);
Serial.print(« / »);
Serial.print(dayOfMonth, DEC);
Serial.print(« / »);
Serial.print(year, DEC);
}
void setup() {
Wire.begin();
Serial.begin(57600);
}
void loop() {
if (Serial.available()) { // Look for char in serial que and process if found
command = Serial.read();
if (command == 84) { //If command = « T » Set Date
setDateDs1307();
getDateDs1307();
Serial.println( » « );
}
else if (command == 81) { //If command = « Q » RTC1307 Memory Functions
delay(100);
if (Serial.available()) {
command = Serial.read();
// If command = « 1 » RTC1307 Initialize Memory – All Data will be set to 255 (0xff).
// Therefore 255 or 0 will be an invalid value.
if (command == 49) {
// 255 will be the init value and 0 will be cosidered an error that
// occurs when the RTC is in Battery mode.
Wire.beginTransmission(clockAddress);
// Set the register pointer to be just past the date/time registers.
Wire.write(byte(0x08));
for (int i = 1; i <= 27; i++) {
Wire.write(byte(0xff));
delay(100);
}
Wire.endTransmission();
getDateDs1307();
Serial.println(": RTC1307 Initialized Memory");
}
else if (command == 50) { //If command = "2" RTC1307 Memory Dump
getDateDs1307();
Serial.println(": RTC 1307 Dump Begin");
Wire.beginTransmission(clockAddress);
Wire.write(byte(0x00));
Wire.endTransmission();
Wire.requestFrom(clockAddress, 64);
for (int i = 1; i <= 64; i++) {
test = Wire.read();
Serial.print(i);
Serial.print(":");
Serial.println(test, DEC);
}
Serial.println(" RTC1307 Dump end");
}
}
}
Serial.print("Command: ");
Serial.println(command); // Echo command CHAR in ascii that was sent
}
command = 0; // reset command
delay(100);
}
Bonjour,
Lorsque je compile avec la version IDE 1.6.0, ayant remplacé au send et receved par write et read,
j’obtiens :
horloge.ino:15:16: error: variable or field ‘lcd_print’ declared void
horloge.ino:15:16: error: ‘prog_uchar’ was not declared in this scope
horloge.ino:15:28: error: ‘data’ was not declared in this scope
horloge.ino:80:16: error: variable or field ‘lcd_print’ declared void
horloge.ino:80:16: error: ‘prog_uchar’ was not declared in this scope
horloge.ino:80:28: error: ‘data’ was not declared in this scope
Erreur lors de la compilation.
De même, le programme Python tourne en rond et n’abouti à rien :
~ Arduino Clock – Sync Tool ~
Created by SkyWodd
Openning serial port … OK !
Booting up arduino … [et là plus rien……]
J’utilise un DS1302 et un Arduino Uno avec CLK -> A5 et DAT -> A4 …
Help ;-)))
Merci
Essaye de remplacer les prog_uchar par des « unsigned char ». La mise à jour du compilateur a du faire le ménage dans les types PROGMEM.
J’ai remplacé prog_uchar par unisgned char et voici le résultat :
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/WString.h:29:0,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Print.h:26,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Stream.h:26,
from C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire/Wire.h:26,
from horloge.ino:1:
horloge.ino: In function ‘void affichage(Date*)’:
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:129:15: note: in expansion of macro ‘PSTR2’
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:133:15: note: in expansion of macro ‘PSTR2’
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:137:15: note: in expansion of macro ‘PSTR2’
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:141:15: note: in expansion of macro ‘PSTR2’
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:145:15: note: in expansion of macro ‘PSTR2’
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:149:15: note: in expansion of macro ‘PSTR2’
horloge.ino:6:61: error: variable ‘__c’ must be const in order to be put into read-only section by means of ‘__attribute__((progmem))’
horloge.ino:153:15: note: in expansion of macro ‘PSTR2’
Erreur lors de la compilation.
…. oups…
Christophe
Ajoute le mot clef « const » avant la déclaration, j’avais oublié que le nouveau compilateur avait remis les choses au propre de ce côté là aussi.
Bonjour,
Super ton tuto’.
Peux tu me dire pourquoi tu as privilégié le langage python au langage c pour faire la mise à jour du DS1307 ?
Parce que c’est simple à écrire, simple à exécuter et multiplateformes.
bonjour
bravo pour tous le travail que vous faite
pouver vous m’aider
pour afficher l’heure sur un ecran GLCD lib=
tous les exemple sont en serial print
ou
en lcd.print
comment faire pour les convertir en
myGLCD.print
merci
Si la lib c’est vraiment GLCD (du playground arduino.cc) :
quelqu’un sais où je peux télécharger la librairie Wire svp ?
Elle est inclue de base dans l’ide Arduino.
salut
oui
ça je sais faire
mais il faut afficher une variable
exemple
////
lcd.print(RTC.get(DS1307_HR,true));
lcd.print(« H »);
lcd.print(RTC.get(DS1307_MIN,false));
//////
.myGLCDprint(RTC.get(DS1307_HR,true),10,10);
la il y’a erreur
comment faire pour myLGCD ?
Essaye de passer par une sprtinf(), pas sur que ça marche mais on sait jamais.
char str[32];
sprintf(str, ‘%s H’, RTC.get(DS1307_HR, true))
myGLCD.print(str, 10, 10);
bonjour
oui j’ai pas mal d »exemples
mais je n’arrive pas a les inserer dans le code
car moi et la programmation on est vraiment pas copain
plutot electronique
est dans setup ou loop
ou avant
Bonjour,
J’utilise l’ide 1.6.3 et Progmen pose des problèmes de compilation.
Peux-tu apporter plus de précisions dans la réponse que tu as déjà fait. :
« remplacer les prog_uchar par des « unsigned char ». » dans la fonction lcd_print ?
« Ajoute le mot clef « const » avant la déclaration » quelle déclaration ? toujours dans lcd_print ?
La ligne #define PSTR2(2) …. parait bien complexe peux-tu la décrire .
Sinon, bravo pour tous les tutos que tu réalise.
>> « remplacer les prog_uchar par des « unsigned char ». » dans la fonction lcd_print ?
Recherche, « prog_uchar », Remplacer par « unsigned char ». C’est pas plus compliqué.
>> « Ajoute le mot clef « const » avant la déclaration » quelle déclaration ? toujours dans lcd_print ?
Devant la déclaration de la constante PROGMEM.
Exemple : const unsigned char toto PROGMEM = …….
>> La ligne #define PSTR2(2) …. parait bien complexe peux-tu la décrire
C’est une fonction pre-processeur qui ajoute une constante à la volé à chaque appel de PSTR2 dans le code.
C’est tiré d’une doc de ATMEL, c’est de la magie noire sauce GCC que je ne peux moi même expliquer.
Par contre avec le changement de version du compilateur dans l’ide arduino, il va surement falloir faire une petite modif (ajouter un const) :
Bonjour,
Le transfert s’effectue correctement sur une carte Due, si je transfert vers une carte Mega Adk j’ai le même problème, j’ai respecté les remplacements préconisés ci-dessus, voici une des erreurs remontée:
Horloge.ino:153:15: note: in expansion of macro ‘PSTR2’
Horloge.ino:84:6: error: initializing argument 1 of ‘void lcd_print(unsigned char*)’ [-fpermissive]
Horloge.ino:7:89: error: invalid conversion from ‘const unsigned char*’ to ‘unsigned char*’ [-fpermissive]
D’avance merci d’une aide.
Bonjour
voila j’ai regler le probleme
/////////////////////////////////
#include
#include
#include
#include
RTC_Millis RTC;
#define myGLCD_WIDTH 20
#define myGLCD_HEIGHT 4
char myGLDbuf[myGLCD_WIDTH];
uint8_t DsHour ,DsMin ,DsSec;
uint8_t Dsday ,Dsmon ,Dsyear;
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
UTFT myGLCD(ITDB32S,38,39,40,41);
RTC_DS1307 rtc;
void setup()
{
Serial.begin(9600);
Wire.begin();
rtc.begin();
RTC.begin(DateTime(__DATE__, __TIME__));
myGLCD.InitLCD();
myGLCD.clrScr();
}
void GetTimeFromRTC()
{
DateTime now = rtc.now();
DsHour = now.hour();
DsMin = now.minute();
DsSec = now.second();
Dsday = now.day();
Dsmon = now.month();
Dsyear = now.year();
}
void loop(){
GetTimeFromRTC();
myGLCD.setFont(BigFont);
myGLCD.setColor(255,255,0);
myGLCD.print(myGLDbuf,180,30);
sprintf(myGLDbuf, « %.2d:%.2d:%.2d »,Dsday ,Dsmon ,Dsyear);
myGLCD.setColor(255,255,255);
myGLCD.print(myGLDbuf,100,5);
myGLCD.print(« IL est : »,10,30);
sprintf(myGLDbuf, « %.2d:%.2d:%.2d »,DsHour,DsMin,DsSec);
delay(2000);
}
comme ça il tourne bien
a part la date IL
affiche le jour le moi,
mais il affiche 222 pour l’année
y’à il un solution ?
bonjour
ce fichier ou programe ,fonctione t il sur win10 64 bit
merci http://pypi.python.org/pypi/pyserial
Il fonctionne sur Win8.1 64 bits à condition d’installer Python 32 bits. Donc dans les même conditions il devrait fonctionner sur Win10.
Bonjour S’il vous plaît, je cherche comment Alardueno programmation pour les jours de l’année, ou même pour une seule journée m’a aidé et je vous remercie
smailbouziane22@gmail.com