Bluetooth kontrollü araba kendi kendine gitmeye başlıyor

Bedirhan2834

Decapat
Katılım
8 Şubat 2023
Mesajlar
139
Daha fazla  
Cinsiyet
Erkek
Merhaba elimde telefondan hareket ettirmem gereken bir araba var ve bütün bağlantıları tamam, Ardinio ya da yazılım da attım ama arabayı kullanırken bazen bir anda kendi kendine gitmeye başlıyor ve durmuyor sadece güç kesdiğim zaman duruyor acaba sorun motor sürücede midir yoksa Arduino'da mı? Bilgi verirseniz çok memnun kalırım. (Motor sürücü = L298n)
 
Merhaba elimde telefondan hareket ettirmem gereken bir araba var ve bütün bağlantıları tamam, ardinio ya da yazılım da attım ama arabayı kullanırken bazen bir anda kendi kendine gitmeye başlıyor ve durmuyor sadece güç kesdiğim zaman duruyor acaba sorun motor sürücede midir yoksa Arduino'da mı? Bilgi verirseniz çok memnun kalırım. (motor sürücü = L298n)

Kodu paylaşabilir misiniz?
 
Kodu paylaşabilir misiniz?
char dataIn = 'S'; // Durma fonksiyonu için karakter
int SolMotorileri = 9; //**
int SolMotorgeri = 10; //**
int SagMotorileri = 12; //**ARACIN İLERİ ,GERİ, SAĞ ,SOL KOMUT ÇIKIŞ PİNLERİ**
int SagMotorgeri = 13; //**


int mavi_bir = 4;
int mavi_iki = 3;
int korna = 6;
int onfar = 7;
int arkafar = 2;

int bluetooth_vcc = 8;
int motor_vcc = 11; //**


char determinant; //Program dongüsü için karakter
char det; //Program dongüsü için karakter

void setup()
{
Serial.begin(9600); //HC-07 bluetooth modülü için btu 9600
pinMode(SolMotorileri, OUTPUT);
pinMode(SolMotorgeri, OUTPUT);
pinMode(SagMotorileri, OUTPUT);
pinMode(SagMotorgeri, OUTPUT);

pinMode(mavi_bir, OUTPUT);
pinMode(mavi_iki, OUTPUT);
pinMode(onfar, OUTPUT);
pinMode(arkafar, OUTPUT);
pinMode(korna, OUTPUT);


pinMode(bluetooth_vcc, OUTPUT);
pinMode(motor_vcc, OUTPUT);
digitalWrite(motor_vcc, HIGH);
digitalWrite(bluetooth_vcc, HIGH);
}

void loop()
{
det = check();

Serial.print ("det = "); Serial.println (det);
while (det == 'F') //İLERİ
{
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorgeri, LOW);

digitalWrite(korna, LOW);
det = check();
}
while (det == 'B') //GERİ

{ digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorgeri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorgeri, LOW);


det = check();
}

while (det == 'L') //SOL
{

digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SagMotorgeri, LOW);
det = check();
}
while (det == 'R') //SAĞ
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorgeri, HIGH);
det = check();
}
while (det == 'G') //İLERİ SOL

{

digitalWrite(SolMotorileri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SagMotorgeri, LOW);
det = check();
}
while (det == 'I') //İLERİ SAĞ
{ digitalWrite(SolMotorileri, HIGH);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorgeri, HIGH);
det = check();
}
while (det == 'H') //GERİ SOL
{ digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorgeri, HIGH);
digitalWrite(SagMotorileri, HIGH);
digitalWrite(SagMotorgeri, LOW);
det = check();
}
while (det == 'J') //GERİ SAĞ
{ digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorgeri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorgeri, HIGH);
det = check();
}
if (det == 'W') // oN LAMBA YAKMA
{ digitalWrite(onfar, HIGH);
det = check();
}
if (det == 'w') // oN LAMBA SoNDÜRME
{ digitalWrite(onfar, LOW);
det = check();
}
if (det == 'U') //ARKA IŞIK YAKMA
{ digitalWrite(arkafar, HIGH);
det = check();
}
if (det == 'u') //ARKA LAMBA SoNDÜRME
{ digitalWrite(arkafar, LOW);
det = check();
}
if (det == 'V')// KORNA ÇALMA
{
digitalWrite(korna, HIGH);
det = check();
}
if (det == 'v')//KORNA SUSTURMA
{
digitalWrite(korna, LOW);
det = check();
}
if (det == 'X')// DoRTLÜ YAKMA
{
digitalWrite(onfar, LOW);
digitalWrite(arkafar, LOW);
for (int a = 0; a < 10; a++)
{
digitalWrite(mavi_bir, HIGH);
delay(100);
digitalWrite(mavi_bir, LOW);
delay(100);
digitalWrite(mavi_bir, HIGH);
delay(100);
digitalWrite(mavi_bir, LOW);
delay(100);

digitalWrite(mavi_iki, HIGH);
delay(100);
digitalWrite(mavi_iki, LOW);
delay(100);
digitalWrite(mavi_iki, HIGH);
delay(100);
digitalWrite(mavi_iki, LOW);
delay(100);
}
det = check();
}
if (det == 'x')//DoRTLÜ SoNDÜRME
{
digitalWrite(onfar, LOW);
digitalWrite(arkafar, LOW);
det = check();
}
while (det == 'S') //Telefondaki programda atanmış olan durma fonksiyonun harf eşdeğeri
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorgeri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorgeri, LOW);

det = check();
}

}

int check()
{
if (Serial.available() > 0) //Serial portun kontrollü
{
dataIn = Serial.read(); //Telefondan gelen verilerin kontrollü
if (dataIn == 'F')
{
determinant = 'F';
}
else if (dataIn == 'B')
{
determinant = 'B';
}
else if (dataIn == 'L')
{
determinant = 'L';
}
else if (dataIn == 'R')
{
determinant = 'R';
}
else if (dataIn == 'G')
{
determinant = 'G';
}
else if (dataIn == 'I')
{
determinant = 'I';
}
else if (dataIn == 'H')
{
determinant = 'H';
}
else if (dataIn == 'J')
{
determinant = 'J';
}
else if (dataIn == 'W')
{
determinant = 'W';
}
else if (dataIn == 'w')
{
determinant = 'w';
}
else if (dataIn == 'U')
{
determinant = 'U';
}
else if (dataIn == 'u')
{
determinant = 'u';
}
else if (dataIn == 'V')
{
determinant = 'V';
}
else if (dataIn == 'v')
{
determinant = 'v';
}
else if (dataIn == 'X')
{
determinant = 'X';
}
else if (dataIn == 'x')
{
determinant = 'x';
}
else if (dataIn == 'S')
{
determinant = 'S';
}

}
return determinant;
}
 
Char dataın = 's'; // durma fonksiyonu için karakter.
İnt solmotorileri = 9; //**
İnt solmotorgeri = 10; //**
İnt sagmotorileri = 12; //**aracın ileri, geri, sağ, sol komut çıkış pinleri**
İnt sagmotorgeri = 13; //**

İnt mavi_bir = 4;
İnt mavi_iki = 3;
İnt korna = 6;
İnt onfar = 7;
İnt arkafar = 2;

İnt bluetooth_vcc = 8;
İnt motor_vcc = 11; //**

Char determinant; //program dongüsü için karakter.
Char det; //program dongüsü için karakter.

Void setup()
{
Serial. Begin(9600); //HC-07 Bluetooth modülü için BTU 9600.
Pinmode(solmotorileri, output);
Pinmode(solmotorgeri, output);
Pinmode(sagmotorileri, output);
Pinmode(sagmotorgeri, output);

Pinmode(mavi_bir, output);
Pinmode(mavi_iki, output);
Pinmode(onfar, output);
Pinmode(arkafar, output);
Pinmode(korna, output);

Pinmode(bluetooth_vcc, output);
Pinmode(motor_vcc, output);
Digitalwrite(motor_vcc, hıgh);
Digitalwrite(bluetooth_vcc, hıgh);
}

Void loop()
{
Det = check();

Serial. Print ("det = "); Serial. Println (det);
While (det == 'F') //ileri
{
Digitalwrite(solmotorileri, hıgh);
Digitalwrite(solmotorgeri, Low);
Digitalwrite(sagmotorileri, Low);
Digitalwrite(sagmotorgeri, Low);

Digitalwrite(korna, Low);
Det = check();
}
While (det == 'b') //geri

{ Digitalwrite(solmotorileri, Low);
Digitalwrite(solmotorgeri, hıgh);
Digitalwrite(sagmotorileri, Low);
Digitalwrite(sagmotorgeri, Low);

Det = check();
}

While (det == 'l') //sol
{

Digitalwrite(solmotorileri, Low);
Digitalwrite(solmotorgeri, Low);
Digitalwrite(sagmotorileri, hıgh);
Digitalwrite(sagmotorgeri, Low);
Det = check();
}
While (det == 'r') //sağ
{
Digitalwrite(solmotorileri, Low);
Digitalwrite(solmotorgeri, Low);
Digitalwrite(sagmotorileri, Low);
Digitalwrite(sagmotorgeri, hıgh);
Det = check();
}
While (det == 'g') //ileri sol.

{

Digitalwrite(solmotorileri, hıgh);
Digitalwrite(solmotorgeri, Low);
Digitalwrite(sagmotorileri, hıgh);
Digitalwrite(sagmotorgeri, Low);
Det = check();
}
While (det == 'ı') //ileri sağ.
{ Digitalwrite(solmotorileri, hıgh);
Digitalwrite(solmotorgeri, Low);
Digitalwrite(sagmotorileri, Low);
Digitalwrite(sagmotorgeri, hıgh);
Det = check();
}
While (det == 'h') //geri sol.
{ Digitalwrite(solmotorileri, Low);
Digitalwrite(solmotorgeri, hıgh);
Digitalwrite(sagmotorileri, hıgh);
Digitalwrite(sagmotorgeri, Low);
Det = check();
}
While (det == 'j') //geri sağ.
{ Digitalwrite(solmotorileri, Low);
Digitalwrite(solmotorgeri, hıgh);
Digitalwrite(sagmotorileri, Low);
Digitalwrite(sagmotorgeri, hıgh);
Det = check();
}
İf (det == 'W') // on lamba yakma.
{ Digitalwrite(onfar, hıgh);
Det = check();
}
İf (det == 'W') // on lamba sondürme.
{ Digitalwrite(onfar, Low);
Det = check();
}
İf (det == 'u') //arka ışık yakma.
{ Digitalwrite(arkafar, hıgh);
Det = check();
}
İf (det == 'u') //arka lamba sondürme.
{ Digitalwrite(arkafar, Low);
Det = check();
}
İf (det == 'v')// korna çalma.
{
Digitalwrite(korna, hıgh);
Det = check();
}
İf (det == 'v')//korna susturma.
{
Digitalwrite(korna, Low);
Det = check();
}
İf (det == 'X')// dortlü yakma.
{
Digitalwrite(onfar, Low);
Digitalwrite(arkafar, Low);
For (int a = 0; a < 10; a++)
{
Digitalwrite(mavi_bir, hıgh);
Delay(100);
Digitalwrite(mavi_bir, Low);
Delay(100);
Digitalwrite(mavi_bir, hıgh);
Delay(100);
Digitalwrite(mavi_bir, Low);
Delay(100);

Digitalwrite(mavi_iki, hıgh);
Delay(100);
Digitalwrite(mavi_iki, Low);
Delay(100);
Digitalwrite(mavi_iki, hıgh);
Delay(100);
Digitalwrite(mavi_iki, Low);
Delay(100);
}
Det = check();
}
İf (det == 'X')//dortlü sondürme.
{
Digitalwrite(onfar, Low);
Digitalwrite(arkafar, Low);
Det = check();
}
While (det == 's') //telefondaki programda atanmış olan durma fonksiyonun harf eşdeğeri.
{
Digitalwrite(solmotorileri, Low);
Digitalwrite(solmotorgeri, Low);
Digitalwrite(sagmotorileri, Low);
Digitalwrite(sagmotorgeri, Low);

Det = check();
}

}

İnt check()
{
İf (Serial.available() > 0) //Serial portun kontrollü.
{
Dataın = Serial.read(); //Telefondan gelen verilerin kontrollü.
İf (dataın == 'F')
{
Determinant = 'F';
}
Else if (dataın == 'b')
{
Determinant = 'b';
}
Else if (dataın == 'l')
{
Determinant = 'l';
}
Else if (dataın == 'r')
{
Determinant = 'r';
}
Else if (dataın == 'g')
{
Determinant = 'g';
}
Else if (dataın == 'ı')
{
Determinant = 'ı';
}
Else if (dataın == 'h')
{
Determinant = 'h';
}
Else if (dataın == 'j')
{
Determinant = 'j';
}
Else if (dataın == 'W')
{
Determinant = 'W';
}
Else if (dataın == 'W')
{
Determinant = 'W';
}
Else if (dataın == 'u')
{
Determinant = 'u';
}
Else if (dataın == 'u')
{
Determinant = 'u';
}
Else if (dataın == 'v')
{
Determinant = 'v';
}
Else if (dataın == 'v')
{
Determinant = 'v';
}
Else if (dataın == 'X')
{
Determinant = 'X';
}
Else if (dataın == 'X')
{
Determinant = 'X';
}
Else if (dataın == 's')
{
Determinant = 's';
}

}
Return determinant;
}

Kodda bir problem göremedim fiziksel bağlantıda sorun olabilir motor sürücü ile Arduino arasındaki haberleşmede sorun olabilir.
 
Gaza basarken bluetooth bağlantısı kesilmesi durumunda en son gelen veri 'F' olduğu için araba gitmeye devam eder. Uygulamadan her şeyi durduran 'D' geliyor. D için if ekleyip durdurma fonksiyonundaki şeyleri içine kopyalayın. İkisi de bulunsun. Ayrıca arabaya gelen veriyi seri porttan okuma şansınız varsa takip edin durup dururken F mi geliyor yoksa S gelmeyip araba hiç durmuyor mu diye.
 

Technopat Haberler

Yeni konular

Geri
Yukarı