Ders 24/31: Akıllı Araba Bölüm 2: İleri, Geri, Sol ve Sağ Hareket ve Arabanın Hızını Kontrol Etme
Bu ders, akıllı arabanızı inşa etmenin ikinci aşamasına odaklanır: Arduino kodu kullanarak hareketini kontrol etmek. İlk proje arabayı temel bir şekilde hareket ettirmiş olsa da, bu kılavuz size arabayı hassas bir şekilde ileri, geri, sola, sağa ve durma komutlarını nasıl vereceğinizi öğretir. Ayrıca hızını nasıl kontrol edeceğinizi öğrenecek ve yumuşak hızlanma ile yavaşlama sağlayacaksınız. Bu, herhangi bir robotik proje için temel bir adımdır çünkü daha karmaşık otonom davranışlar oluşturmak için size temel mantığı verir.
Bu hareket kontrollerinde ustalaşmak bir olasılıklar dünyasının kapılarını açar. İşte bu bilgi için birkaç pratik uygulama:
- Çizgi izleyen robotlar: Bir robotu pistte tutmak için sola ve sağa dönüş fonksiyonlarını kullanın.
- Engel önleyici araçlar: Arabayı, yolunda bir nesne algıladığında ileri gitmesi, durması ve dönmesi için programlayın.
- Uzaktan kumandalı keşif: Bu komutları kablosuz bir modülle birleştirerek arabayı evinizin veya bahçenizin etrafında sürün.
- Otomatik teslimat sistemleri: Belirlenen noktalar arasında hareket edebilen, gerektiğinde durup başlayabilen küçük ölçekli bir robot oluşturun.
Donanım ve Bileşenler
Bu proje, SunFounder 3'ü 1 arada Arduino kiti üzerine inşa edilmiştir. Temel kitin ötesinde ek bileşen gerekmez, ancak motor sürücüsünü kontrol etmek için Arduino'ya dört ekstra kablo bağlamanız gerekecektir. Temel bileşenler şunlardır:
- Arduino Uno (veya uyumlu kart)
- Motorlu SunFounder Akıllı Araba şasisi
- Motor sürücü kartı (kite dahildir)
- Jumper kablolar
- Araba için pil paketi
- Programlama için USB kablosu
Bağlantı Kılavuzu
Bu proje için bağlantı, her motorun yönünü kontrol etmek açısından çok önemlidir. Video, sürücü kartındaki dört motor kontrol kablosunun Arduino pinleri 5, 6, 9 ve 10'a bağlandığını açıklar. Bu pinler, hız kontrolü için gerekli olan Darbe Genişlik Modülasyonunu (PWM) destekledikleri için özeldir.
Videoda eğitmen, aşağıdaki şemada gösterildiği gibi sarı ve mavi kablolar kullanarak bunları belirli bir sırayla bağlar.
Videoda bahsedilen kritik bir güvenlik notu, Arduino'yu USB üzerinden programlarken arabanın pil gücünün (5V'a kırmızı kablo ve GND'ye siyah kablo) bağlantısını kesmektir. Bu, USB bağlantı noktasının aşırı yüklenmesini ve potansiyel olarak kapanmasını önler.
Kod Açıklaması
Bu dersin kodu, değiştirilmesi ve anlaşılması kolay olacak şekilde yapılandırılmıştır. Arabayı kontrol etmenin anahtarı, taslağın üstündeki pin tanımlarında yatar. Arduino'nuzda farklı pinler kullanmaya karar verirseniz bunları değiştirebilirsiniz.
const int in1 = 5;
const int in2 = 6;
const int in3 = 9;
const int in4 = 10;
Bu satırlar, motor sürücüsünün girişlerine bağlı Arduino pinlerini tanımlar. in1 ve in2 bir motoru kontrol ederken, in3 ve in4 diğerini kontrol eder. Bu pinleri YÜKSEK veya DÜŞÜK ayarlayarak her motorun dönüş yönünü kontrol edersiniz.
Arabanın hızını kontrol etmek için kod, moveForward(int speed) ve moveBackwards(int speed) adlı iki özel fonksiyon kullanır. Bu fonksiyonlar argüman olarak 0 ile 255 arasında bir tamsayı değeri alır. 0 değeri motoru durdururken, 255 maksimum hızdır. Örneğin, arabayı tam hızda ileri hareket ettirmek için moveForward(255) çağırırsınız. Yavaşça geri hareket ettirmek için moveBackwards(100) kullanırsınız.
Video ayrıca for döngüleri kullanarak bir "hızlanma" ve "yavaşlama" dizisi gösterir. Bu, yumuşak hızlanma için güçlü bir tekniktir.
for(int i=0;i<=255;i+=5){
moveForward(i);
delay(100);
}
Bu döngü i 0'da başlar ve 255'e ulaşana kadar her geçişte 5 artırır. Her seferinde moveForward(i) çağırır ve arabanın hızını kademeli olarak artırır. delay(100), her hız adımında 100 milisaniyelik bir duraklama sağlayarak hızlanmayı görünür kılar. Arabayı yavaşlatmak için i değerini azaltan benzer bir döngü kullanılır.
Canlı Proje Gösterimi
Videoda eğitmen projeyi iki ana aşamada gösterir. İlk olarak, arabanın temel hareketlerini gösterir. "move" kodunu yükleyerek araba önceden programlanmış bir diziyi çalıştırır: iki saniye ileri gitme, durma, iki saniye geri gitme, durma, sola dönme ve ardından sağa dönme. Bu, bağlantıların ve mantığın doğru olduğunu görsel olarak doğrular.
İkinci gösterim hız kontrolüne odaklanır. Eğitmen, aracı maksimum hıza ulaşana kadar kademeli olarak hızlandıran ve ardından yumuşak bir şekilde durana kadar yavaşlatan "hız artırma" kodunu yükler. Ardından sabit hızlı bir sürümü gösterir; araç 255 hızında ileri gider, durur ve ardından 100 gibi daha düşük bir hızda geri gider; değerler doğrulama için Seri Monitör'e yazdırılır.
Bölümler
- [00:00] Araç Hareket Kontrolüne Giriş
- [01:44] Kod Kontrolü için Kablo Bağlantısının Kurulması
- [02:07] İleri ve Geri Hareketin Gösterimi
- [03:18] Sol ve Sağ Dönüşlerin Gösterimi
- [05:05] Arduino Pinlerine Kablo Bağlanması
- [07:00] Yön Kontrolü için Kod Açıklaması
- [11:44] Hız Kontrolüne Giriş
- [12:16] Hız Artırma için Kod Açıklaması
- [14:45] Hata Ayıklama için Seri Monitör Kullanımı
- [17:10] Hız Kontrolünün Canlı Gösterimi
- [19:45] Son Dış Mekan Testi ve Sonuç
/*
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
İhtiyacın olabileceğini düşünüyor
-
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
Kaynaklar ve referanslar
-
BelgelendirmeDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
DışPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Dosyalar📁
Arduino Kütüphaneleri (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB