Лекција 24/31: Паметен автомобил Дел 2: Движење напред, назад, лево и десно и контролирање на брзината на автомобилот
Оваа лекција се фокусира на втората фаза од изградбата на вашиот паметен автомобил: преземање контрола над неговото движење користејќи Arduino код. Додека првиот проект можеби го направи автомобилот да се движи на основен начин, ова упатство ве учи како да му наредите на автомобилот да се движи напред, назад, да сврти лево, да сврти десно и да запре со прецизност. Исто така ќе научите како да ја контролирате неговата брзина, овозможувајќи мазно забрзување и успорување. Ова е основен чекор за секој роботика проект, бидејќи ви дава основна логика за создавање посложени автономни однесувања.
Совладувањето на овие контроли за движење отвора свет на можности. Еве неколку практични примени за ова знаење:
- Роботи што следат линија: Користете ги функциите за лево и десно свртување за да го задржите роботот на патека.
- Возила за избегнување пречки: Програмирајте го автомобилот да се движи напред, да запре и да сврти кога ќе открие објект на неговиот пат.
- Истражување со далечинско управување: Комбинирајте ги овие команди со безжичен модул за да го возите автомобилот низ вашата куќа или двор.
- Автоматизирани системи за достава: Создадете робот во мал размер што може да се движи помеѓу поставени точки, запирајќи и стартувајќи по потреба.
Хардвер и компоненти
Овој проект се надоврзува на SunFounder 3-во-1 Arduino комплетот. Не се потребни дополнителни компоненти освен основниот комплет, но ќе треба да поврзете четири дополнителни жици на Arduino за да го контролирате моторниот драјвер. Суштинските компоненти се:
- Arduino Uno (или компатибилна плоча)
- SunFounder Smart Car шасија со мотори
- Плоча за моторен драјвер (вклучена во комплетот)
- Жици за поврзување
- Батериски пакет за автомобилот
- USB кабел за програмирање
Водич за поврзување
Поврзувањето за овој проект е клучно за контролирање на насоката на секој мотор. Видеото објаснува дека четирите жици за контрола на моторот од плочата на драјверот се поврзани со пиновите 5, 6, 9 и 10 на Arduino. Овие пинови се специјални бидејќи поддржуваат модулација на ширина на импулси (PWM), што е суштинско за контрола на брзината.
Во видеото, инструкторот ги поврзува по специфичен редослед користејќи жолти и сини жици, како што е прикажано на дијаграмот подолу.
Клучна безбедносна напомена спомната во видеото е да се исклучи напојувањето на батеријата на автомобилот (црвената жица на 5V и црната жица на GND) додека го програмирате Arduino преку USB. Ова го спречува USB портот да биде преоптоварен и потенцијално да се исклучи.
Објаснување на кодот
Кодот за оваа лекција е структуриран да биде лесен за менување и разбирање. Клучот за контролирање на автомобилот лежи во дефинициите на пиновите на врвот на скицата. Можете да ги промените овие ако одлучите да користите различни пинови на вашиот Arduino.
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
Овие линии ги дефинираат Arduino пиновите поврзани со влезовите на моторниот драјвер. in1 и in2 контролираат еден мотор, додека in3 и in4 го контролираат другиот. Со поставување на овие пинови на HIGH или LOW, ја контролирате насоката на ротација на секој мотор.
За да ја контролирате брзината на автомобилот, кодот користи две сопствени функции: moveForward(int speed) и moveBackwards(int speed). Овие функции примаат целобројна вредност помеѓу 0 и 255 како аргумент. Вредноста 0 го запира моторот, додека 255 е максималната брзина. На пример, за да го движите автомобилот напред со полна брзина, би ја повикале moveForward(255). За да го движите назад полека, би користеле moveBackwards(100).
Видеото исто така демонстрира секвенца на „забрзување“ и „успорување“ користејќи for јамки. Ова е моќна техника за мазно забрзување.
for(int i=0;i<=255;i+=5){
moveForward(i);
delay(100);
}
Оваа јамка започнува со i на 0 и ја зголемува за 5 при секое поминување додека не достигне 255. Секој пат, таа го повикува moveForward(i), постепено зголемувајќи ја брзината на автомобилот. delay(100) обезбедува пауза од 100 милисекунди на секој чекор на брзина, правејќи го забрзувањето видливо. Слична јамка со намалувачка вредност на i се користи за успорување на автомобилот.
Демонстрација на живиот проект
Во видеото, инструкторот го демонстрира проектот во две главни фази. Прво, ги покажува основните движења на автомобилот. Со вчитување на кодот „move“, автомобилот извршува претходно програмирана секвенца: движење напред две секунди, запирање, движење наназад две секунди, запирање, свртување лево, а потоа свртување десно. Ова визуелно потврдува дека поврзувањето и логиката се точни.
Втората демонстрација се фокусира на контрола на брзината. Инструкторот ја вчитува шифрата за „забрзување“, која постепено го забрзува автомобилот напред додека не достигне максимална брзина, а потоа непречено успорува до запирање. Потоа покажува верзија со фиксна брзина, каде автомобилот се движи напред со 255, запира, а потоа се движи наназад со побавна брзина од 100, при што вредностите се печатат на серискиот монитор за проверка.
Поглавја
- [00:00] Вовед во контрола на движењето на автомобилот
- [01:44] Поставување на жиците за контрола преку код
- [02:07] Демонстрација на движење напред и назад
- [03:18] Демонстрација на вртење лево и десно
- [05:05] Поврзување на жици со Arduino пиновите
- [07:00] Објаснување на кодот за контрола на насоката
- [11:44] Вовед во контрола на брзината
- [12:16] Објаснување на кодот за постепено зголемување на брзината
- [14:45] Користење на серискиот монитор за дебагирање
- [17:10] Жива демонстрација на контролата на брзината
- [19:45] Финален тест на отворено и заклучок
/*
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
Things you might need
-
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
Resources & references
-
DocumentationDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kit¶docs.sunfounder.com
-
ExternalPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Files📁
Arduino Libraries (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB