Raadi Koodka

Cashirka 29/31: Gaariga-7 Xakamaynta SunFounder Smart Car iyadoo la isticmaalayo Kontoroolka Fogaanta | Robojax

Cashirka 29/31: Gaariga-7 Xakamaynta SunFounder Smart Car iyadoo la isticmaalayo Kontoroolka Fogaanta | Robojax

Casharka this, waxaan u beddeleynaa gaariga caqliga leh ee SunFounder kaaga mid laga wadoo fogaanta iyadoo la adeegsanayo kontoroolka infrared (IR). Halkii aad ku tiirsan lahayd xiriir fiilada ama app-ka smartphone-ka, waxaad baran doontaa sida loo sawiro badhamada kontoroolka IR caadiga ah si aad u xakamayso dhaqaaqa gaariga—hor, gadaal, leexasho, iyo xataa dhaqdhaqaaqyo gees ah—iyo sidoo kale inaad hagaajiso xawaaraha isla markiiba. Mashruucani waa tallaabo ku habboon oo xigta ka dib markaad barato aasaaska xakamaynta mootada iyo isgaarsiinta IR, maadaama uu isku daro labadaba nidaam hal, isdhexgal ah.

Qiimaha dhabta ah ee adduunka halkan wuxuu ku jiraa fahamka sida loo abuuro interface xakamayn adag, oo saaxiib u ah isticmaalaha ee goobta robotics-ka. Mabaadi'da aad baran doonto waxay si toos ah ugu qusaysaa mashruucyo kala duwan, sida:

  • Dhisidda robot laga wadoo fogaanta oo loogu talagalay hawlo guri oo otomaatig ah, sida bot yar oo gaarsiinaya.
  • Abuurista gaari barnaamij laga dhigi karo tartanka robotics-ka waxbarashada.
  • Horumarinta kontorool fogaanta oo gaar ah oo loogu talagalay slider kamarad ama hab pan-tilt.
  • Tijaabinta interface isticmaale nidaam weyn oo otomaatig ah oo kakan.

Qalabka iyo Qaybaha

Mashruucani wuxuu ku dhisanyahay SunFounder 3-in-1 Arduino kit. Si aad ula socotid, waxaad u baahan doontaa qaybaha hoos ku qoran. Xiriirinta waa toos, waxayna ka sii fidaysaa casharadii hore ee koorsada.

  • SunFounder 3-in-1 Arduino Kit: Tan waxaa ku jira chassis-ka gaariga caqliga leh, board-ka darawalnimada mootada, iyo board-ka Arduino.
  • Kontoroolka Infrared (IR) ee Fogaanta: Kontoroolka caadiga ah ee ku yimaada kit-ka.
  • Qaybta Qaadista IR: Sensor-ka u qaadan doona calaamadaha ka imanaya kontoroolka.
  • LED iyo Resistor 330-ohm: Waxaa loo isticmaalaa calaamad muuqaal ah si loo xaqiijiyo in badh la riixay. (fiidiyowga 04:08)
  • Fiilooyinka Jumper: Si loo sameeyo xiriirinta lagama maarmaanka ah ee breadboard-ka.

Hagaha Xiriirinta

car_9_lesson_29_wriing_for_IR

Ka hor inta aanan gelin koodhka, aan hubinno in qalabka si sax ah loo xiriiriyay. Xiriirinta qaadista IR iyo darawalka mootada waxay la mid tahay casharadii hore ee taxanahan. Si mashruuca looga dhigo mid isdhexgal badan, sidoo kale waxaan ku xiriirin doonaa LED dibadeed oo ku xiran pin 13 sida calaamad jawaab celin muuqaal ah.

Waa kuwan tillaabo-tillaabo hagaha xiriirinta:

  1. Qaadista IR: Qaadista IR waxay leedahay saddex pin. Pin-ka togan wuxuu ku xirmaa raylka 5V ee breadboard-ka. Pin-ka dhulka wuxuu ku xirmaa raylka GND. Pin-ka signal-ka, kaas oo ah pin-ka ugu dambeeya, wuxuu ku xirmaa pin-ka dhijitaalka ah ee 11 ee board-kaaga Arduino. (fiidiyowga 05:29)
  2. LED Dibadeed: Ku xiriir lugta resistor-ka 330-ohm ee pin-ka dhijitaalka ah ee 13 ee Arduino-ga. Ku xiriir lugta kale ee resistor-ka lugta dheer (anode) ee LED-ka. Lugta gaaban (cathode) ee LED-ka waa inay ku xirmaa raylka GND ee breadboard-ka. (fiidiyowga 04:08)
  3. Darawalka Mootada: Afarta pin ee darawalka mootada (A_1B, A_1A, B_1B, B_1A) waxay ku xiran yihiin pin-yada 5, 6, 9, iyo 10 ee Arduino-ga, siday u kala horreeyaan. Qaabkan waxaa lagu daboolay casharadii hore. (fiidiyowga 06:44)

Si aad u aragto tixraac muuqaal ah oo ku saabsan xiriirintan, fadlan fiiri jaantuska xiriirinta ee hoose.

Sharaxaadda Koodhka

Koodhka mashruucan waxaa loo qaabeeyey si uu u noqdo mid fudud oo la fahmi karo. Wuxuu isticmaalaa maktabadda IRremote si uu u qabto hawsha adag ee furfurnaanta calaamadaha IR. Aynu u kala qaadno qaybaha isticmaaluhu wax ka beddeli karo ee aad laga yaabo inaad rabto inaad hagaajiso mashruucyadaada gaarka ah.

Marka hore ee sketch-ka, waxaad ka heli doontaa qeexitaannada pin-ka. Kuwani waa waxyaabaha ugu horreeya ee aad hubinayso haddii aad qalabka ku xiriirtay pin-yo ka duwan kuwa lagu isticmaalay tusaalahan.

const int IR_RECEIVE_PIN = 12;  // Qeex lambarka pin-ka ee Sensor-ka IR
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
  • IR_RECEIVE_PIN: Constant-kani wuxuu qeexayaa pin-ka dhijitaalka ah ee ku xiran pin-ka signal-ka ee qaadistaada IR. Haddii aad ku xiriirtay pin ka duwan, waxaad beddeli lahayd lambarka halkan.
  • A_1B, A_1A, B_1B, B_1A: Constant-yadani waxay u dhigmaan afarta pin ee xakamaynta ee darawalka mootadaada. Waxay xakameeyaan xawaaraha iyo jihada mootada bidix iyo midig.

Marka xigta, waxaad ka heli doontaa doorsoome muhiim ah oo xakameeya dhaqanka gaariga.

int speed = 150;
  • speed: Doorsoomuhu wuxuu dejiyaa xawaaraha bilowga ah ee gaariga. Qiimuhu wuxuu u dhexayn karaa 0 ilaa 255. Mashruucan, waxaad ku beddeli kartaa adigoo isticmaalaya furayaasha "+" iyo "-" ee kontoroolka. Koodhku sidoo kale wuxuu ku jiraa caqli-gal ka hortagaya in xawaaruhu ka bato 255 ama hoos uga dhaco 0. (fiidiyowga 09:22)

Caqli-galka udub dhexaadka ah ee kontoroolka fogaanta waxaa lagu maamulaa shaqada loop(). Marka badh la riixo, shaqada decodeKeyValue() waxay u turjuntaa koodhka IR ee cayriin qaab fudud sida "2" oo ah hor ama "+" oo ah xawaare kor u kaca. Tani waxay ka dhigaysaa weedhaha if ee soo raaca kuwo aad u fudud in la akhriyo oo la beddelo. (fiidiyowga 07:58)

Hawshiyada caadiga ah sida moveForward(), turnRight(), iyo moveLeft() ayaa meesha xakamaynta matoorka ku dhacdo. Hawl kastaa waxay qaadataa speed (xawaaraha) hadda jira sida dood. Tusaale ahaan, moveForward(speed) wuxuu wadi doonaa labada matoore ee hore xawaaraha la cayimay. Farqiga ugu weyn ee u dhexeeya "leexashada" iyo "dhaqaaqa" waa in leexashadu ay wareejiso labada giraangirbood jihooyin iska soo horjeeda, taasoo keenta in gaarigu ku wareego meel isagoo jooga, halka dhaqaaqu uu wareejiyo hal giraangirbood oo keliya, taasoo keenta in gaarigu ku qaanso wareegga giraangirboodka taagan. (fiidiyowga 10:14)

Muuujinta Mashruuca Tooska ah

Marka koodhka la soo geliyo oo gaarigu shido, kontoroolka fog wuxuu noqdaa interface-kaaga koowaad. Muuujinta fiidiyowga ayaa muujinaysa dhaqanno muhiim ah oo dhowr ah:

  • Xakamaynta Xawaaraha: Riixista furaha "+" waxay kordhisaa xawaaraha 50, halka furaha "-" uu yareeyo. Xawaaruhu wuxuu ku xadidan yahay 255 wuxuuna hoos u dhacaa 0 si loo ilaaliyo matoorada. (fiidiyowga 11:56)
  • Dhaqaaq Ku-meel-gaar ah: Markaad riixdo furaha jihooyinka sida "2" (hore) ama "8" (gadaal), gaarigu wuxuu dhaqaaqi doonaa hal ilbiriqsi ka dibna wuu istaagi doonaa si toos ah. Tani waa astaan badbaado oo ku dhex jirta koodhka. (fiidiyowga 13:09)
  • Leexashada iyo Maneeynta: Furayaasha ku habaysan qaab iskutallaab ah ee kontoroolka fog waxay u shaqeeyaan sida joystick. Riixista "4" ama "6" waxay gaariga u leexin doontaa bidix ama midig isagoo jooga. Riixista furayaasha jaantuska ah, sida "1" ama "3", waxay qaban doonaan "dhaqaaq bidix" ama "dhaqaaq midig," taas oo ah leexasho ka sii daran halkaas oo hal giraangirbood uu taagan yahay. (fiidiyowga 16:42)

Waxa laga yaabo inaad ogaato ayaa ah in gaarigu aanu had iyo jeer ku kexayn khad toosan oo qumman. Tan waxaa inta badan keena kala duwanaansho yar oo ku yimaada matoorada ama xiisadda isku xidhka gaariga, taas oo ah sifo caadi ah oo la yaqaan oo ku timid qalabkan. (fiidiyowga 15:14)

Cutubyada

  • [00:00] Hordhac ku saabsan Kontoroolka Fog ee IR ee Gaariga Caqliga leh
  • [01:15] Shuruudaha Hordhaca ah iyo Casharadii Hore ee Loo Baahan Yahay
  • [01:56] Dulmarka Dukumeentiga Mashruuca
  • [02:29] Fahamka Hawlaha Furayaasha Kontoroolka Fog
  • [03:29] Hagaha Isku Xirka Tallaabo-tallaabo ee Qaabilaadda IR iyo LED
  • [05:51] Furista iyo Soo Gelinta Koodhka Mashruuca
  • [07:41] Sharaxaadda Koodhka: Loop, Furista Furayaasha, iyo Ficilada
  • [09:22] Xaddidista Xawaaraha iyo Astaamaha Badbaadada ee Koodhka
  • [10:08] Sharaxaadda Hawlaha Dhaqaaqa Matoorka
  • [11:49] Muuujin Toos ah: Tijaabinta Xakamaynta Xawaaraha iyo Hillaaca LED
  • [13:27] Muuujin Toos ah: Hore, Gadaal, iyo Leexasho
  • [14:31] Muuujin Gaari Oo Dhamaystiran oo leh Awood iyo Dhaqaaq

Sawirro

Car 9 lesson 29 wiring for IR
Car 9 lesson 29 wiring for IR
896-Lesson 29/31: Car-7 Controlling SunFounder Smart Car using Remote Controller
Luqadda: C++
/*
Lesson 29/31: Car-7 Controlling SunFounder Smart Car using Remote Controller
Get this code and watch video Download and resource page https://robojax.com/RJT612

*/
#include <IRremote.h>

const int IR_RECEIVE_PIN = 12;  // Define the pin number for the IR Sensor

const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;


int speed = 150;

void setup() {
  Serial.begin(9600);

  //motor
  pinMode(A_1B, OUTPUT);
  pinMode(A_1A, OUTPUT);
  pinMode(B_1B, OUTPUT);
  pinMode(B_1A, OUTPUT);

  //IR remote
  IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);  // Start the IR receiver // Start the receiver
  Serial.println("REMOTE CONTROL START");

}

void loop() {

  if (IrReceiver.decode()) {
    //    Serial.println(results.value,HEX);
    String key = decodeKeyValue(IrReceiver.decodedIRData.command);
    if (key != "ERROR") {
      Serial.println(key);

      if (key == "+") {
        speed += 50;
      } else if (key == "-") {
        speed -= 50;
      } else if (key == "2") {
        moveForward(speed);
        delay(1000);
      } else if (key == "1") {
        moveLeft(speed);
      } else if (key == "3") {
        moveRight(speed);
      } else if (key == "4") {
        turnLeft(speed);
      } else if (key == "6") {
        turnRight(speed);
      } else if (key == "7") {
        backLeft(speed);
      } else if (key == "9") {
        backRight(speed);
      } else if (key == "8") {
        moveBackward(speed);
        delay(1000);
      }

      if (speed >= 255) {
        speed = 255;
      }
      if (speed <= 0) {
        speed = 0;
      }
      delay(500);
      stopMove();
    }

    IrReceiver.resume();  // Enable receiving of the next value
  }
}

void moveForward(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, speed);
  analogWrite(B_1B, speed);
  analogWrite(B_1A, 0);
}

void moveBackward(int speed) {
  analogWrite(A_1B, speed);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, speed);
}

void turnRight(int speed) {
  analogWrite(A_1B, speed);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, speed);
  analogWrite(B_1A, 0);
}

void turnLeft(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, speed);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, speed);
}

void moveLeft(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, speed);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, 0);
}

void moveRight(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, speed);
  analogWrite(B_1A, 0);
}

void backLeft(int speed) {
  analogWrite(A_1B, speed);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, 0);
}

void backRight(int speed) {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, speed);
}

void stopMove() {
  analogWrite(A_1B, 0);
  analogWrite(A_1A, 0);
  analogWrite(B_1B, 0);
  analogWrite(B_1A, 0);
}


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";
    }
}

Kheyraadka & Tixraacyada

Faylasha📁

Arduino Libraries (zip)