Go Down

Topic: RGB couleur affiché sur lcd avec une telecommande (Read 391 times) previous topic - next topic

AdraKK

Bonjour je tente de créer un système qui, avec une télécommande change la couleur d'une RGB tout en affichant le nom de la couleur sur un lcd
Mais rien ne passe a l'appuie du bouton voici mon code:

Code: [Select]
#include <LiquidCrystal.h>                                                                                                          //inclue la bibliotheque du lcd

#include <IRremote.h>                                                                                                               //inclue la blibliotheque de l'infrarouge
#include <IRremoteInt.h>


int receiver = 7;                                                                                                                   //receveur IR sur pin 7

const int rs = 12, en = 11, d4= 5, d5 = 4, d6 = 3, d7 = 2;                                                                          //attribue des pins au lcd

const byte PIN_LED_R = 8;                                                                                                           //couleur rouge de la RGB sur le pin 8
const byte PIN_LED_G = 9;                                                                                                           //couleur verte de la RGB sur le pin 9
const byte PIN_LED_B = 10;                                                                                                          //couleur bleue de la RGB sur le pin 10

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);                                                                                          //initialise le lcd

IRrecv irrecv(receiver);                                                                                                            //initialise le recepteur IR
decode_results results;                                                                                                             //initialise le decodage de l'IR

void setup()                                                                                                                          //Setup de démarage
{
    lcd.begin(16, 2);                                                                                                               //allume le lcd
   
    irrecv.enableIRIn();                                                                                                            //allume L'IR
   
    pinMode(PIN_LED_R, OUTPUT);
    pinMode(PIN_LED_G, OUTPUT);
    pinMode(PIN_LED_B, OUTPUT);
   
    displayColor(0, 0, 0);                                                                                                          //met la RBG sur "etteinte"
}



void translateIR()
{
    switch(results.value)

    {
        case 0xFFA25D: displayColor(255, 0, 0); lcd.print("     ROUGE"); delay(2000); lcd.clear(); break;                            //en cas d'appuis sur le bouton power met la RBG en rouge
                                                                                                                                    //affiche rouge sur le lcd puis au bout de 2s l'etteint
        default:
          Serial.println("Other Button");                                                                                           //si un autre bouton est préssé "Other button" s'affiche (sur logiciel)
         
    }

  delay(1000);
}

void displayColor(byte r, byte g, byte b)                                                                                         
    analogWrite(PIN_LED_R, r);
    analogWrite(PIN_LED_G, g);
    analogWrite(PIN_LED_B, b);
}


void loop()
{
 
}

infobarquee

pourquoi ouvrir un nouveau topic au lieu de continuer sur le 1er ICI
AUCUNE AIDE PAR MP

fdufnews

Tu ferais bien de regarder les exemples livrés avec la librairie IRremote.
Tu n'appelles pas la fonction qui vérifie si un message est arrivé, ni celle qui interprète le message reçu.
A minima, loop() devrait avoir cette allure:
Code: [Select]
void loop() {
  if (irrecv.decode(&results)) {
    Serial.println(results.value, HEX);
    irrecv.resume(); // Receive the next value
  }
}
Pour ton application le Serial.print() devrait être remplacé par ta fonction translateIR()

Go Up