Ẹkọ 29/31: Ọkọ̀-7 Ṣiṣakoso Ọkọ̀ Smart SunFounder nipa lilo Oludari Latọna jijin | Robojax
Nínú ẹ̀kọ́ yìí, a óò yí ọkọ̀ ayọ́kẹ́lẹ́ SunFounder rẹ padà sí ọkọ̀ tí a ń darí láti ọ̀nà jíjìn nípa lílo ẹ̀rọ ìsàkóso infrared (IR). Dípò gbígbé ara lé ìsopọ̀ oníwúrà tàbí ohun èlò fóónù, ìwọ yóò kọ́ bí a ṣe ń ṣàwòrán àwọn bọ́tìnì lórí ẹ̀rọ ìsàkóso IR tí ó wọ́pọ̀ láti darí ìṣísẹ̀ ọkọ̀—síwájú, sẹ́yìn, yíyí, àti àní àwọn ìgbésẹ̀ onígun—pẹ̀lú pààtà àtúnṣe ìyára rẹ̀ lórí ìrìn. Iṣẹ́-ọwọ́ yìí jẹ́ ìgbésẹ̀ tí ó tọ̀nà tí ó tẹ̀lé kíkọ́ ìpìlẹ̀ ìdarí mótò àti ìbánisọ̀rọ̀ IR, níwọ̀n bí ó ti darapọ̀ àwọn méjèèjì sí ètò kan ṣoṣo tí ó ní ìbáṣepọ̀.
Iye tí ó wà nínú rẹ̀ fún ayé gidi níbí ni òye bí a ṣe ń ṣẹ̀dá ìdarí tí ó lágbára, tí ó rọrùn fún olùṣàmúlò fún pẹ́tẹ́ẹ̀sì róbọ́tì. Àwọn ìlànà tí ìwọ yóò kọ́ wà ní ìbámu pẹ̀lú ọ̀pọ̀lọpọ̀ iṣẹ́-ọwọ́, bíi:
- Kíkọ́ róbọ́tì tí a ń darí láti ọ̀nà jíjìn fún àwọn iṣẹ́ ìṣàkóso ilé, bíi róbọ́tì ìfiranṣẹ́ kékeré.
- Ṣíṣẹ̀dá ọkọ̀ tí a lè ṣètò fún àwọn ìdíje róbọ́tì ẹ̀kọ́.
- Dídàgbàsókè ẹ̀rọ ìsàkóso àdáni fún ẹ̀rọ yíyọ kámẹ́rà tàbí ẹ̀rọ pan-tilt.
- Ṣíṣe àpẹẹrẹ ojú ìdarí fún ètò aládàáṣe tí ó tóbi, tí ó díjù.
Ohun èlò àti Àwọn Ẹ̀yà
Iṣẹ́-ọwọ́ yìí gbé ara rẹ̀ lórí SunFounder 3-in-1 Arduino kit. Láti tẹ̀lé, ìwọ yóò nílò àwọn ẹ̀yà tí a kọ sílẹ̀ nísàlẹ̀. Ìsopọ̀ oníwúrà rọrùn, tí ó ń gbòòrò láti àwọn ẹ̀kọ́ tí ó ti kọjá nínú ìdánilẹ́kọ̀ọ́.
- SunFounder 3-in-1 Arduino Kit: Èyí ní ẹ̀yà ọkọ̀ ayọ́kẹ́lẹ́, bọ́ọ̀dù ìdarí mótò, àti bọ́ọ̀dù Arduino.
- Ẹ̀rọ Ìsàkóso Infrared: Ẹ̀rọ ìsàkóso tí ó wọ́pọ̀ tí ó wà nínú kit.
- IR Receiver Module: Ẹ̀rọ ìmọ̀ tí yóò túmọ̀ àwọn àmì láti ọ̀dọ̀ ẹ̀rọ ìsàkóso.
- LED àti 330-ohm Resistor: Wọ́n lò ó gẹ́gẹ́ bí àmì ìríran láti fi ìdánilójú pé a ti tẹ bọ́tìnì kan. (nínú fídíò ní 04:08)
- Jumper Wires: Fún ṣíṣe àwọn ìsopọ̀ tí a nílò lórí breadboard.
Ìtọ́sọ́nà Ìsopọ̀ Oníwúrà
Kí a tó wọ inú kóòdù, jẹ́ kí a rí i dájú pé a ti so ohun èlò pọ̀ dáradára. Ìsopọ̀ oníwúrà fún IR receiver àti motor driver bá àwọn ẹ̀kọ́ tí ó ti kọjá ní ìdánilẹ́kọ̀ọ́ yìí mu. Láti mú iṣẹ́-ọwọ́ náà ní ìbáṣepọ̀ púpọ̀ sí i, a óò tún so LED òde kan pọ̀ sí pin 13 gẹ́gẹ́ bí àmì ìsọfúnni ìríran.
Èyí ni ìtọ́sọ́nà ní ìgbésẹ̀-ìgbésẹ̀ sí àwọn ìsopọ̀:
- IR Receiver: IR receiver ní àwọn pin mẹ́ta. Pin rere náà sopọ̀ sí 5V rail lórí breadboard. Pin ilẹ̀ náà sopọ̀ sí GND rail. Pin àmì, tí ó jẹ́ pin tí ó kẹ́yìn, sopọ̀ sí pin oní nọ́ńbà 11 lórí bọ́ọ̀dù Arduino rẹ. (nínú fídíò ní 05:29)
- LED Òde: So ẹsẹ̀ kan ti 330-ohm resistor pọ̀ sí pin oní nọ́ńbà 13 lórí Arduino. So ẹsẹ̀ kejì ti resistor pọ̀ sí ẹsẹ̀ gígùn (anode) ti LED. Ẹsẹ̀ kúkúrú (cathode) ti LED yẹ kí ó sopọ̀ sí GND rail lórí breadboard. (nínú fídíò ní 04:08)
- Motor Driver: Àwọn pin mẹ́rin fún motor driver (A_1B, A_1A, B_1B, B_1A) sopọ̀ sí àwọn pin 5, 6, 9, àti 10 lórí Arduino, ní ìtòlẹ́sẹ̀. A ti bo ètò yìí nínú àwọn ẹ̀kọ́ tí ó ti kọjá. (nínú fídíò ní 06:44)
Fún ìtọ́kasí ìríran ti àwọn ìsopọ̀ wọ̀nyí, jọ̀wọ́ tọ́ka sí àwòrán ìsopọ̀ oníwúrà nísàlẹ̀.
Àlàyé Kóòdù
Kóòdù fún iṣẹ́-ọwọ́ yìí jẹ́ èyí tí a ṣe láti rọrùn láti lóye. Ó lo IRremote library láti ṣe iṣẹ́ díjù ti túmọ̀ àwọn àmì IR. Jẹ́ kí a pín àwọn apá tí olùṣàmúlò lè ṣàtúnṣe tí ìwọ lè fẹ́ láti yí padà fún àwọn iṣẹ́-ọwọ́ tirẹ.
Ní ìbẹ̀rẹ̀ sketch, ìwọ yóò rí àwọn ìtumọ̀ pin. Àwọn wọ̀nyí ni ohun àkọ́kọ́ tí ìwọ yẹ kí o ṣàyẹ̀wò bí o bá ti so àwọn ẹ̀yà rẹ pọ̀ sí àwọn pin tí ó yàtọ̀ sí àwọn tí a lò nínú àpẹẹrẹ yìí.
const int IR_RECEIVE_PIN = 12; // Ṣàlàyé nọ́ńbà pin fún IR Sensor
const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;
IR_RECEIVE_PIN: Ìtumọ̀ yìí ṣàlàyé pin oní nọ́ńbà tí ó sopọ̀ sí pin àmì ti IR receiver rẹ. Bí o bá so ọ́ pọ̀ sí pin tí ó yàtọ̀, ìwọ yóò yí nọ́ńbà níbí padà.A_1B,A_1A,B_1B,B_1A: Àwọn ìtumọ̀ wọ̀nyí ṣàwòrán sí àwọn pin ìdarí mẹ́rin lórí motor driver rẹ. Wọ́n ń darí ìyára àti ìtọ́sọ́nà ti àwọn mótò òsì àti ọ̀tún.
Ní ìtẹ̀le, ìwọ yóò rí oníyípadà pàtàkì kan tí ó ń darí ìwà ọkọ̀.
int speed = 150;
speed: Oníyípadà yìí ṣètò ìyára ìbẹ̀rẹ̀ ti ọkọ̀. Iye náà lè wà láàrin 0 sí 255. Nínú iṣẹ́-ọwọ́ yìí, ìwọ lè yí i padà nípa lílo àwọn bọ́tìnì "+" àti "-" lórí ẹ̀rọ ìsàkóso. Kóòdù náà tún ní ìmọ̀ láti ṣèdíwọ́ fún ìyára láti má bá à kọjá 255 tàbí kí ó lọ sí ìsàlẹ̀ 0. (nínú fídíò ní 09:22)
Ìmọ̀ pàtàkì ti ìdarí láti ọ̀nà jíjìn ni a ṣe nínú iṣẹ́ loop(). Nígbà tí a bá tẹ bọ́tìnì kan, iṣẹ́ decodeKeyValue() túmọ̀ kóòdù IR tí ó wà ní ìpìlẹ̀ sí ọ̀rọ̀ tí ó rọrùn bíi "2" fún síwájú tàbí "+" fún ìyára sí i. Èyí mú kí àwọn gbólóhùn if tí ó tẹ̀lé rẹ̀ rọrùn láti kà àti láti yí padà. (nínú fídíò ní 07:58)
Awọn iṣẹ alailẹgbẹ bii moveForward(), turnRight(), ati moveLeft() ni ibi ti iṣakoso motor ṣe waye. Iṣẹ kọọkan gba speed lọwọlọwọ gẹgẹbi ariyanjiyan. Fun apẹẹrẹ, moveForward(speed) yoo wakọ awọn motor mejeeji siwaju ni iyara ti a ṣalaye. Iyatọ pataki laarin "yiyi" ati "gbigbe" ni pe yiyi n yi awọn kẹkẹ mejeeji ni awọn itọnisọna idakeji, ti o fa ọkọ lati yi ni aaye, nigba ti gbigbe n yi kẹkẹ kan ṣoṣo, ti o fa ọkọ lati yi ni ayika kẹkẹ ti o duro. (ninu fidio ni 10:14)
Ifihan Ise Agbeyewo Laaye
Pẹlu koodu ti a gbe soke ati ọkọ ti o wa ni pipa, atako latọna jijin di ojulowo ibaraẹnisọrọ rẹ. Ifihan ninu fidio ṣe afihan diẹ ninu awọn ihuwasi pataki:
- Iṣakoso Iyara: Titẹ bọtini "+" mu iyara pọ si nipasẹ 50, nigba ti bọtini "-" dinku rẹ. Iyara ti wa ni opin ni 255 ati ti o wa ni isalẹ ni 0 lati daabobo awọn motor. (ninu fidio ni 11:56)
- Gbigbe Akojopo: Nigba ti o tẹ bọtini itọnisọna bii "2" (siwaju) tabi "8" (ẹhin), ọkọ yoo gbe fun iṣẹju-aaya kan ati lẹhinna duro laifọwọyi. Eyi jẹ ẹya aabo ti a ṣe sinu koodu. (ninu fidio ni 13:09)
- Yiyi ati Lilọ Kiri: Awọn bọtini ti a ṣeto ni apẹrẹ agbelebu lori atako latọna jijin ṣiṣẹ bii ọpa iṣakoso. Titẹ "4" tabi "6" yoo yi ọkọ si osi tabi ọtun ni aaye. Titẹ awọn bọtini diagonal, bii "1" tabi "3", yoo ṣe "gbigbe si osi" tabi "gbigbe si ọtun," eyiti o jẹ yiyi didasilẹ nibiti kẹkẹ kan ti duro. (ninu fidio ni 16:42)
Ohun kan ti o le ṣe akiyesi ni pe ọkọ ko nigbagbogbo wakọ ni laini taara pipe. Eyi nigbagbogbo jẹ nitori awọn iyatọ kekere ninu awọn motor tabi ifaramọ ti apejọ ọkọ, eyiti o jẹ iwa ti o wọpọ ati deede ti awọn akojọpọ wọnyi. (ninu fidio ni 15:14)
Awọn ipin
- [00:00] Ifihan si Iṣakoso IR Latọna Jijin fun Ọkọ Ọlọgbọn
- [01:15] Awọn Ohun Tó Ṣe Ṣaaju ati Awọn Ẹkọ Ti a Beere Tẹlẹ
- [01:56] Akopọ ti Awọn Iwe Ise Agbeyewo
- [02:29] Loye Awọn Iṣẹ Bọtini Iṣakoso Latọna Jijin
- [03:29] Itọsọna Asopọ Igbesẹ-nipasẹ-Igbesẹ fun Olugba IR ati LED
- [05:51] Ṣiṣii ati Gbigbe Koodu Ise Agbeyewo
- [07:41] Alaye Koodu: Loop, Yiyọ Koodu Bọtini, ati Awọn Iṣe
- [09:22] Ihamọ Iyara ati Awọn Ẹya Aabo ninu Koodu
- [10:08] Alaye Awọn Iṣẹ Gbigbe Motor
- [11:49] Ifihan Laaye: Idanwo Iṣakoso Iyara ati Biba LED
- [13:27] Ifihan Laaye: Siwaju, Ẹhin, ati Yiyi
- [14:31] Ifihan Ọkọ Kikun pẹlu Agbara ati Gbigbe
/*
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";
}
}
Common Course Links
Common Course Files
Ohun ti o le nilo
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Orisun & itọkasi
-
Ita gbangbaPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Fáìlìs📁
Awọn ile-ikawe Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB