Bonjour à tous.
J'ai actuellement un projet qui un pour but d'afficher le symbole envoyé d'une télécommande sur une matrice LED.
Le code est presque finit. Actuellement, si j’appuie sur le bouton 0 de la télécommande, 0 s'affiche sur la matrice. Le problème, c'est que quand j'appuie sur le bouton 1, rien ne change ( et inversement).
Voila une capture d’écran de la liaison série.
On peut voir une série de 0, avant que j'appuie sur un bouton, puis une série de 16724175.
Et voila le code:
#include <IRremote.h>
int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
byte zero[]=
{
B00000000,
B00111100,
B00100100,
B00100100,
B00100100,
B00111100,
B00000000,
B00000000,
};
byte un[]=
{
B00000000,
B00010000,
B00110000,
B01010000,
B00010000,
B00010000,
B00000000,
B00000000,
};
const int colonnePins[] = {2, 3, 4, 5, 6, 7, 8, 9};
const int lignePins[] = {10, 11, 12, 15, 16, 17, 18, 19};
void setup() {
Serial.begin(9600);
pinMode(13,INPUT);
irrecv.enableIRIn();
for (int i = 0; i < 8; i++)
{
pinMode(lignePins[i], OUTPUT); // lignes en sorties
pinMode(colonnePins[i], OUTPUT); // colonnes en sorties
}
}
void aff(byte * image, unsigned long duree)
{
unsigned long debut = millis();
while (debut + duree > millis())
{
for(int ligne = 0; ligne < 8; ligne++)
{
digitalWrite(lignePins[ligne],HIGH);
for(int col = 0; col < 8; col++)
{
int situ= 7-col;
boolean pixel =bitRead(image[ligne],col);
if(pixel ==1)
{
digitalWrite(colonnePins[situ],LOW);
}
delayMicroseconds(30);
digitalWrite(colonnePins[situ],HIGH);
}
digitalWrite(lignePins[ligne],LOW);
}
}
}
void loop() {
if (irrecv.decode(&results)); {
Serial.print(results.value);
if(results.value==0xFF6897)
{
aff(zero, 750);
irrecv.resume();
}
if(results.value==0xFF30CF)
{
aff(un,750);
irrecv.resume();
}
}
}
Je ne sais pas d'où cela peut venir.