Lekcija 24/31: Pametni automobil Dio 2: Kretanje naprijed, nazad, lijevo i desno i kontrola brzine automobila
Ova lekcija se fokusira na drugu fazu izgradnje vašeg pametnog automobila: preuzimanje kontrole nad njegovim kretanjem pomoću Arduino koda. Iako je prvi projekat možda pokrenuo automobil na osnovni način, ovaj vodič vas uči kako da komandujete automobilu da se kreće naprijed, nazad, skreće lijevo, skreće desno i zaustavlja se precizno. Također ćete naučiti kako kontrolisati njegovu brzinu, omogućavajući glatko ubrzanje i usporavanje. Ovo je temeljni korak za svaki robotski projekat, jer vam daje osnovnu logiku za kreiranje složenijih autonomnih ponašanja.
Savladavanje ovih kontrola kretanja otvara svijet mogućnosti. Evo nekoliko praktičnih primjena ovog znanja:
- Roboti koji prate liniju: Koristite funkcije za skretanje lijevo i desno da biste robota držali na stazi.
- Vozila za izbjegavanje prepreka: Programirajte automobil da se kreće naprijed, zaustavlja i skreće kada otkrije objekt na svom putu.
- Daljinski upravljano istraživanje: Kombinirajte ove komande s bežičnim modulom da biste vozili automobil po kući ili dvorištu.
- Automatizirani sistemi dostave: Kreirajte robot malih razmjera koji se može kretati između zadatih tačaka, zaustavljajući se i krećući po potrebi.
Hardver i komponente
Ovaj projekat se nadograđuje na SunFounder 3-u-1 Arduino komplet. Nisu potrebne dodatne komponente osim osnovnog kompleta, ali ćete morati spojiti četiri dodatne žice na Arduino za kontrolu motorskog drajvera. Bitne komponente su:
- Arduino Uno (ili kompatibilna ploča)
- SunFounder Smart Car šasija s motorima
- Ploča motorskog drajvera (uključena u komplet)
- Kratkospojne žice
- Baterijski paket za automobil
- USB kabl za programiranje
Vodič za povezivanje
Povezivanje za ovaj projekat je ključno za kontrolu smjera svakog motora. Video objašnjava da su četiri žice za kontrolu motora s drajverske ploče spojene na pinove 5, 6, 9 i 10 na Arduinu. Ovi pinovi su posebni jer podržavaju Pulse Width Modulation (PWM), što je bitno za kontrolu brzine.
U videu, instruktor ih povezuje određenim redoslijedom koristeći žute i plave žice, kao što je prikazano na dijagramu ispod.
Kritična sigurnosna napomena spomenuta u videu je da isključite napajanje baterije automobila (crvenu žicu na 5V i crnu žicu na GND) dok programirate Arduino putem USB-a. Ovo sprječava preopterećenje USB porta i potencijalno isključivanje.
Objašnjenje koda
Kod za ovu lekciju je strukturiran tako da ga je lako mijenjati i razumjeti. Ključ za kontrolu automobila leži u definicijama pinova na vrhu skice. Možete ih promijeniti ako odlučite koristiti druge pinove na vašem Arduinu.
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
Ove linije definiraju Arduino pinove spojene na ulaze motorskog drajvera. in1 i in2 kontrolišu jedan motor, dok in3 i in4 kontrolišu drugi. Postavljanjem ovih pinova na HIGH ili LOW, kontrolišete smjer rotacije svakog motora.
Za kontrolu brzine automobila, kod koristi dvije prilagođene funkcije: moveForward(int speed) i moveBackwards(int speed). Ove funkcije primaju cjelobrojnu vrijednost između 0 i 255 kao argument. Vrijednost 0 zaustavlja motor, dok je 255 maksimalna brzina. Na primjer, da biste pomaknuli automobil naprijed punom brzinom, pozvali biste moveForward(255). Da biste ga pomaknuli nazad polako, koristili biste moveBackwards(100).
Video također demonstrira sekvencu "ubrzavanja" i "usporavanja" koristeći for petlje. Ovo je moćna tehnika za glatko ubrzanje.
for(int i=0;i<=255;i+=5){
moveForward(i);
delay(100);
}
Ova petlja počinje s i na 0 i povećava ga za 5 pri svakom prolasku dok ne dostigne 255. Svaki put poziva moveForward(i), postepeno povećavajući brzinu automobila. delay(100) pruža pauzu od 100 milisekundi pri svakom koraku brzine, čineći ubrzanje vidljivim. Slična petlja sa smanjenjem vrijednosti i koristi se za usporavanje automobila.
Demonstracija projekta uživo
U videu, instruktor demonstrira projekat u dvije glavne faze. Prvo, pokazuje osnovne pokrete automobila. Učitavanjem "move" koda, automobil izvršava unaprijed programiranu sekvencu: kreće se naprijed dvije sekunde, zaustavlja se, vozi unazad dvije sekunde, zaustavlja se, skreće lijevo, a zatim skreće desno. Ovo vizualno potvrđuje da su povezivanje i logika ispravni.
Druga demonstracija fokusira se na kontrolu brzine. Instruktor učitava kod za "ubrzanje", koji postepeno ubrzava automobil naprijed dok ne dostigne maksimalnu brzinu, a zatim glatko usporava do zaustavljanja. Zatim prikazuje verziju s fiksnom brzinom, gdje se automobil kreće naprijed brzinom 255, zaustavlja se, a zatim vozi unazad sporijom brzinom od 100, pri čemu se vrijednosti ispisuju na Serial Monitor radi provjere.
Poglavlja
- [00:00] Uvod u kontrolu kretanja automobila
- [01:44] Postavljanje ožičenja za kontrolu putem koda
- [02:07] Demonstracija kretanja naprijed i nazad
- [03:18] Demonstracija skretanja lijevo i desno
- [05:05] Povezivanje žica na Arduino pinove
- [07:00] Objašnjenje koda za kontrolu smjera
- [11:44] Uvod u kontrolu brzine
- [12:16] Objašnjenje koda za postepeno povećanje brzine
- [14:45] Korištenje Serial Monitora za otklanjanje grešaka
- [17:10] Živa demonstracija kontrole brzine
- [19:45] Završni test na otvorenom i zaključak
/*
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
Stvari koje bi vam mogle zatrebati
-
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
Resursi i reference
-
DokumentacijaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
EksternoPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Datoteke📁
Arduino biblioteke (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB