Skip to content

Instantly share code, notes, and snippets.

@Robimek
Last active April 2, 2016 20:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Robimek/35c850484231e580222fd7589b7615e6 to your computer and use it in GitHub Desktop.
Save Robimek/35c850484231e580222fd7589b7615e6 to your computer and use it in GitHub Desktop.
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