Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Adafruit Motor Shield Engel Algılayan Robot
// Yazılım Geliştirme By Robimek - 2015
//oyuncak araba içim
#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>
#include <AFMotor.h>
//motor pinleri
AF_DCMotor direksiyon(1, MOTOR12_8KHZ );
AF_DCMotor arka_motor(2, MOTOR12_8KHZ );
//sensör pinleri
#define USTrigger 6
#define USEcho 7
#define Maksimum_uzaklik 100
Servo servo; //servo motor tanımlama
NewPing sonar(USTrigger, USEcho, Maksimum_uzaklik);//ultrasonik sensör tanımlama
//kullanılacak eleman tanımı
unsigned int uzaklik;
unsigned int on_uzaklik;
unsigned int sol_uzaklik;
unsigned int sag_uzaklik;
unsigned int zaman;
// program ilk çalıştığında sadece bir kez çalışacak programlar
void setup()
{
Serial.begin(9600);
servo.attach(4); //servo pin tanımı
}
// sonsuz döngü
void loop()
{
delay(500);
servo.write(90);
sensor_olcum();
on_uzaklik = uzaklik;
if(on_uzaklik > 35 || on_uzaklik == 0)
{
ileri();
}
else
{
dur();
servo.write(180);
delay(500);
sensor_olcum();
sol_uzaklik = uzaklik;
servo.write(0);
delay(500);
sensor_olcum();
sag_uzaklik = uzaklik;
servo.write(90);
delay(500);
if(sag_uzaklik <sol_uzaklik)
{
sag_geri();
delay(500);
sol_ileri();
delay(500);
ileri();
}
else if(sol_uzaklik <sag_uzaklik)
{
sol_geri();
delay(500);
sag_ileri();
delay(500);
ileri();
}
else
{
geri();
delay(500);
}
}
}
// robotun yön komutları
void ileri()
{
direksiyon.run(RELEASE);
arka_motor.run(FORWARD);
arka_motor.setSpeed(255);
direksiyon.setSpeed(0);
}
void geri()
{
direksiyon.run(RELEASE);
arka_motor.run(BACKWARD);
arka_motor.setSpeed(255);
direksiyon.setSpeed(0);
}
void sol_ileri()
{
direksiyon.run(FORWARD); // SOL İÇİN İLERİ
arka_motor.run(FORWARD);
arka_motor.setSpeed(255);
direksiyon.setSpeed(255);
}
void sol_geri()
{
direksiyon.run(FORWARD);
arka_motor.run(BACKWARD);
arka_motor.setSpeed(255);
direksiyon.setSpeed(255);
}
void sag_ileri()
{
direksiyon.run(BACKWARD);
arka_motor.run(FORWARD);
arka_motor.setSpeed(255);
direksiyon.setSpeed(255);
}
void sag_geri()
{
direksiyon.run(BACKWARD);
arka_motor.run(BACKWARD);
arka_motor.setSpeed(255);
direksiyon.setSpeed(255);
}
void dur()
{
direksiyon.run(RELEASE);
arka_motor.run(RELEASE);
arka_motor.setSpeed(0);
direksiyon.setSpeed(0);
}
// sensörün mesafe ölçümü
void sensor_olcum()
{
delay(50);
zaman = sonar.ping();
uzaklik = zaman / US_ROUNDTRIP_CM;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.