Ultrasonik Sensöre Aynı Anda İki İş Yaptırma

s.a kolay gelsin ustadlarım . ben arduinoda engelden kaçan robot yaptım bu roboto lcd panel takacam aynı zamanda aynı sensör ve aynı arduino kartla metre görevinide görecek. fakat ben kodları yazdığımda robot kendi başına normal çalıştı fakat lcd yi taktığımda kodları yazdığıımda kodlarda sıkıntı çıkıyor çünkü iki koddada void setup ve void loop var bu konu hakkında yardımcı olurmusunuz. iyi günler iyi çalışmalar

#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C  lcd(0x27,2,1,0,4,5,6,7);
const int TrigPin = 6;
const int EchoPin = 7;
int mesafe ;
int sure;

void setup()
{
  lcd.begin (16,2);
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
  Serial.begin(9600);
  pinMode(TrigPin , OUTPUT);
  pinMode(EchoPin , INPUT);
}
void loop()
{
  digitalWrite(TrigPin , HIGH);
  digitalWrite(TrigPin , LOW);
  sure = pulseIn (EchoPin , HIGH);
  mesafe = (sure / 2) / 28.5;

  lcd.home();
  lcd.print("Mesafe = ");
  lcd.print((float)mesafe,1);
  lcd.print(" cm ");
  }

bu kodu engelden kaçanaraca nasıl entegre edebilirim hem engeli görünce yön değiştirsin hemde metreyi ölçüp lcd panele yazdırsın. şimdiden teşekkürler iyiçalışmalar

1 Beğeni

bunun loop kısmına
if (mesafe > 20){

Motor_sol;

}
bu kodu biraz daha şekillendirip kullanabilirsin motor sol yazan kısma atıyorum sola dönüp düz gitmesini yada geriye gitmesini sağlayabilirsin.

Projende Başarılar. :smiley:

hocam engelden kaçan kısmının kodunu yazarsan ona metre fonksiyonunu eklemek daha kolay olur yardımcı olurum

cevabınız için teşekkürler.

#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>


//motor pinleri
#define SolMotorileri 2
#define SolMotorGeri 3
#define SagMotorileri 4
#define SagMotorGeri 5
//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(8); //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(300);
if(sag_uzaklik>sol_uzaklik)
{
sag();
delay(200);
ileri();
}
else if(sol_uzaklik >sag_uzaklik)
{
sol();
delay(200);
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;
}

hocam kod bu ben lcdinin kodlarını entegre ettim lcd çalışıyor ama ölçüm yapmıyor. sürekli 0 cm diyor. buna nasıl bir ekleme yapabilirizki lcd ye metreyi doğru yazsın.

Rica ederim yardımımız olduysa ne mutlu.

Sizin yolu denemedim kodu y niden yazmam gerekecek diger arkadas birlestirmeyi biliyormus onun yolunu deneyecez olursa yazarim teşekkürler

Rica ederim sıkıntı değil.

hocam sadece mesafeyi yazdıran kod düzgün bir şekilde çalışıyor mu şuan

Ewet ikiside tek baslarina sıkıntısız calisiyor

1 Beğeni

bunu kullanın linki yukarı da