Juste pour donner une idée de comment l'allumage des LED est fait en fonction de l'heure, voici le code de calcul de la matrice (avec le cadrant V3):
//matrice calculée. Chaque byte est une ligne de la matrice.
//Chaque bit est une LED de la ligne.
byte row[8];
/*
* calcul de la matrice h: heures, m:minutes, s:secondes (inutilisé)
*/
void calcMatrix(byte h, byte m, byte s){
boolean cha=false;
for(byte r=0;r<8;r++){
row[r]=0;
}
//dian (heure)
if(!(m==0 && (h==0 || h==12))){
row[2] |= B00001000;
}
//cha (moins)
if(m==45 || m==50 || m==55){
row[2] |= B00000001;
h++;
if(h==24){
h=0;
}
cha=true;
}
//yeli (la nuit)
if(h>=1 && h < 5){
row[0] |= B00000011;
}
//zaoshang (tôt le matin)
if(h>=5 && h < 8){
row[0] |= B10100000;
}
//shangwu (tard le matin)
if(h>=8 && h <= 11){
row[0] |= B00100100;
}
//zhongwu (midi)
if(h>=12 && h<14){
row[0] |= B00001100;
}
//xiawu (après-midi)
if(h>=14 && h<18){
row[0] |= B00010100;
}
//wanshang (soir)
if(h>18){
row[0] |= B01100000;
}
//wuye (minuit)
if(h==0){
row[0] |= B00000110;
}
//10h
if((h>=10 && h < 12) ||(h>=22)){
row[1] |= B01000000;
}
//0h
if(h==0){
row[1] |= B10000000;
}
//1h
if(h==1 || h==11 | h==13 || h == 23){
row[1] |= B00010000;
}
//2h
if(h==2 || h==14){
row[1] |= B00001000;
}
//3h
if(h==3 || h==15){
row[1] |= B00000100;
}
//4h
if(h==4 || h==16){
row[1] |= B00000010;
}
//5h
if(h==5 || h==17){
row[1] |= B00000001;
}
//6h
if(h==6 || h==18){
row[2] |= B10000000;
}
//7h
if(h==7 || h==19){
row[2] |= B01000000;
}
//8h
if(h==8 || h==20){
row[2] |= B00100000;
}
//9h
if(h==9 || h==21){
row[2] |= B00010000;
}
//zhong (heure pile)
if(m==0 && h!=0 && h!=12){
row[2] |= B00000100;
}
//ban (demi-heure)
if(m == 30){
row[2] |= B00000010;
}
//minutes
//shi (dizaines de minutes)
if((m>=10 && m!=15 && m!=45 && m!=30 && m!=50 && m!=55) || (m==50 && cha)){
row[3] |= B00000010;
}
//d1
if(m==45 || m==15){
row[3] |= B10000000;
}
//d2
if(m>=20 && m<30){
row[3] |= B01000000;
}
//d3
if(m>=30 && m<40 && m!=30){
row[3] |= B00100000;
}
//d4
if(m>=40 && m!=45 && m<50){
row[3] |= B00001000;
}
//d5
if(m>50 && m != 55){
row[3] |= B00000100;
}
//ke (quart d'heure)
if(m==15 || m==45){
row[3] |= B00010000;
}
//1
if(m%10 == 1){
row[3] |= B00000001;
}
//2
if(m%10 == 2){
row[4] |= B10000000;
}
//3
if(m%10 == 3){
row[4] |= B01000000;
}
//4
if(m%10 == 4 && m!=45){
row[4] |= B00100000;
}
//5
if((m%10 == 5 && m!=15 && m!=45 && m!=55) ||(m==55 && cha)){
row[4] |= B00010000;
}
//6
if(m%10 == 6){
row[4] |= B00001000;
}
//7
if(m%10 == 7){
row[4] |= B00000100;
}
//8
if(m%10 == 8){
row[4] |= B00000010;
}
//9
if(m%10 == 9){
row[4] |= B00000001;
}
}