Luka Code

Likelo 21/31: Kosalela Infrared Remote Control na Arduino | SunFounder Robojax

Likelo 21/31: Kosalela Infrared Remote Control na Arduino | SunFounder Robojax

Libosɛ́ ya ebandeli

Na mateya oyo, tokomona mokili ya kokamwa ya bopɔni ya bapɔni ya infrared (IR) na kotonga projɛ́ ya oyo esengeli na koyeba bilembo oyo ewutaka na télécommande ya momesano na kosalela Arduino. Projɛ́ oyo esengeli na yo koyeba nini butɔni oyo epɛ́sami na télécommande IR mpe kosala makambo ndenge na ndenge, lokola kopelisa buzzer. Boyebi ya kosalela na télécommande IR efungolaka nzela ya mingi mpo na misala mingi, longola kaka na ndako kino na mokili ya bokonzi.

infrare_remote
IR_receiver_pins

Tala makanisi mosusu ya kolendisa mpo na oyo okoki kotonga na teknoloji oyo:

  • Kokitana télécommande ya bato banso: Sala télécommande ya yo moko mpo na TV, système ya audio, to bisaleli mosusu oyo etambwisamaka na IR.
  • Kokamba ndako: Kamba bapɛndɛ, bafani, to bisaleli mosusu na kopɛsa butɔni na télécommande ya momesano.
  • Misala ya kosangana: Tɔnga système ya libateli oyo epelisaka ngonga ya libateli ntango butɔni moko ya sikisiki epɛ́sami.
  • Kokamba robot: Sala na télécommande IR mpo na kokamba botamboli mpe misala ya robot na nzela ya mopɛpɛ.
  • Lisalisi mpo na bato oyo bakoki te: Sala télécommande ya pete, ya butɔni minene mpo na bato oyo bazali na mikakatano ya kotambola.

Bisaleli & Bapɔni

Projɛ́ oyo etongami na bapɔni ya pete, oyo nyonso ezali mingi na kati ya ba kits ya ebandeli lokola kit ya SunFounder 3-in-1. Okosengela:

  • Bɔtɔ ya Arduino (mpe., Uno)
  • Modul ya koyamba IR (mpe., TSOP38238 to mosusu lokola yango)
  • Télécommande IR ya momesano (na batri ya CR2025)
  • Buzzer ya passive
  • Banzela ya jumper mpe breadboard

Mokambi ya Kotonga

ir_remote_control_wiring

Tala mokambi ya kotonga ya pete mpo na projɛ́ oyo. Koyamba IR ezali elembo ya ntina. Ntango okotala liboso ya koyamba oyo ezali na mbilinga, ndenge ya bapɛni ezali boye:

  • Pɛni ya lobɔkɔ ya mobali: Kanga na pɛni ya 5V na Arduino.
  • Pɛni ya kati: Kanga na pɛni ya GND na Arduino.
  • Pɛni ya lobɔkɔ ya mwasi (Signal): Kanga na pɛni ya digital 11 na Arduino.

Lisusu, mpo na eteni ya misala ya projɛ́, kanga nzela ya malamu (ya molai) ya buzzer na pɛni ya digital 2 mpe nzela mosusu na GND.

Bokambi ya Code

Projɛ́ oyo etyelaka motuya na bibliothèque ya IRremote mpo na kosala mosala ya mpasi ya koyeba bilembo ya infrared. Code ekomami na ndenge ya koyeba liboso ba codes ya sikisiki ya télécommande na yo mpe kosalela yango mpo na kopelisa misala. Tokabola bapɔni oyo esengeli na yo kobongola.

Liboso, tosengeli koyeba pɛni oyo nzela ya signal ya koyamba IR ekangami. Oyo ezali configuration ya ntina oyo esengeli na yo kokokisa na kotonga ya nzoto.

const int IR_RECEIVE_PIN = 11;  // Bongola pɛni mpo na koyamba IR

Na fonction setup(), koyamba IR ebandisami na kosalela pɛni oyo tosengeli. Oyo elobaka na bibliothèque ebandela koyoka bilembo na pɛni yango.

IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Bandisa koyamba IR

Mokɔngɔ ya ntina ya misala ezali na loop(). Code etalaka soki butɔni epɛ́sami mpe ekomprenaka yango. Fonction decodeKeyValue() ezali fonction ya momesano oyo ebongolaka code hexadecimal ya télécommande na liloba oyo bato bakoki kososola lokola "POWER" to "MUTE". Oyo ezali eteni oyo okobongola mpo na télécommande na yo. Code ya ndakisa ebandisaka buzzerPin mpe epelisaka yango kaka ntango butɔni "POWER" epɛ́sami.

const int buzzerPin = 2; // Bongola pɛni mpo na buzzer
// ... na kati ya loop()
if (decodedValue == "POWER") {
    digitalWrite(buzzerPin, HIGH); // Pelisa buzzer
} else {
    digitalWrite(buzzerPin, LOW); // Zimisa buzzer
}

Ndenge ya kosalela: Fonction decodeKeyValue() ezali fungóla mpo na kobongola projɛ́ oyo. Mpo na kosalela yango na télécommande na yo, esengeli na yo liboso kotambuisa code na Serial Monitor efungwami. Pɛsa butɔni na télécommande na yo mpe koma valeur hexadecimal oyo ekomami mpo na butɔni nyonso. Na nsima, bongola switch na fonction decodeKeyValue() mpo na kokokisa ba valeurs yango na bankombo ya ntina. Okoki na nsima kosalela bankombo yango na ba if na yo mpo na kopelisa misala ndenge na ndenge, ndenge ndakisa esalaka mpo na butɔni "POWER".

Projɛ́ ya Bomoi & Ndimbola

Ntango code ekomi na Arduino, fungola Serial Monitor na taux ya baud 9600. Loba na télécommande na yo na koyamba IR mpe pɛsa butɔni. Serial Monitor ekolakisa nkombo ya butɔni oyo ekokani (mpe., "POWER", "MUTE"). Mpo na komona misala, pɛsa butɔni "POWER". Okoyoka buzzer ebandi. Soki opɛsi butɔni mosusu, lokola "MUTE", buzzer ekokufa. Oyo elakisaka makanisi ya pete kasi ya makasi: kosalela télécommande mpo na kopelisa ba sorties digital na Arduino na yo.

Bapɔni ya Buku

  • [00:00] Liboso ya kopɛsa mosika na Infrared Remote Control na Arduino
  • [01:25] Likambo ya liboso ya IR Receiver mpe Transmitter
  • [02:24] Kososola module ya IR Receiver mpe kosangisa yango na ba fils
  • [03:31] Kotiya bibliothèque ya IRremote
  • [04:22] Kofungola mpe kososola code ya décodage
  • [07:29] Kotombola code mpe komeka ba touches ya télécommande
  • [08:41] Kobakisa mosala moko: Kokamba buzzer
  • [10:37] Liboso ya ba projets ya IR oyo ezali koya

Images

IR_receiver_pins
IR_receiver_pins
infrare_remote
infrare_remote
ir_remote_control_wiring
ir_remote_control_wiring
904-Lesson 21/31: Arduino code fpor decoding Infrared from remote signal
Langue: C++
/*
Lesson 21/31: Decoding Infrared from remote
Get this code and watch video Download and resource page https://robojax.com/RJT604
YouTube video https://www.youtube.com/watch?v=EAlqaVy8fYY

*/
#include <IRremote.h>

const int IR_RECEIVE_PIN = 11;  // Define the pin number for the IR Sensor
String lastDecodedValue = "";  // Variable to store the last decoded value

void setup() {
  Serial.begin(9600);                                     // Start serial communication at 9600 baud rate
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver
}

void loop() {
  if (IrReceiver.decode()) {
    String decodedValue = decodeKeyValue(IrReceiver.decodedIRData.command);
    if (decodedValue != "ERROR") {
      Serial.println(decodedValue);
      delay(100);
    }
    IrReceiver.resume();  // Enable receiving of the next value
  }
}

String decodeKeyValue(long result)
{
  switch(result){
    case 0x16:
      return "0";
    case 0xC:
      return "1"; 
    case 0x18:
      return "2"; 
    case 0x5E:
      return "3"; 
    case 0x8:
      return "4"; 
    case 0x1C:
      return "5"; 
    case 0x5A:
      return "6"; 
    case 0x42:
      return "7"; 
    case 0x52:
      return "8"; 
    case 0x4A:
      return "9"; 
    case 0x9:
      return "+"; 
    case 0x15:
      return "-"; 
    case 0x7:
      return "EQ"; 
    case 0xD:
      return "U/SD";
    case 0x19:
      return "CYCLE";         
    case 0x44:
      return "PLAY/PAUSE";   
    case 0x43:
      return "FORWARD";   
    case 0x40:
      return "BACKWARD";   
    case 0x45:
      return "POWER";   
    case 0x47:
      return "MUTE";   
    case 0x46:
      return "MODE";       
    case 0x0:
      return "ERROR";   
    default :
      return "ERROR";
    }
}

Mokili na bisika

Pas encore de ressources.

Fichiers📁

Maktabat ya Arduino (zip)