Tafuta Msimbo

Somo la 24/31: Gari Mahiri Sehemu ya 2: Kusonga Mbele, Kurudi Nyuma, Kushoto na Kulia na Kudhibiti Kasi ya Gari

Somo la 24/31: Gari Mahiri Sehemu ya 2: Kusonga Mbele, Kurudi Nyuma, Kushoto na Kulia na Kudhibiti Kasi ya Gari

24-SunFounder-Car-Speed kwenye lami

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.

26-SunFounder-Car-4-Ultrasonic.mp4_snapshot_00.00.000

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
smarcar_turning_right  juu
smartcar_turning_left juu

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

Bilder

26 SunFounder Car 4 ultrasonic video snapshot 00.00.000
26 SunFounder Car 4 ultrasonic video snapshot 00.00.000
Smartcar turning left
Smartcar turning left
Smartcar turning right
Smartcar turning right
24 SunFounder Car speed on the pavement
24 SunFounder Car speed on the pavement
900-Lesson 24/31: Smart code speeds up
Språk: C++
/*
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);
}
901-Lesson 24/31: Smart code speeds up (Custome code)
Språk: C++
/*
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);
}

Resurser och referenser

Filer📁

Arduino-bibliotek (zip)