[Arduino] Piloter un Arduino à l'aide d'une télécommande infrarouge.

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ก.ย. 2024
  • Dans cette vidéo, on voit comment utiliser un Arduino, un récepteur infrarouge et la librairie Arduino IRremote pour décoder le signal d'une télécommande infrarouge et afficher le nom du bouton pressé sur le moniteur série.

ความคิดเห็น • 11

  •  3 ปีที่แล้ว +4

    Le code :
    // Inclure la librairie Arduino-IRremote
    // Sources : github.com/Arduino-IRremote/Arduino-IRremote
    #include
    // Numéro de la "pin" sur laquelle est connecté le capteur infrarouge.
    #define IR_PIN 7
    // Configure l'arduino.
    void setup(){
    // Configure le port série.
    Serial.begin(9600);
    // Configure la librarie IRremote.
    IrReceiver.begin(IR_PIN, DISABLE_LED_FEEDBACK);
    }
    // Boucle
    void loop(){
    // Si on a reçu un message.
    if (IrReceiver.decode()) {
    // On recupère la trame reçue.
    const uint32_t trame = IrReceiver.decodedIRData.decodedRawData;
    Serial.print("Trame = ");
    Serial.println(trame, HEX);
    // Affiche le bouton appuyé.
    boutonAppuye(trame);
    // On dit à la librairie que l'on est pret à recevoir le message suivant.
    IrReceiver.resume();
    }
    }
    // Affiche le bouton appuyé sur le port serie.
    void boutonAppuye(uint32_t trame) {
    // On recupère l'identifiant de la telecommande.
    // Note: on recupère les 16 premiers bits de la trames sur 32 bits.
    const uint16_t identifiantTelecommande = (uint16_t) trame;
    // On recupère le code du bouton pressé.
    // Note: on recupère les 16 derniers bits de la trames sur 32 bits que l'on décale de 16 bits vers la droite.
    const uint16_t codeBouton = (uint16_t) (trame>>16);
    Serial.print("identifiantTelecommande = ");
    Serial.println(identifiantTelecommande, HEX);
    Serial.print("Code bouton = ");
    Serial.println(codeBouton, HEX);
    // Stocke le nombre de fois que l'on a reçu la valeur 0 (bouton maintenu) suite à l'appui sur un bouton.
    // Attention : variable statique, donc non remise à zero quand la fonction est appelée.
    static int boutonMaintenuCompteur = 0;
    // Si le code bouton est 0 (bouton maintenu).
    if(codeBouton == 0) {
    // Si ce n'est pas le premier message "bouton maintenu".
    if(boutonMaintenuCompteur > 0) {
    // Note : on ignore le premier message car il apparait presque à chaque appui.
    // On affiche "maintenu" sur le port série.
    Serial.println("maintenu");
    }
    // On incrémente le compteur.
    boutonMaintenuCompteur++;
    Serial.print("boutonMaintenuCompteur = ");
    Serial.println(boutonMaintenuCompteur, DEC);
    Serial.println("");
    // On arrête la fonction maintenant.
    return;
    }
    else {
    // On remet le compteur à 0;
    boutonMaintenuCompteur = 0;
    Serial.print("boutonMaintenuCompteur = ");
    Serial.println(boutonMaintenuCompteur, DEC);
    }
    // Si c'est la télécommande arduino
    if(identifiantTelecommande == 0xFF00) {
    // On affiche le type de télécommande.
    Serial.println("Télécommande arduino");
    // Switch basé sur le code du bouton.
    switch(codeBouton) {
    // Si le code bouton est 0xBA45
    case 0xBA45:
    // C'est le bouton "power" qui a été pressé.
    Serial.println("Bouton power");
    break;
    case 0xB946:
    Serial.println("Bouton Vol+");
    break;
    case 0xB847:
    Serial.println("Bouton Func/Stop");
    break;
    case 0xBB44:
    Serial.println("Bouton |>|");
    break;
    case 0xF807:
    Serial.println("Bouton v");
    break;
    case 0xEA15:
    Serial.println("Bouton Vol-");
    break;
    case 0xF609:
    Serial.println("Bouton ^");
    break;
    case 0xE916:
    Serial.println("Bouton 0");
    break;
    case 0xE619:
    Serial.println("Bouton EQ");
    break;
    case 0xF20D:
    Serial.println("Bouton ST/REPT");
    break;
    case 0xF30C:
    Serial.println("Bouton 1");
    break;
    case 0xE718:
    Serial.println("Bouton 2");
    break;
    case 0xA15E:
    Serial.println("Bouton 3");
    break;
    case 0xF708:
    Serial.println("Bouton 4");
    break;
    case 0xE31C:
    Serial.println("Bouton 5");
    break;
    case 0xA55A:
    Serial.println("Bouton 6");
    break;
    case 0xBD42:
    Serial.println("Bouton 7");
    break;
    case 0xAD52:
    Serial.println("Bouton 8");
    break;
    case 0xB54A:
    Serial.println("Bouton 9");
    break;
    // Si le code bouton n'est pas valide.
    default:
    Serial.println("Bouton inconnu ou erreur de transmission");
    break;
    }
    }
    // Sinon si c'est la télécommande de TV.
    else if(identifiantTelecommande == 0xFB04) {
    // On affiche le type de télécommande.
    Serial.println("Telecommande TV");
    // Switch basé sur le code du bouton.
    switch(codeBouton) {
    // Si le code bouton est F708
    case 0xF708:
    // C'est le bouton "power" qui a été pressé.
    Serial.println("Bouton power");
    break;
    // Si le code bouton n'est pas valide.
    default:
    Serial.println("Bouton inconnu ou erreur de transmission");
    break;
    }
    }
    // Sinon.
    else {
    // Note : c'est une télécommande qui n'est pas supportée ou il y a une erreur de transmission.
    Serial.println("Télécommande non supportée ou erreur de transmission.");
    }
    Serial.println("");
    }

    • @kingofotters3497
      @kingofotters3497 2 ปีที่แล้ว

      bonjour merci pour cette vidéo très bien expliquer est le tout rapidement :)

    • @christiangirodet7606
      @christiangirodet7606 8 หลายเดือนก่อน

      Bonjour.
      Vraiment pas du tout facile de récupérer le code.
      Salutations.

  • @marcbert2230
    @marcbert2230 2 ปีที่แล้ว

    Super cela m'a permis de tester la télécommande tv de mon voisin qui était supposée en panne

  • @nicolasblum5124
    @nicolasblum5124 ปีที่แล้ว

    Bonjour
    Je viens de testé le tuto et ça fonctionne parfaitement. Ma télécommande Arduino est bien reconnu.
    Par contre je ne sais pas utiliser les codes récupérer dans un nouveau projet pour piloter des leds par exemple
    Aurais tu un exemple de code à tester?
    Merci

  • @christiangirodet7606
    @christiangirodet7606 8 หลายเดือนก่อน

    Bonjour.
    Pour avoir le code il faut tout retaper ?
    Peut-on faire plus simple ?
    Salutations.

  • @bgolfy
    @bgolfy 2 ปีที่แล้ว +1

    MERCI ... une des meilleurs vidéos : simple et bien expliqué.
    Il manque ... comment capturer un numéro de chaîne par exemple .. appui sur "12" puis OK ...
    Mon but par exemple : on appuie sur 12 puis OK pour lancer la tâche A, on appuie sur 185 pour lancer B, et 240 pour lancer C par exemple :) MERCI

  • @TristanPirot
    @TristanPirot ปีที่แล้ว

    petite question c normal que le récepteur IR se mette a chauffer un peut avec 3,3v ?

  • @electronmath8609
    @electronmath8609 3 ปีที่แล้ว

    👍❤️

  • @christiancapelle1444
    @christiancapelle1444 ปีที่แล้ว

    lorsque je passe par le moniteur serie, cela ne fonctionne pas. On dirait que jai un problème de bit 16-32, car le 0F ne s'affiche pas. Je ne sais pas pourquoi parce que je n'ai pas d'erreur et je peux télécharger le croquis (programme). Voici lce que je reçois:Trame = 0 identificationtelecommande = 0, code button = 0, compteurMaintenucompteur = 1, puis toujours en appuyant sur la même touche, je reçois trame BA45FF00, identitianttelecommande = FF00,Code bouton = BA45, boutonMaintenuCompteur=0, Telecommande arduino, bouton poxer et j'appuies, cela change à chaque fois. Je suis sur IDE1.8 (ancienne version) et je suis Windows 11. Je deviens fou, cela fait 15 jours que je me casse la tête. Quelle version de IDE, quelle librairie IRremote (ici, je suis en 3.00 pour suivre le tuto) alors qu'on est à 3.9 ?