Bonjour,
Tout d'abord j'explique les grande ligne de mon projet:
Je fais un kit led pour ma voiture RC, je veux commander l'éclairage via une télécommande IR.
j'ai prévu 2 led RGB pour les phares et 4 led pour une barre de toit
j'ai fais un programme pour le capteur IR et repérer les codes des touches de la télécommande via le moniteur série:
#include <IRremote.h> // prend en compte la librairie nécessaire à la gestion télécommande infra rouge
int RECV_PIN = 13; // le récepteur infrarouge est câblé en broche 11
IRrecv irrecv(RECV_PIN); // réception de l'information donnée par la télécommande
decode_results results; // Met dans "results" le résultat de l'info donnée par la télécommande
void setup()
{
Serial.begin(9600); // ligne nécessaire pour voir le code sur le moniteur
irrecv.enableIRIn(); // Initialise le récepteur
}
void loop()
{
if (irrecv.decode(&results))
{
Serial.println(results.value, HEX); // affiche la valeur de la touche actionnée en hexadécimal
Serial.println(results.value, DEC); // affiche la valeur de la touche actionnée en décimal
irrecv.resume(); // Recoit la valeur suivante
}
}
J'ai fais un 2èmè programme pour les tester les led:
/* Couleurs (format RGB) */
const byte COLOR_BLACK = 0b000;
const byte COLOR_GREEN = 0b010;
const byte COLOR_BLUE = 0b001;
const byte COLOR_MAGENTA = 0b101;
const byte COLOR_YELLOW = 0b110;
const byte COLOR_WHITE = 0b111;
/* Broches */
const byte PIN_LED_R1 = 2;
const byte PIN_LED_G1 = 3;
const byte PIN_LED_B1 = 4;
const byte PIN_LED_R2 = 5;
const byte PIN_LED_G2 = 6;
const byte PIN_LED_B2 = 7;
const byte PIN_LED_W1 = 8;
const byte PIN_LED_W2 = 9;
const byte PIN_LED_W3 = 10;
const byte PIN_LED_W4 = 11;
// Fonction setup(), appelée au démarrage de la carte Arduino
void setup() {
// Initialise les broches
pinMode(PIN_LED_R1, OUTPUT);
pinMode(PIN_LED_G1, OUTPUT);
pinMode(PIN_LED_B1, OUTPUT);
pinMode(PIN_LED_R2, OUTPUT);
pinMode(PIN_LED_G2, OUTPUT);
pinMode(PIN_LED_B2, OUTPUT);
displayColor(COLOR_BLACK);
pinMode(PIN_LED_W1, OUTPUT);
pinMode(PIN_LED_W2, OUTPUT);
pinMode(PIN_LED_W3, OUTPUT);
pinMode(PIN_LED_W4, OUTPUT);
}
// Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée
void loop() {
/* Code de démonstration RGB */
displayColor(COLOR_GREEN);
delay(5000);
displayColor(COLOR_BLUE);
delay(5000);
displayColor(COLOR_MAGENTA);
delay(5000);
displayColor(COLOR_YELLOW);
delay(5000);
displayColor(COLOR_WHITE);
delay(5000);
displayColor(COLOR_BLACK);
delay(5000);
/* Code de démonstration 4 led blanche */
digitalWrite(PIN_LED_W1, HIGH);
digitalWrite(PIN_LED_W2, HIGH);
digitalWrite(PIN_LED_W3, HIGH);
digitalWrite(PIN_LED_W4, HIGH);
delay(1000);
digitalWrite(PIN_LED_W1, LOW);
digitalWrite(PIN_LED_W2, LOW);
digitalWrite(PIN_LED_W3, LOW);
digitalWrite(PIN_LED_W4, LOW);
delay(1000);
}
/** Affiche une couleur */
void displayColor(byte color) {
// Assigne l'état des broches
// Version cathode commune
digitalWrite(PIN_LED_R1, bitRead(color, 2));
digitalWrite(PIN_LED_G1, bitRead(color, 1));
digitalWrite(PIN_LED_B1, bitRead(color, 0));
digitalWrite(PIN_LED_R2, bitRead(color, 2));
digitalWrite(PIN_LED_G2, bitRead(color, 1));
digitalWrite(PIN_LED_B2, bitRead(color, 0));
}
maintenant j'essais de mixer les deux programmes en voulant que chaque touche de la télécommande serve de bouton ON/OFF.
j'ai essayé comme sa:
#include <IRremote.h>
int RECV_PIN = 13;
IRrecv irrecv(RECV_PIN);
decode_results results;
/* Couleurs (format RGB) */
const byte COLOR_BLACK = 0b000;
const byte COLOR_GREEN = 0b010;
const byte COLOR_BLUE = 0b001;
const byte COLOR_MAGENTA = 0b101;
const byte COLOR_YELLOW = 0b110;
const byte COLOR_WHITE = 0b111;
/* Broches */
const byte PIN_LED_R1 = 2;
const byte PIN_LED_G1 = 3;
const byte PIN_LED_B1 = 4;
const byte PIN_LED_R2 = 5;
const byte PIN_LED_G2 = 6;
const byte PIN_LED_B2 = 7;
const byte PIN_LED_W1 = 8;
const byte PIN_LED_W2 = 9;
const byte PIN_LED_W3 = 10;
const byte PIN_LED_W4 = 11;
// Fonction setup(), appelée au démarrage de la carte Arduino
void setup() {
// Initialise les broches
pinMode(PIN_LED_R1, OUTPUT);
pinMode(PIN_LED_G1, OUTPUT);
pinMode(PIN_LED_B1, OUTPUT);
pinMode(PIN_LED_R2, OUTPUT);
pinMode(PIN_LED_G2, OUTPUT);
pinMode(PIN_LED_B2, OUTPUT);
displayColor(COLOR_BLACK);
pinMode(PIN_LED_W1, OUTPUT);
pinMode(PIN_LED_W2, OUTPUT);
pinMode(PIN_LED_W3, OUTPUT);
pinMode(PIN_LED_W4, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // allumer récepteur IR
}
// Fonction loop(), appelée continuellement en boucle tant que la carte Arduino est alimentée
void loop() {
if (irrecv.decode(&results)) {
switch(results.value)
{
case 0xFFA25D:digitalWrite(PIN_LED_W1,HIGH);HIGH=!HIGH;break;
digitalWrite(PIN_LED_W2,HIGH);HIGH=!HIGH;break;
digitalWrite(PIN_LED_W3,HIGH);HIGH=!HIGH;break;
digitalWrite(PIN_LED_W4,HIGH);HIGH=!HIGH;break; //touche 1 télécommande pour rampe led
case 0xFF629D:displayColor(COLOR_WHITE);HIGH=!HIGH;break; //touche 2 télécommande pour phare white
case 0xFFE21D:displayColor(COLOR_YELLOW);HIGH=!HIGH;break; //touche 3 télécommande pour phare yellow
case 0xFF22DD:displayColor(COLOR_MAGENTA);HIGH=!HIGH;break; //touche 4 télécommande pour phare magenta
case 0xFF02FD:displayColor(COLOR_BLUE);HIGH=!HIGH;break; //touche 5 télécommande pour phare blue
case 0xFFC23D:displayColor(COLOR_GREEN);HIGH=!HIGH;break; //touche 6 télécommande pour phare green
}
irrecv.resume(); // Recoit la prochaine valeur
}
/** Affiche une couleur */
void displayColor(byte color) {
// Assigne l'état des broches
// Version cathode commune
digitalWrite(PIN_LED_R1, bitRead(color, 2));
digitalWrite(PIN_LED_G1, bitRead(color, 1));
digitalWrite(PIN_LED_B1, bitRead(color, 0));
digitalWrite(PIN_LED_R2, bitRead(color, 2));
digitalWrite(PIN_LED_G2, bitRead(color, 1));
digitalWrite(PIN_LED_B2, bitRead(color, 0));
}
quand je compile le code sa me met:
Plusieurs bibliothèque trouvées pour "IRremote.h"
Utilisé : C:\Users\simon\Documents\Arduino\libraries\IRremote
Non utilisé : C:\Users\simon\Documents\Arduino\libraries\arduino_816501
exit status 1
'displayColor' was not declared in this scope