Skip to content

Instantly share code, notes, and snippets.

@Robimek
Last active January 26, 2016 15:56
Show Gist options
  • Save Robimek/5d3fff545aca6cc40a3c to your computer and use it in GitHub Desktop.
Save Robimek/5d3fff545aca6cc40a3c to your computer and use it in GitHub Desktop.
Arduino ile Engel Algılayan Robot Projesi
// Yazılım Geliştirme By Robimek - 2015
//oyuncak araba içim
#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>
//motor pinleri
#define OnMotor_sol 9
#define OnMotor_sag 10
#define ArkaMotor_ileri 11
#define ArkaMotor_Geri 12
//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()
{
//motor çıkışları
pinMode(OnMotor_sol, OUTPUT);
pinMode(OnMotor_sag, OUTPUT);
pinMode(ArkaMotor_ileri, OUTPUT);
pinMode(ArkaMotor_Geri, OUTPUT);
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()
{
digitalWrite(OnMotor_sag, LOW);
digitalWrite(OnMotor_sol, LOW);
digitalWrite(ArkaMotor_Geri, LOW);
digitalWrite(ArkaMotor_ileri, HIGH);
}
void geri()
{
digitalWrite(OnMotor_sag, LOW);
digitalWrite(OnMotor_sol, LOW);
digitalWrite(ArkaMotor_Geri, HIGH);
digitalWrite(ArkaMotor_ileri, LOW);
}
void sol_ileri()
{
digitalWrite(OnMotor_sag, LOW);
digitalWrite(OnMotor_sol, HIGH);
digitalWrite(ArkaMotor_Geri, LOW);
digitalWrite(ArkaMotor_ileri, HIGH);
}
void sol_geri()
{
digitalWrite(OnMotor_sag, LOW);
digitalWrite(OnMotor_sol, HIGH);
digitalWrite(ArkaMotor_Geri, HIGH);
digitalWrite(ArkaMotor_ileri, LOW);
}
void sag_ileri()
{
digitalWrite(OnMotor_sol, LOW);
digitalWrite(OnMotor_sag, HIGH);
digitalWrite(ArkaMotor_ileri, HIGH);
digitalWrite(ArkaMotor_Geri, LOW);
}
void sag_geri()
{
digitalWrite(OnMotor_sol, LOW);
digitalWrite(OnMotor_sag, HIGH);
digitalWrite(ArkaMotor_ileri, LOW);
digitalWrite(ArkaMotor_Geri, HIGH);
}
void dur()
{
digitalWrite(OnMotor_sag, LOW);
digitalWrite(OnMotor_sol, LOW);
digitalWrite(ArkaMotor_ileri, LOW);
digitalWrite(ArkaMotor_Geri, LOW);
}
// sensörün mesafe ölçümü
void sensor_olcum()
{
delay(50);
zaman = sonar.ping();
uzaklik = zaman / US_ROUNDTRIP_CM;
}
// Yazılım Geliştirme By Robimek - 2015
#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>
//motor pinleri
#define SolMotorileri 9
#define SolMotorGeri 10
#define SagMotorileri 11
#define SagMotorGeri 12
//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()
{
//motor çıkışları
pinMode(SolMotorileri, OUTPUT);
pinMode(SolMotorGeri, OUTPUT);
pinMode(SagMotorileri, OUTPUT);
pinMode(SagMotorGeri, OUTPUT);
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)
{
sol();
delay(500);
ileri();
}
else if(sol_uzaklik <sag_uzaklik)
{
sag();
delay(500);
ileri();
}
else
{
geri();
}
}
}
// robotun yön komutları
void ileri()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}
void geri()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}
void sol()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}
void sag()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}
void dur()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, LOW);
}
// sensörün mesafe ölçümü
void sensor_olcum()
{
delay(50);
zaman = sonar.ping();
uzaklik = zaman / US_ROUNDTRIP_CM;
}
@Robimek
Copy link
Author

Robimek commented Jan 26, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment