Bonjour,
Dans mon projet, l'état logique de 5 capteurs sont traités pour être réutilisés dans un tableau de valeurs.
Le problème c'est que cela ne marche pas, il semblerais que le tableau ne prenne pas en compte la valeur de la variable sauf si elle est déclarée au tout début du programme.
voici le code :
Code:int y0 = 2; int y1 = 3; int y2 = 4; int y3 = 5; int y4 = 6; int val0; int val1; int val2; int val3; int val4; int Y0; int Y1; int Y2; int Y3; int Y4; int dataPin = 9; int latchPin = 11; int clockPin = 10; int clock = 8; int Reset = 7; int x; int y; unsigned char tactile[][8][3] = { {{val0,0,0},{0,val1,0},{0,0,val2},{0,val3,val3},{val4,val4,0},{0,0,0},{0,0,0},{0,0,0}}}; void setup() { for (int i=2; i < 6; i++) { pinMode(i,INPUT);} Serial.begin(9600); pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(clock,OUTPUT); pinMode(Reset,OUTPUT); digitalWrite(Reset,HIGH); delayMicroseconds(5); digitalWrite(Reset,LOW); int val0; int val1; int val2; int val3; int val4; } void run_animation(unsigned char frame_time,unsigned char frames[][8][3],unsigned char num_frames,unsigned char num_loops){ for(int i=0;i<num_loops;i++){ for(x=0;x<num_frames;x++){ for(int z=0;z<frame_time;z++){ for(y=0;y<8;y++){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin,LSBFIRST,frames[x][y][2]); shiftOut(dataPin, clockPin,LSBFIRST,frames[x][y][1]); shiftOut(dataPin, clockPin,LSBFIRST,frames[x][y][0]); digitalWrite(latchPin, HIGH); delayMicroseconds(200); digitalWrite(latchPin, 0); shiftOut(dataPin, clockPin,MSBFIRST,0); shiftOut(dataPin, clockPin,MSBFIRST,0); shiftOut(dataPin, clockPin,MSBFIRST,0); digitalWrite(latchPin, 1); digitalWrite(clock, 1); digitalWrite(clock, 0); } digitalWrite(Reset, 1); digitalWrite(Reset, 0); } } } } void loop() { affectval(); run_animation(1,tactile,1,1); //delay(1000); } void affectval() { Y0 = digitalRead(y0); Y1 = digitalRead(y1); Y2 = digitalRead(y2); Y3 = digitalRead(y3); Y4 = digitalRead(y4); if (Y0 == 0){ val0 = 255;} else{ val0 = 0;} if (Y1 == 0){ val1 = 255;} else{ val1 = 0;} if (Y2 == 0){ val2 = 255;} else{ val2 = 0;} if (Y3 == 0){ val3 = 255;} else{ val3 = 0;} if (Y4 == 0){ val4 = 255;} else{ val4 = 0;} }
Si j'utilise par exemple:
unsigned char tactile[][8][3] = {
{{255,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0}}};
Cela fonctionne.
J’espère avoir été assez précis
Merci
-----