Bonjour à tous.
Il y a quelque mois j'étais venu sur ce forum demander conseil pour mon projet d'horloge de type wordclock.
Depuis ce précédant passage, le projet à bien avancer et la partie "matérielle" est finie. J'ai opté pour une matrice LED allumant des groupes de LED selon le tableau ci-dessous. J'ai également un module rtc. Les ligne 1-3-4-5-6-7 de mon tableau sont inversées avec un transistor. Les ligne de mon table sont placée dans les ports 0 à 7 de mon arduino UNO et les colonnes dans les ports 8 à 12.
J'en suis actuellement au code, et c'est là que mes problèmes apparaissent.
J'arrive bien à traiter les heures pour les convertir en heure "affichée". Par contre, l'affichage matrice pose bien plus de problème. J'ai écris mon code en mode "barbare" sans vrai optimisation, mais il me paraît juste. Il m'affiche n'importe quoi, du style, j'ai régler l'heures de ma carte sur 13h, les LED correspondant aux heures cinq, six, sept, et le re de quatre s'affiche, mais pas l'heure "une".
Voici mon code, en espérant que vous trouverez les problèmes, car perso je suis bloqué.
J'ai enlevé la partie "traitement de l'heure" car sinon le post ferait plus de 9000 caractère, et comme cette partie ne bug pas, je l'ai remplacée par (...)
Merci d'avance pour votre aide
#include<Wire.h>
#include "DS1307.h"
int clock_hour;
int clock_minute;
int clock_calculsupminute;
int clock_supminute;
int clock_calculminute;
int clock_calculhour;
DS1307 clock;
void setup(){
for (int i=0;i<13;i++){
pinMode(i, OUTPUT);
digitalWrite(i,HIGH);
}
digitalWrite(1,LOW);
digitalWrite(7,LOW);
clock.begin();
clock.fillByYMD(2017,11,23);
clock.fillByHMS(13,10,30);
clock.fillDayOfWeek(SAT);
clock.setTime();
Serial.begin(9600);
}
void loop(){
printTime();
}
void printTime(){
clock.getTime();
(...)
if (clock_hour == 1){
digitalWrite (0,LOW);
digitalWrite (8,LOW);
delay(2);
digitalWrite (0,HIGH);
digitalWrite(8,HIGH);
}
if (clock_hour == 2){
digitalWrite (0,LOW);
digitalWrite (9,LOW);
delay(2);
digitalWrite (0,HIGH);
digitalWrite(9,HIGH);
}
if (clock_hour == 3){
digitalWrite (0,LOW);
digitalWrite (10,LOW);
delay(2);
digitalWrite (0,HIGH);
digitalWrite(10,HIGH);
}
if (clock_hour == 3){
digitalWrite (0,LOW);
digitalWrite (11,LOW);
delay(2);
digitalWrite (0,HIGH);
digitalWrite(11,HIGH);
}
if (clock_hour == 4){
digitalWrite (0,LOW);
digitalWrite (12,LOW);
delay(2);
digitalWrite (0,HIGH);
digitalWrite(12,HIGH);
}
if (clock_hour == 4){
digitalWrite (1,HIGH);
digitalWrite (8,LOW);
delay(2);
digitalWrite (1,LOW);
digitalWrite(8,HIGH);
}
if (clock_hour == 5){
digitalWrite (1,HIGH);
digitalWrite (9,LOW);
delay(2);
digitalWrite (1,LOW);
digitalWrite(9,HIGH);
}
if (clock_hour == 6){
digitalWrite (1,HIGH);
digitalWrite (10,LOW);
delay(2);
digitalWrite (1,LOW);
digitalWrite(10,HIGH);
}
if (clock_hour == 7){
digitalWrite (1,HIGH);
digitalWrite (11,LOW);
delay(2);
digitalWrite (1,LOW);
digitalWrite(11,HIGH);
}
if (clock_hour == 8){
digitalWrite (1,HIGH);
digitalWrite (12,LOW);
delay(2);
digitalWrite (1,LOW);
digitalWrite(12,HIGH);
}
if (clock_hour == 9){
digitalWrite (2,LOW);
digitalWrite (8,LOW);
delay(2);
digitalWrite (2,HIGH);
digitalWrite(8,HIGH);
}
if (clock_hour == 10){
digitalWrite (2,LOW);
digitalWrite (9,LOW);
delay(2);
digitalWrite (2,HIGH);
digitalWrite(9,HIGH);
}
if (clock_hour == 11){
digitalWrite (2,LOW);
digitalWrite (10,LOW);
delay(2);
digitalWrite (2,HIGH);
digitalWrite(10,HIGH);
}
if (clock_hour == 12){
digitalWrite (2,LOW);
digitalWrite (11,LOW);
delay(2);
digitalWrite (2,HIGH);
digitalWrite(11,HIGH);
}
if (clock_hour == 12){
digitalWrite (2,LOW);
digitalWrite (12,LOW);
delay(2);
digitalWrite (2,HIGH);
digitalWrite(12,HIGH);
}
digitalWrite (3,LOW);
digitalWrite (8,LOW);
digitalWrite(9,LOW);
delay(2);
digitalWrite (3,HIGH);
digitalWrite (8,HIGH);
digitalWrite(9,HIGH);
if(clock_hour!=0&&clock_hour!=12){
digitalWrite(3,LOW);
digitalWrite(10,LOW);
delay(2);
digitalWrite(3,HIGH);
digitalWrite(10,HIGH);
}
if(clock_minute==15||clock_minute==30){
digitalWrite(3,LOW);
digitalWrite(11,LOW);
delay(2);
digitalWrite(3,HIGH);
digitalWrite(11,HIGH);
}
if(clock_minute<0){
digitalWrite(3,LOW);
digitalWrite(12,LOW);
delay(2);
digitalWrite(3,HIGH);
digitalWrite(12,HIGH);
}
if (clock_hour>1&&clock_hour!=12){
digitalWrite(4,LOW);
digitalWrite(8,LOW);
delay(2);
digitalWrite(4,HIGH);
digitalWrite(8,HIGH);
}
if(clock_minute==10||clock_minute==-10){
digitalWrite(4,LOW);
digitalWrite(9,LOW);
delay(2);
digitalWrite(4,HIGH);
digitalWrite(9,HIGH);
}
if(clock_minute==15||clock_minute==-15){
digitalWrite(4,LOW);
digitalWrite(10,LOW);
delay(2);
digitalWrite(4,HIGH);
digitalWrite(10,HIGH);
}
if(clock_minute==15||clock_minute==-15){
digitalWrite(4,LOW);
digitalWrite(11,LOW);
delay(2);
digitalWrite(4,HIGH);
digitalWrite(11,HIGH);
}
if(clock_hour<-15||clock_hour==20||clock_hour==25){
digitalWrite(4,LOW);
digitalWrite(12,LOW);
delay(2);
digitalWrite(4,HIGH);
digitalWrite(12,HIGH);
}
if(clock_hour<-15||clock_hour==20||clock_hour==25){
digitalWrite(5,LOW);
digitalWrite(8,LOW);
delay(2);
digitalWrite(5,HIGH);
digitalWrite(8,HIGH);
}
if(clock_hour==-25||clock_hour==25){
digitalWrite(5,LOW);
digitalWrite(9,LOW);
delay(2);
digitalWrite(5,HIGH);
digitalWrite(9,HIGH);
}
if(clock_hour==-25||clock_hour==25){
digitalWrite(5,LOW);
digitalWrite(10,LOW);
delay(2);
digitalWrite(5,HIGH);
digitalWrite(10,HIGH);
}
if(clock_supminute>0){
digitalWrite(5,LOW);
digitalWrite(11,LOW);
delay(2);
digitalWrite(5,HIGH);
digitalWrite(11,HIGH);
}
if(clock_supminute==4){
digitalWrite(5,LOW);
digitalWrite(12,LOW);
delay(2);
digitalWrite(5,HIGH);
digitalWrite(12,HIGH);
}
if(clock_supminute>2){
digitalWrite(6,LOW);
digitalWrite(8,LOW);
delay(2);
digitalWrite(6,HIGH);
digitalWrite(8,HIGH);
}
if(clock_supminute>1){
digitalWrite(6,LOW);
digitalWrite(9,LOW);
delay(2);
digitalWrite(6,HIGH);
digitalWrite(9,HIGH);
}
if(clock_hour!=0&&clock_hour!=12){
digitalWrite(6,LOW);
digitalWrite(10,LOW);
delay(2);
digitalWrite(6,HIGH);
digitalWrite(10,HIGH);
}
if(clock_hour==12){
digitalWrite(6,LOW);
digitalWrite(11,LOW);
delay(2);
digitalWrite(6,HIGH);
digitalWrite(11,HIGH);
}
if(clock_minute==30){
digitalWrite(6,LOW);
digitalWrite(12,LOW);
delay(2);
digitalWrite(6,HIGH);
digitalWrite(12,HIGH);
}
if(clock_minute==30){
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
delay(2);
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
}
if(clock_minute<0){
digitalWrite(7,HIGH);
digitalWrite(9,LOW);
delay(2);
digitalWrite(7,LOW);
digitalWrite(9,HIGH);
}
}