MAKER MUHENDIS SORU-CEVAP #1
Merhaba Mesut Erkmen Bize Arduino ile uzaktan kumandalı araba ve sağa solan bakan robotun birleştirilip birleştirilemeyeceğini sormuştun. Elimizde olmayan sebeplerden dolayı projeyi deneyimleme şansımız olmadı fakat kodlarını buraya yükleyeceğiz.Öncelikle yapman gerekenler
1- 9. pine bir led bağlamak
2- Echo pinini 6. pine Trig pinini 10. pine bağlamak
3-Son olarak aşağıdaki kodları Arduinoya yüklemek
****Mod Değiştirmek için bluetooth programında yukarıdaki KORNA tuşuna basmak modun değişip değişmediğini ledin yanıp sönmesinden anlayabilirsin***
!! Kodları deneme şansımız olmadığı için emin olamıyoruz fakat siz deneyip bize geri dönerseniz çok memnun oluruz.
!! Bu proje için biraz fazla güç kaynağı kullanmalısınız.
KODLARIMIZ
#include <SoftwareSerial.h> #include <Servo.h> SoftwareSerial mySerial(13, 2); const int trig = 6; const int echo = 10; const int led = 9; Servo servo; int sure = 0; int mesafe = 0; int mesafesol = 0; // mesafe sol’u tanımladık int mesafesag = 0; // mesafe sağ’ı tanımladık #include <AFMotor.h> AF_DCMotor motor1(1, MOTOR12_64KHZ); // motor1 AF_DCMotor motor2(2, MOTOR12_64KHZ); // motor2 void setup() { motor1.setSpeed(255); motor2.setSpeed(255); servo.attach(10); // motor sheildteki servo 1 pini arduinoda 10. pine denk geliyor pinMode(trig , OUTPUT); pinMode(echo , INPUT); pinMode(led , OUTPUT); mySerial.begin(9600); } void loop() { char ch = mySerial.read(); if (ch == 'V'){ digitalWrite(led , HIGH); } if (ch == 'v'){ digitalWrite(led , LOW); } int durum = digitalRead(led); while(durum = 1){ if (ch == 'F') { motor1.run(FORWARD); motor2.run(FORWARD); delay(25); motor1.run(RELEASE); motor2.run(RELEASE); } else { } if (ch == 'B') { motor1.run(BACKWARD); motor2.run(BACKWARD); delay(25); motor1.run(RELEASE); motor2.run(RELEASE); } else { } if (ch == 'R') { motor2.run(FORWARD); motor1.run(BACKWARD); delay(25); motor1.run(RELEASE); motor2.run(RELEASE); } else { } if (ch == 'L') { motor1.run(FORWARD); motor2.run(BACKWARD); delay(25); motor1.run(RELEASE); motor2.run(RELEASE); } else { } if (ch == 'X') { motor1.run(RELEASE); motor2.run(RELEASE); } } while (durum = 0){ servo.write(90); digitalWrite(trig , HIGH); delayMicroseconds(1000); digitalWrite(trig , LOW); sure = pulseIn(echo , HIGH); mesafe = (sure/2) / 28.5 ; if ( mesafe > 20 ) // mesafe 20 den fazlaysa tekerler ileri dolayısıyla araba ileri { motor1.run(FORWARD); motor2.run(FORWARD); } else { motor1.run(RELEASE); // mesafe 20 den yukarı değilse motorlar dursun motor2.run(RELEASE); servo.write(0); // servomuz sola döndü delay(600); digitalWrite(trig , HIGH); delayMicroseconds(1000); digitalWrite(trig , LOW); sure = pulseIn(echo , HIGH); mesafesol = (sure/2) / 28.5 ; // mesafe sol ölçüldü delay(250); servo.write(180); // servomuz sağa döndü delay(750); digitalWrite(trig , HIGH); delayMicroseconds(1000); digitalWrite(trig , LOW); sure = pulseIn(echo , HIGH); mesafesag = (sure/2) / 28.5 ; // mesafe sağ ölçüldü delay(250); servo.write(90); // servomuz eski haline geri döndü delay(750); if (mesafesol > mesafesag) // mesafe solda daha fazla boşluk varsa sağ motor ileri sol geri { motor1.run(BACKWARD); motor2.run(BACKWARD); delay(300); motor1.run(BACKWARD); motor2.run(FORWARD); delay(350); motor1.run(FORWARD); motor2.run(FORWARD); } else if (mesafesag > mesafesol) // mesafe sağda daha fazla boşluk varsa sol mtr ileri sağ geri { motor1.run(BACKWARD); motor2.run(BACKWARD); delay(300); motor1.run(FORWARD); motor2.run(BACKWARD); delay(350 ); motor1.run(FORWARD); motor2.run(FORWARD); } else { motor1.run(BACKWARD); motor2.run(BACKWARD); } } } }
Show Conversion Code Hide Conversion Code Show Emoticon Hide Emoticon