baris5259
Üye
- Katılım
- 1 May 2019
- Mesajlar
- 2
- Puanları
- 1
- Yaş
- 24
Merhaba arkadaşlar,
Projem: HC-05 Bluetooth kontrollü ve Ultrasonik Mesafe Sensörlü (park sensörlü) araba.
Malzemelerim
Ardunio UNO R3 Klon
HC-05 Bluetooth Modülü
HC-SR04 Ultrasonik Mesafe Sensörü
Projemde hem bluetooth ile rc arabamı kontrol etmek istiyorum hem de park sensörü olarak ultrasonik mesafe sensörünü kullanmak istiyorum. Fakat ikisi aynı anda çalışmıyor. Mesafe ölçme kodunu loop'tan hemen sonra yazarsam ultrasonik sensör mesafeyi ölçüyor ama bu sefer Bluetooth'tan sinyal gelmiyor. Mesafe ölçme kodunu Bluetooth'tan gelen bir değer ile çalıştırmak isteyince de bu sefer Bluetooth'tan gelen sinyal kopuyor veya gelen sinyaller de 1 dakika civarında bir gecikme oluyor. Bu arada mesafe park sensörü kodunu şuanda kullanmıyorum sadece mesafe ölçüyorum aynı anda ikisini çalıştırabilmek için deniyorum. Kodum aşağıdaki gibidir. İnceleyip yardımcı olursanız sevinirim.
Tahminim muhtemelen Bluetooh ile Ultrasonik sensör aynı seri haberleşmeyi kullanmaması gerekli.Bunun için softSerial kütüphanesini kullanarak 2 farklı seri haberleşme başlatsam da yine çalışmadı.
KOD:
Projem: HC-05 Bluetooth kontrollü ve Ultrasonik Mesafe Sensörlü (park sensörlü) araba.
Malzemelerim
Ardunio UNO R3 Klon
HC-05 Bluetooth Modülü
HC-SR04 Ultrasonik Mesafe Sensörü
Projemde hem bluetooth ile rc arabamı kontrol etmek istiyorum hem de park sensörü olarak ultrasonik mesafe sensörünü kullanmak istiyorum. Fakat ikisi aynı anda çalışmıyor. Mesafe ölçme kodunu loop'tan hemen sonra yazarsam ultrasonik sensör mesafeyi ölçüyor ama bu sefer Bluetooth'tan sinyal gelmiyor. Mesafe ölçme kodunu Bluetooth'tan gelen bir değer ile çalıştırmak isteyince de bu sefer Bluetooth'tan gelen sinyal kopuyor veya gelen sinyaller de 1 dakika civarında bir gecikme oluyor. Bu arada mesafe park sensörü kodunu şuanda kullanmıyorum sadece mesafe ölçüyorum aynı anda ikisini çalıştırabilmek için deniyorum. Kodum aşağıdaki gibidir. İnceleyip yardımcı olursanız sevinirim.
Tahminim muhtemelen Bluetooh ile Ultrasonik sensör aynı seri haberleşmeyi kullanmaması gerekli.Bunun için softSerial kütüphanesini kullanarak 2 farklı seri haberleşme başlatsam da yine çalışmadı.
KOD:
Kod:
//L298N Bağlantısı
const int motorA1 = 5; // L298N'in IN3 Girişi
const int motorA2 = 6; // L298N'in IN1 Girişi
const int motorB1 = 10; // L298N'in IN2 Girişi
const int motorB2 = 9; // L298N'in IN4 Girişi
int state; //Bluetooth cihazından gelecek sinyalin değişkeni
int vSpeed = 255; // Standart Hız, 0-255 arası bir değer alabilir
int trigPin = 3;
int echoPin = 4;
long sure;
long uzaklik;
void setup()
{
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
pinMode(trigPin, OUTPUT); /* trig pini çıkış olarak ayarlandı */
pinMode(echoPin, INPUT); /* echo pini giriş olarak ayarlandı */
Serial.begin(9600);
}
void loop() {
sensor();
//Gelen veriyi 'state' değişkenine kaydet
if (Serial.available() > 0)
{
state = Serial.read();
}
// Uygulamadan ayarlanabilen 4 hız seviyesi.(Değerler 0-255 arasında olmalı)
if (state == '0') {
vSpeed = 0;
}
else if (state == '1') {
vSpeed = 100;
}
else if (state == '2') {
vSpeed = 180;
}
else if (state == '3') {
vSpeed = 200;
}
else if (state == '4') {
vSpeed = 255;
}
/***********************İleri****************************/
//Gelen veri 'F' ise araba ileri gider.
if (state == 'B')
{
ileri();
Serial.println("İleri");
}
/**********************İleri Sol************************/
//Gelen veri 'G' ise araba ileri sol(çapraz) gider.
else if (state == 'G')
{
ilerisolcapraz();
}
/**********************İleri Sağ************************/
//Gelen veri 'I' ise araba ileri sağ(çapraz) gider.
else if (state == 'I')
{
ilerisagcapraz();
}
/***********************Geri****************************/
//Gelen veri 'B' ise araba geri gider.
else if (state == 'F')
{
geri();
Serial.println("Geri");
}
/**********************Geri Sol************************/
//Gelen veri 'H' ise araba geri sol(çapraz) gider
else if (state == 'H')
{
gerisol();
}
/**********************Geri Sağ************************/
//Gelen veri 'J' ise araba geri sağ(çapraz) gider
else if (state == 'J')
{
gerisag();
}
/***************************Sol*****************************/
//Gelen veri 'L' ise araba sola gider.
else if (state == 'L')
{
Serial.println(" SOL");
sol();
}
/***************************Sağ*****************************/
//Gelen veri 'R' ise araba sağa gider
else if (state == 'R')
{
sag();
Serial.println(" SAG");
}
/************************Stop*****************************/
//Gelen veri 'S' ise arabayı durdur.
else if (state == 'S')
{
dur();
}
}
void sensor()
{
digitalWrite(trigPin, LOW); /* sensör pasif hale getirildi */
delayMicroseconds(5);
digitalWrite(trigPin, HIGH); /* Sensore ses dalgasının üretmesi için emir verildi */
delayMicroseconds(10);
digitalWrite(trigPin, LOW); /* Yeni dalgaların üretilmemesi için trig pini LOW konumuna getirildi */
sure = pulseIn(echoPin, HIGH); /* ses dalgasının geri dönmesi için geçen sure ölçülüyor */
uzaklik = sure / 29.1 / 2; /* ölçülen sure uzaklığa çevriliyor */
Serial.print("Uzaklik ");
Serial.print(uzaklik); /* hesaplanan uzaklık bilgisayara aktarılıyor */
Serial.println(" CM olarak olculmustur.");
delay(500);
}
//MOTORKOMUTLARI
void ileri()
{
analogWrite(motorA1, vSpeed);
analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed);
analogWrite(motorB2, 0);
}
void ilerisolcapraz()
{
analogWrite(motorA1, vSpeed );
analogWrite(motorA2, 0);
analogWrite(motorB1, 100);
analogWrite(motorB2, 0);
}
void ilerisagcapraz()
{
analogWrite(motorA1, 100);
analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed);
analogWrite(motorB2, 0);
}
void geri()
{
analogWrite(motorA1, 0);
analogWrite(motorA2, vSpeed);
analogWrite(motorB1, 0);
analogWrite(motorB2, vSpeed);
}
void gerisol()
{
analogWrite(motorA1, 0);
analogWrite(motorA2, 100);
analogWrite(motorB1, 0);
analogWrite(motorB2, vSpeed);
}
void gerisag()
{
analogWrite(motorA1, 0);
analogWrite(motorA2, vSpeed);
analogWrite(motorB1, 0);
analogWrite(motorB2, 100);
}
void sol()
{
analogWrite(motorA1, vSpeed);
analogWrite(motorA2, 150);
analogWrite(motorB1, 0);
analogWrite(motorB2, 0);
}
void sag()
{
analogWrite(motorA1, 0);
analogWrite(motorA2, 0);
analogWrite(motorB1, vSpeed);
analogWrite(motorB2, 150);
}
void dur()
{
analogWrite(motorA1, 0);
analogWrite(motorA2, 0);
analogWrite(motorB1, 0);
analogWrite(motorB2, 0);
}
Moderatör tarafında düzenlendi: