Bonjour,
J'essaye en ce moment de piloter une matrice de 8x8 led avec un trackpad via une arduino. En gros, ce que je veux c'est que la position de mon doigt sur le trackpad s'affiche sur la matrice.
Ayant encore du mal pour gerer la matrice, suis parti de ce code, (qui permet d'afficher un point sur la matrice de led et de le bouger avec deux potentiomètres) puis j'ai fait en sorte que le trackpad serve de capteur
Ca marche, seulement, même si je laisse le code telle quel (sans me servir du trackpad, en restant avec des potentiomètres) les LED brillent très peu.Code:const int row[8] = { 2,7,19,5,13,18,12,16 }; const int col[8] = { 6,11,10,3,17,4,8,9 }; int pixels[8][8]; int x = 5; int y = 5; void setup() { for (int thisPin = 0; thisPin < 8; thisPin++) { pinMode(col[thisPin], OUTPUT); pinMode(row[thisPin], OUTPUT); digitalWrite(col[thisPin], HIGH); } for (int x = 0; x < 8; x++) { for (int y = 0; y < 8; y++) { pixels[x][y] = HIGH; } } } void loop() { readSensors(); refreshScreen(); } void readSensors() { pixels[x][y] = HIGH; x = 7 - map(analogRead(A0), 0, 1023, 0, 7); y = map(analogRead(A1), 0, 1023, 0, 7); pixels[x][y] = LOW; } void refreshScreen() { for (int thisRow = 0; thisRow < 8; thisRow++) { digitalWrite(row[thisRow], HIGH); for (int thisCol = 0; thisCol < 8; thisCol++) { int thisPixel = pixels[thisRow][thisCol]; digitalWrite(col[thisCol], thisPixel); if (thisPixel == LOW) { digitalWrite(col[thisCol], HIGH); } } digitalWrite(row[thisRow], LOW); } }
Je pense avoir compris le code et il me semble que c'est du au faite que dans la fonction "refreshScreen", la fonction "if" (qui, si j'ai bien compris éteint la LED précédement allumé) apparait juste après avoir allumé la LED, donc elle reste allumé très peu de temps a chaques boucle ce qui provoque le faible éclairement.Enfin... c'est ce que je pense
Et effectivement, en mettant un Delay dans cette fonction "if", les LED éclairent plus, mais du coup, les acquisition sont beaucoup plus espacées.
Donc, deja j'aurais voulu savoir si vous pensez que c'est bien le if qui provoque le faible éclairement des LED?
Et en faite, je me demandait si il existait une solution permettant de laisser la led allumée quelques temps sans arreter le programme:
ce que je voudrais c'est que la boucle continue (donc nouvelle acquisition et allumage d'une nouvelle LED) alors que l'autre n'est toujours pas éteinte.
Ainsi, la LED aurait le temps de bien s'allumer et l'acquisition ne serait pas ralentit (et du coup, sa produirait une genre de trainée sur la matrice suivant le geste que j'ai fait...)
... Pensez vous que ce soit possible?
Merci
-----