Je travail sur la réalisation d'une "led pov display" dans le but de creer l'illusion de voir l'heure.
Je suis tombé sur un code que j'essaie de modifier afin de permettre l'utilisation d'une commande pour régler l'heure, cependant les valeurs qui doivent être afficher ne le sont pas.
#include <IRremote.h>;
const char DIN_RECEPTEUR_INFRAROUGE =17;
//broche de lecture de capteur infrarouge
IRrecv monRecepteurInfraRouge (DIN_RECEPTEUR_INFRAROUGE);
//instance
decode_results messageRecu;
// decode la valeur reçu par le capteur dans la variable messageRecu
/************************************
******* tableau de valeur lu ********
*********** par les broches *********
************** de sortie ************
************************************/
int _[] = {0,0,0,0,0,0,0,0};
int num0[] = { 0,1,1,1,1,1,1,0, 1,1,1,1,1,1,1,1, 1,1,0,0,0,0,1,1, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0};
int num1[] = {0,0,0,0,0,0,0,0, 0,1,1,1,1,1,1,0, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0, 0,0,0,0,0,0,0,0};
int num2[] = {1,1,0,1,1,1,1,1, 1,1,0,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,0,1,1, 1,1,1,1,1,1,0,1};
int num3[] = {1,1,0,1,1,0,1,1, 1,1,0,1,1,0,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1};
int num4[] = {0,1,1,1,1,0,0,0, 1,1,1,1,1,0,0,0, 0,0,0,1,1,0,0,0, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0};
int num5[] = {1,1,1,1,1,0,1,1, 1,1,1,1,1,0,1,1, 1,1,1,1,1,1,1,1, 1,1,1,1,1,0,1,1, 1,1,1,1,1,0,1,1};
int num6[] = {1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1, 1,1,0,1,1,0,1,1, 1,1,0,1,1,1,1,1, 1,1,0,1,1,1,1,1};
int num7[]={1,0,0,0,0,0,0,0, 1,0,0,0,1,0,0,0, 1,0,0,0,1,0,0,0, 1,0,0,1,1,1,1,1, 1,1,1,0,1,0,0,0};
int num8[] = {0,1,1,1,0,1,1,0, 1,1,1,1,1,1,1,1, 1,1,0,1,1,0,1,1, 1,1,1,1,1,1,1,1, 0,1,1,1,0,1,1,0};
int num9[] = {0,1,1,1,0,0,1,0, 1,1,1,1,1,0,1,1, 1,1,0,1,1,0,0,1, 1,1,1,1,1,1,1,1, 0,1,1,1,1,1,1,0};
int DP []={0,0,0,0,0,0,0,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,1,1,0,0,1,1,0, 0,0,0,0,0,0,0,0};
// déclaration des sorties
int LED1 = 2;
int LED2 = 3;
int LED3 = 4;
int LED4 = 5;
int LED5 = 6;
int LED6 = 7;
int LED7 = 8;
int LED8 = 9;
int letterSpace,h1,h2,m1,m2,s1,s2;
int dotTime;
//variable de conversion
int hours1[40];
int hours2[40];
int minutes1[40];
int minutes2[40];
int secondes1[40];
int secondes2[40];
//variables
int t,u,v,w,x,z,init1=0,init2=0,init3=0,init4=0,init5=0,init6=0;
int n;
void setup() {
//préparation du moniteur série
Serial.begin(9600);
//déclaration des sorties
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LED4,OUTPUT);
pinMode(LED5,OUTPUT);
pinMode(LED6,OUTPUT);
pinMode(LED7,OUTPUT);
pinMode(LED8,OUTPUT);
//Put your setup code here, to run once:
//monRecepteurInfraRouge.enableIRIn();
//monRecepteurInfraRouge.blink13(true);
//espace entre chaque chiffre
letterSpace = 6;
//espace compris dans la composition d'un chiffre
dotTime =1;
n=0;
//allume toutes les led avant d'entrer dans la boucle infini
/*for (int i=2; i<=8; i++)
{
digitalWrite(i,HIGH);
delay(1000);
}*/
}
void loop() {
if (monRecepteurInfraRouge.decode(&messageRecu))
{
if (messageRecu.value == 0xFF6897)
{
n++ ;
}
delay(500);
monRecepteurInfraRouge.resume();
}
conversion ();
switch (n)
{ case 0:
printClock (hours1);
printClock (_);
printClock (hours2);
printClock (DP);
printClock (minutes1);
printClock (_);
printClock (minutes2);
break;
case 1:
//temps_ralenti();
//regler();
break;
}
//;//Put your main code here, to run repeatedly:
}
/************************************
******** fonction conversion ********
************************************/
void conversion()
{
for (z=init6;z>=9;z++)
{
for (int j=0; j<=39; j++)
{
int* alpha[]={&num0[j],&num1[j],&num2[j],&num3[j],&num4[j],&num5[j],&num6[j],&num7[j],&num8[j],&num9[j]};
secondes2[j]= *alpha[z];
s2=z;
}
delay(1000); }
for (x=init5;x>=9;)
{
for (int j=0; j<=39; j++)
{
int* alpha[]={&num0[j],&num1[j],&num2[j],&num3[j],&num4[j],&num5[j],&num6[j],&num7[j],&num8[j],&num9[j]};
secondes1[j] = *alpha[x];
s1=x;
}
}
for (w=init4;w>=9;)
{
for (int j=0; j<=39; j++)
{
int* alpha[]={&num0[j],&num1[j],&num2[j],&num3[j],&num4[j],&num5[j],&num6[j],&num7[j],&num8[j],&num9[j]};
minutes2[j] = *alpha[w];
m2=w;
}
}
for (v=init3;v>=9;)
{
for (int j=0; j<=39; j++)
{
int* alpha[]={&num0[j],&num1[j],&num2[j],&num3[j],&num4[j],&num5[j],&num6[j],&num7[j],&num8[j],&num9[j]};
minutes1[j] = *alpha[v];
m1=v;
}
}
for (u=init2;u>=9;)
{
for (int j=0; j<=39; j++)
{
int* alpha[]={&num0[j],&num1[j],&num2[j],&num3[j],&num4[j],&num5[j],&num6[j],&num7[j],&num8[j],&num9[j]};
hours2[j] = *alpha[u];
h2=u;
}
}
for (t=init1; t>=9;)
{
for (int j=0; j<=39; j++)
{
int* alpha[]={&num0[j],&num1[j],&num2[j],&num3[j],&num4[j],&num5[j],&num6[j],&num7[j],&num8[j],&num9[j]};
hours1[j] = *alpha[t];
h1=t;
}
}
if ( s2>9)
{
init6=0;
x++;
}
if ( s1>5)
{
init5=0;
w++;
}
if (m2>9)
{
init4=0;
v++;
}
if (m1>5)
{
init3=0;
u++;
}
if (h2>9)
{
init2=0;
t++;
}
if (h1>2 & h2>3)
{
init1=0;
init2=0;
}
}
/************************************
******* fonction printClock *********
************************************/
//fonction de lecture du tableau
void printClock(int letters[])
{int y;
// lis en sorti les 8 première valeurs du tableau du chiffre que tu as reçu
for (y=0; y<8; y++)
{
digitalWrite(y+2 , letters[y]);
}
delay(dotTime); //temporisation
// lis les 8 valeurs suivantes contenues dans le même tableau
for (y=0; y<8; y++)
{
digitalWrite(y+2 , letters[y+8]);
}
delay(dotTime);
for (y=0; y<8; y++)
{
digitalWrite(y+2 , letters[y+16]);
}
delay(dotTime);
for (y = 0; y<8; y++)
{
digitalWrite(y+2 , letters[y+24]);
}
delay(dotTime);
for (y = 0; y<8; y++)
{
digitalWrite(y+2 , letters[y+32]);
}
delay(dotTime);
// printing the sspace between the letters
//(SExperiments)
for (y=0; y<8; y++)
{
digitalWrite(y+2 , 0);
}
delay(letterSpace);
}
Le resultats que je recherche, c'est pouvoir affecté les différentes valeurs contenu dans les tableaux (num0,...., num9) aux tableaux, (hours1,..... , seconde2)