Somo la 24/31: Gari Mahiri Sehemu ya 2: Kusonga Mbele, Kurudi Nyuma, Kushoto na Kulia na Kudhibiti Kasi ya Gari
Somo hili linazingatia awamu ya pili ya kujenga gari lako la smart: kudhibiti mwendo wake kwa kutumia msimbo wa Arduino. Ingawa mradi wa kwanza unaweza kuwa ulifanya gari kusonga kwa njia ya msingi, mwongozo huu unakufundisha jinsi ya kuamuru gari kusonga mbele, nyuma, kugeuka kushoto, kugeuka kulia, na kusimama kwa usahihi. Pia utajifunza jinsi ya kudhibiti kasi yake, ikiruhusu kuongeza kasi na kupunguza kasi kwa laini. Hii ni hatua ya msingi kwa mradi wowote wa robotiki, kwani inakupa mantiki ya msingi ya kuunda tabia changamano za kujitegemea.
Kufahamu vidhibiti hivi vya mwendo kunafungua ulimwengu wa uwezekano. Hapa kuna matumizi kadhaa ya vitendo kwa maarifa haya:
- Roboti zinazofuata mstari: Tumia kazi za kugeuka kushoto na kulia kuweka roboti kwenye njia.
- Magari ya kuepuka vizuizi: Panga gari kusonga mbele, kusimama, na kugeuka linapogundua kitu kwenye njia yake.
- Uchunguzi wa kudhibitiwa kwa mbali: Changanya amri hizi na moduli ya wireless kuendesha gari kuzunguka nyumba yako au ua.
- Mifumo ya usambazaji ya kiotomatiki: Unda roboti ndogo inayoweza kusonga kati ya pointi zilizowekwa, ikisimama na kuanza inapohitajika.
Vifaa na Sehemu
Mradi huu unajengwa juu ya kit cha SunFounder 3-in-1 Arduino. Hakuna sehemu za ziada zinazohitajika zaidi ya kit cha msingi, lakini utahitaji kuunganisha nyaya nne za ziada kwenye Arduino ili kudhibiti kiendesha motor. Sehemu muhimu ni:
- Arduino Uno (au bodi inayooana)
- Chasi ya SunFounder Smart Car yenye motors
- Bodi ya kiendesha motor (iliyojumuishwa kwenye kit)
- Nyaya za jumper
- Kifurushi cha betri cha gari
- Kebo ya USB ya kupanga
Mwongozo wa Wiring
Wiring ya mradi huu ni muhimu kwa kudhibiti mwelekeo wa kila motor. Video inaeleza kwamba nyaya nne za kudhibiti motor kutoka kwenye bodi ya kiendesha zimeunganishwa kwenye pini za Arduino 5, 6, 9, na 10. Pini hizi ni maalum kwa sababu zinasaidia Pulse Width Modulation (PWM), ambayo ni muhimu kwa kudhibiti kasi.
Katika video, mwalimu anaziunganisha kwa mpangilio maalum kwa kutumia nyaya za njano na bluu, kama inavyoonyeshwa kwenye mchoro hapa chini.
Ujumbe muhimu wa usalama uliotajwa kwenye video ni kukata nguvu ya betri ya gari (waya nyekundu kwa 5V na waya nyeusi kwa GND) wakati wa kupanga Arduino kupitia USB. Hii inazuia bandari ya USB kusheheni kupita kiasi na kuzimika.
Maelezo ya Msimbo
Msimbo wa somo hili umeundwa kuwa rahisi kubadilisha na kuelewa. Ufunguo wa kudhibiti gari upo kwenye ufafanuzi wa pini juu ya sketch. Unaweza kubadilisha hizi ukiamua kutumia pini tofauti kwenye Arduino yako.
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
Mistari hii inafafanua pini za Arduino zilizounganishwa kwenye viingilio vya kiendesha motor. in1 na in2 zinadhibiti motor moja, wakati in3 na in4 zinadhibiti nyingine. Kwa kuweka pini hizi HIGH au LOW, unadhibiti mwelekeo wa mzunguko wa kila motor.
Ili kudhibiti kasi ya gari, msimbo unatumia kazi mbili maalum: moveForward(int speed) na moveBackwards(int speed). Kazi hizi zinachukua thamani kamili kati ya 0 na 255 kama hoja. Thamani ya 0 inasimamisha motor, wakati 255 ni kasi ya juu zaidi. Kwa mfano, kusonga gari mbele kwa kasi kamili, ungetumia moveForward(255). Kuongeza kasi polepole nyuma, ungetumia moveBackwards(100).
Video pia inaonyesha mlolongo wa "kuongeza kasi" na "kupunguza kasi" kwa kutumia vitanzi vya for. Hii ni mbinu yenye nguvu ya kuongeza kasi kwa laini.
for(int i=0;i<=255;i+=5){
moveForward(i);
delay(100);
}
Kitanzi hiki kinaanza na i kwa 0 na kukiongeza kwa 5 kila mara hadi kufikia 255. Kila wakati, kinatumia moveForward(i), kikiongeza kasi ya gari hatua kwa hatua. delay(100) hutoa pause ya milisekunde 100 katika kila hatua ya kasi, ikifanya kuongeza kasi kuonekana. Kitanzi sawa na thamani ya i inayopungua kinatumiwa kupunguza kasi ya gari.
Maonyesho ya Mradi wa Moja kwa Moja
Katika video, mwalimu anaonyesha mradi katika hatua mbili kuu. Kwanza, anaonyesha mwendo wa msingi wa gari. Kwa kupakia msimbo wa "move", gari linatekeleza mlolongo uliopangwa: kusonga mbele kwa sekunde mbili, kusimama, kurudi nyuma kwa sekunde mbili, kusimama, kugeuka kushoto, na kisha kugeuka kulia. Hii inathibitisha kuona kwamba wiring na mantiki ni sahihi.
Maonyesho ya pili yanalenga udhibiti wa kasi. Mkufunzi anapakia msimbo wa "kuongeza kasi," ambao huongeza kasi ya gari mbele hatua kwa hatua hadi kufikia kasi ya juu na kisha kupunguza kasi vizuri hadi kusimama. Kisha anaonyesha toleo lenye kasi isiyobadilika, ambapo gari husonga mbele kwa 255, linasimama, na kisha kurudi nyuma kwa kasi ya chini ya 100, huku thamani hizo zikichapishwa kwenye Serial Monitor kwa uthibitisho.
Sura
- [00:00] Utangulizi wa Udhibiti wa Mwendo wa Gari
- [01:44] Kuandaa Uunganishaji wa Waya kwa Udhibiti wa Msimbo
- [02:07] Kuonyesha Mwendo wa Mbele na Nyuma
- [03:18] Kuonyesha Mwendo wa Kushoto na Kulia
- [05:05] Kuunganisha Waya kwenye Pini za Arduino
- [07:00] Maelezo ya Msimbo wa Udhibiti wa Mwelekeo
- [11:44] Utangulizi wa Udhibiti wa Kasi
- [12:16] Maelezo ya Msimbo wa Kuongeza Kasi Hatua kwa Hatua
- [14:45] Kutumia Serial Monitor kwa Utatuzi wa Matatizo
- [17:10] Maonyesho ya Moja kwa Moja ya Udhibiti wa Kasi
- [19:45] Jaribio la Mwisho la Nje na Hitimisho
/*
Lesson 24/31: Smart code speeds up
Get this code and watch video Download and resource page https://robojax.com/RJT607
YouTube video https://www.youtube.com/watch?v=QzcUig2L3dM
*/
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println("SunFounder Arduino Course");
Serial.println("Lesson 3: Speed up");
Serial.println("www.Robojax.com");
}
void loop() {
moveForward(255);
Serial.print("Forward at: ");
Serial.println(255);
delay(5000);//for 5 seconds
Serial.println("Stopped ");
moveForward(0);//stop the car
delay(2000);//for 2 seconds
moveBackwards(100);
Serial.print("Reverse at: ");
Serial.println(100);
delay(5000);//for 5 seconds
Serial.println("Stopped ");
moveForward(0);//stop the car
delay(2000);//for 2 seconds
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
void moveBackwards(int speed) {
analogWrite(in1, speed);
analogWrite(in2, 0);
analogWrite(in3, 0);
analogWrite(in4, speed);
}
/*
Lesson 24/31: Smart code speeds up (custom code)
Get this code and watch video Download and resource page https://robojax.com/RJT607
YouTube video https://www.youtube.com/watch?v=QzcUig2L3dM
*/
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
Serial.begin(9600);
Serial.println("SunFounder Arduino Course");
Serial.println("Lesson 3: Speed up");
Serial.println("www.Robojax.com");
}
void loop() {
Serial.println("Loop 1: Speeding Up");
for(int i=0;i<=255;i+=5){
moveForward(i);
Serial.print("i= ");
Serial.println(i);
delay(100);
}
Serial.println("Loop 2: Slowing down ");
for(int i=255;i>=0;i-=5){
moveForward(i);
Serial.print("i= ");
Serial.println(i);
delay(100);
}
}
void moveForward(int speed) {
analogWrite(in1, 0);
analogWrite(in2, speed);
analogWrite(in3, speed);
analogWrite(in4, 0);
}
Common Course Links
Common Course Files
Tänker att du kanske behöver
-
Amazon5V DC motor on Amazonamzn.to
-
Amazon5V DC motor on eBayebay.us
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
-
AliExpress5V DC motor on AliExpresss.click.aliexpress.com
Resurser och referenser
-
DokumentationDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
Extern.Purchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Filer📁
Arduino-bibliotek (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB