Bonjour,
Cela fait plusieurs jours que je bute sur la manière de faire fonctionner un shield LedKeypad Shield acheté chez DF robot:
https://www.dfrobot.com/wiki/index.php/LED_Keypad_Shield_V1.0_SKU:DFR0382
Le code d’exemple proposée avec la bibliothèques fonctionne (les chiffres led s’allument et varient selon les actions sur les Bp associés)
De mon coté, je souhaite parvenir à afficher l’heure sur celui-ci.
-
Pour le obtenir l’heure, j’utilise une RTC DS1307 => la date s’affiche correctement dans le moniteur série
-
l’heure et les minutes sont (je pense?) bien séparées en 4 digits dans les char HHmm[ 0] à [3] (visibles aussi dans le moniteur…)
Mais sur les 4 digits Leds, rien ne s’affiche???
Je pressent que la clé du problème doit se trouver dans le format de la variable à afficher mais étant vraiment débutant en programmation, je ne m’en sort pas…
Voici le code que j’essaie de modifier au grès de mes lectures sur le net, mais sans grand sucé…
//Reveil LED.ino
// definitions pour LCD
#include <Wire.h>
#include <LedKeypad.h>
//Definitions pour RTC
#include "DS1307.h"
char brightness =0;
char buf[5]="2456";
char HHmm[5]="1234";
DS1307 clock;//define a object of DS1307 class
void setup() {
Wire.begin(); //Join the bus as master
///set up of RTC A Laisser en commentaire sauf lorsqu'on veut régler l'heure
clock.begin();
clock.fillByYMD(2017,1,28); //Jan 28,2017
clock.fillByHMS(23,26,00); //23:26 00"
clock.fillDayOfWeek(SAT); //Saturday
clock.setTime(); //write time to the RTC chip */
// demarre le port serie
Serial.begin(9600);
ledkeypad.begin(); /*Enable*/
ledkeypad.setBrightness(3);/*Sets the brightness level*/
ledkeypad.display(2015);/*Display data*/
}
void loop() {
printTime();
delay(1000);
HHmm[0] = (clock.hour / 10);
HHmm[1] = (clock.hour % 10);
HHmm[2] = (clock.minute / 10);
HHmm[3] = (clock.minute % 10);
ledkeypad.display(0,HHmm[0]);
delay(200);
ledkeypad.display(1,HHmm[1]);
delay(200);
ledkeypad.display(2,HHmm[2]);
delay(200);
ledkeypad.display(3,HHmm[3]);
delay(200);
Serial.print(HHmm[0],DEC);
Serial.print(HHmm[1],DEC);
Serial.print(":");
Serial.print(HHmm[2],DEC);
Serial.print(HHmm[3],DEC);
Serial.println(" ");
}
/*Function: Display time on the serial monitor*/
void printTime()
{
clock.getTime();
Serial.print(clock.hour, DEC);
Serial.print(":");
Serial.print(clock.minute, DEC);
Serial.print(":");
Serial.print(clock.second, DEC);
Serial.print(" ");
Serial.print(clock.month, DEC);
Serial.print("/");
Serial.print(clock.dayOfMonth, DEC);
Serial.print("/");
Serial.print(clock.year+2000, DEC);
Serial.print(" ");
//Serial.print(clock.dayOfMonth);
//Serial.print("*");
switch (clock.dayOfWeek)// Friendly printout the weekday
{
case MON:
Serial.print("MON");
break;
case TUE:
Serial.print("TUE");
break;
case WED:
Serial.print("WED");
break;
case THU:
Serial.print("THU");
break;
case FRI:
Serial.print("FRI");
break;
case SAT:
Serial.print("SAT");
break;
case SUN:
Serial.print("SUN");
break;
}
Serial.println(" ");
}
Tout aide sera la bienvenue pour m’aider à donner vie à ces afficheurs et m’éclairer sur ce que je fais mal (ou voire ce que je n’ai pas fait du tout?)
Un grand merci d’avance et au plaisir de vous lire