Radyo Kontrollü Kumanda (RC) ile Arduino Kullanımı
Gerekli Malzemeler:
1 Adet RC Kumanda
1 Adet uyumlu ve bind edilmiş RC Alıcı
1 Adet Arduino kontrolcü
1 Adet SG90 servo (herhangi bir servo olabilir)
1 Adet Led ve 220Ohm direnç
5v Kaynak
Jumper Kablo vs.
Devre Şeması:
Ekleniyor
Arduino Kodu:
#include <Servo.h> //motor pinleri #define MotorL1 9 #define MotorL2 10 #define MotorLE 6 #define MotorR1 7 #define MotorR2 8 #define MotorRE 5 //alıcıdan arduinoya aldığımız kanallar const int ch1=A1; const int ch2=A2; const int ch4=A3; const int ch6=A4; //gerekli değişkenleri tanımladık int servodeger; int leddeger; int ilerideger, motorileri, motorgeri; int donusdeger, motorsag, motorsol; Servo servom; void setup() { Serial.begin(9600); //kanalları tanımladık pinMode(ch1,INPUT); pinMode(ch2,INPUT); pinMode(ch4,INPUT); pinMode(ch6,INPUT); pinMode(2,OUTPUT); //servoyu 3 nolu kanala taktık servom.attach(3); digitalWrite(2,LOW); } void loop() { //değerleri pulsein komutu ile okuyup değişkenlere atadık servodeger = pulseIn (ch4,HIGH); if (servodeger <1550 && servodeger >1450) servodeger=1500; leddeger = pulseIn (ch6,HIGH); donusdeger = pulseIn (ch1,HIGH); ilerideger = pulseIn (ch2,HIGH); servom.write(servodeger); motorileri=map(ilerideger,1920,1080,0,255); motorgeri=map(ilerideger,1080,1920,0,255); motorsag=map(donusdeger,1080,1920,0,255); motorsol=map(donusdeger,1920,1080,0,255); if (leddeger > 1300) {digitalWrite(2,HIGH);} else digitalWrite(2,LOW); if (ilerideger > 1550){ geri(motorgeri);} else if (ilerideger < 1450){ ileri(motorileri);} else if (donusdeger < 1450) {yerindesol(motorsol);} else if (donusdeger > 1550) {yerindesag(motorsag);} else dur(); Serial.print ("Ch1:"); Serial.println (servodeger); Serial.print ("Ch2a:"); Serial.println (motorileri); Serial.print ("Ch2b:"); Serial.println (motorgeri); Serial.print ("Ch6:"); Serial.println (leddeger); Serial.print ("Ch1:"); Serial.println (donusdeger); } void ileri(int ilerigeri){ // Robotun ileri yönde hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi aktif digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi pasif analogWrite(MotorRE, ilerigeri); // Sağ motorun hızı digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi aktif digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi pasif analogWrite(MotorLE, ilerigeri); // Sol motorun hızı } void geri(int ilerigeri){ // Robotun geri hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, LOW); // Sağ motorun ileri hareketi pasif digitalWrite(MotorR2, HIGH); // Sağ motorun geri hareketi aktif analogWrite(MotorRE, ilerigeri); // Sağ motorun hızı digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi pasif digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi aktif analogWrite(MotorLE, ilerigeri); // Sol motorun hızı } void yerindesag(int sag){ // Robotun yerinde sağa dönme hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, HIGH); // Sağ motorun ileri hareketi pasif digitalWrite(MotorR2, LOW); // Sağ motorun geri hareketi aktif analogWrite(MotorRE, sag); // Sağ motorun hızı digitalWrite(MotorL1, LOW); // Sol motorun ileri hareketi aktif digitalWrite(MotorL2, HIGH); // Sol motorun geri hareketi pasif analogWrite(MotorLE, sag); // Sol motorun hızı } void yerindesol(int sol){ // Robotun yerinde sola dönme hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, LOW); // Sağ motorun ileri hareketi aktif digitalWrite(MotorR2, HIGH); // Sağ motorun geri hareketi pasif analogWrite(MotorRE, sol); // Sağ motorun hızı digitalWrite(MotorL1, HIGH); // Sol motorun ileri hareketi pasif digitalWrite(MotorL2, LOW); // Sol motorun geri hareketi aktif analogWrite(MotorLE, sol); // Sol motorun hızı } void dur(){ // Robotun durma hareketi için fonksiyon tanımlıyoruz. digitalWrite(MotorR1, HIGH); digitalWrite(MotorR2, LOW); digitalWrite(MotorRE, LOW); digitalWrite(MotorL1, HIGH); digitalWrite(MotorL2, LOW); digitalWrite(MotorLE, LOW); }
Yorumlar
Yorum Gönder