Arduino araç kontrolü bluetooth problemi

kemalcan

Üye
Katılım
1 Kas 2018
Mesajlar
46
Tepkime puanı
1
Puanları
8
Konum
Ankara
Arkadaşlar merhaba. Elimde hc06 bluetooth modülü var. Cep telefonunda araç kontrolü yapmak istiyorum fakat şöyle bir sorunla karşılaştım. Parmağım herhangi bir tuşun üzerinde bulunduğu esnada bluetooth bağlantısı bir şekide kesildiğinde son komut geçerli oluyor ve araç durmadan geçerli olan son komuta göre hareket edip bir yerlere çarpıyor. Bu komuta göre if(bt_iletisim.available()) bluetooth modülünden seri porta herhangi bir komut gelip gelmediğini kontrol ediyor. Bağlantı kesildiğinde nasıl bir koşul yazmalıyız. Bu sorunu nasıl çözebilirim yardımlarınızı bekliyorum.
 

maksut

Üye
Katılım
2 Kas 2018
Mesajlar
44
Tepkime puanı
1
Puanları
8
Konum
İzmir
Arkadaşlar merhaba. Elimde hc06 bluetooth modülü var. Cep telefonunda araç kontrolü yapmak istiyorum fakat şöyle bir sorunla karşılaştım. Parmağım herhangi bir tuşun üzerinde bulunduğu esnada bluetooth bağlantısı bir şekide kesildiğinde son komut geçerli oluyor ve araç durmadan geçerli olan son komuta göre hareket edip bir yerlere çarpıyor. Bu komuta göre if(bt_iletisim.available()) bluetooth modülünden seri porta herhangi bir komut gelip gelmediğini kontrol ediyor. Bağlantı kesildiğinde nasıl bir koşul yazmalıyız. Bu sorunu nasıl çözebilirim yardımlarınızı bekliyorum.
Bu gayet normal değil mi loop içinde gelenveri en son ne ise onun için sürekli aynı şeyi yapar. Bağlantı kopmaması için iyi bir besleme gerekli.
 

kemalcan

Üye
Katılım
1 Kas 2018
Mesajlar
46
Tepkime puanı
1
Puanları
8
Konum
Ankara
Bu gayet normal değil mi loop içinde gelenveri en son ne ise onun için sürekli aynı şeyi yapar. Bağlantı kopmaması için iyi bir besleme gerekli.
Şu şekilde izah edeyim. En son ileri komutuna basmışsam bağlantı varken sürekli F harfi dönüyor. Bu zaten olması gereken durumdur. Fakat bağlantı gidince en son ileri komutuna bastığım için F karakter bilgisi arduinoda kalmış oluyor. Bu F karakteri bu defa bağlantı varken gibi dönmüyor sadece arduinoda kalıyor ve arduinoda motorları sürmeye devam ediyorum .Benim istedigim şey bir şekilde bluetooth bağlantisi kesildiginde motorun tüm pinlerinin LOW olmasıdır.
 

orchun

Üye
Katılım
2 Kas 2018
Mesajlar
53
Tepkime puanı
1
Puanları
8
Konum
Elazığ
if(bt_iletisim.available() içine komutları birde else yapıp içine bütün pinleri LOW yap
 

persprensi

Üye
Katılım
1 Kas 2018
Mesajlar
41
Tepkime puanı
1
Puanları
8
Konum
İzmir
Kod:
 #include<SoftwareSerial.h>

SoftwareSerial bt_iletisim(2,3); //pcTX(dil)=2,pcRX(kulak)=3,
#define motor1_a 4
#define motor1_b 5
#define motor2_a 6
#define motor2_b 7

int zaman=10;

void setup() {
pinMode(motor1_a,OUTPUT);
pinMode(motor1_b,OUTPUT);
pinMode(motor2_a,OUTPUT);
pinMode(motor2_b,OUTPUT);

Serial.begin(9600);
bt_iletisim.begin(9600);
}

void loop() {
if(bt_iletisim.available()) {

char data=bt_iletisim.read();
Serial.println(data);
// İLERİ hareketi***********************
if(data=='F'){
sifirla();

delay(zaman);
digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);

}
//GERİ hareketi***********************
else if(data=='B') {

sifirla();

delay(zaman);
geri(); }

//SOL HAREKETİ***********************
else if(data=='L') {

sifirla();

delay(zaman);
sol(); }

//SAĞ HAREKETİ***********************
else if(data=='R') {

sifirla();

delay(zaman);
sag(); }
else if(data=='S') {

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
else{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW);
}

} //bluetooth parantezi***********************

char data=bt_iletisim.read();
if(data=false) {
Serial.print("data");
Serial.println(data);

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }

//********************* *****************

} //void loop parantezi***********************
void ileri() {
digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);
}
void geri()
{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,HIGH);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,HIGH);
}
void sol()
{

digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,HIGH);
}
void sag()
{
digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,HIGH);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);
}

void sifirla()
{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
void bits() {
digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
 

kemalcan

Üye
Katılım
1 Kas 2018
Mesajlar
46
Tepkime puanı
1
Puanları
8
Konum
Ankara
Kod:
 #include<SoftwareSerial.h>

SoftwareSerial bt_iletisim(2,3); //pcTX(dil)=2,pcRX(kulak)=3,
#define motor1_a 4
#define motor1_b 5
#define motor2_a 6
#define motor2_b 7

int zaman=10;

void setup() {
pinMode(motor1_a,OUTPUT);
pinMode(motor1_b,OUTPUT);
pinMode(motor2_a,OUTPUT);
pinMode(motor2_b,OUTPUT);

Serial.begin(9600);
bt_iletisim.begin(9600);
}

void loop() {
if(bt_iletisim.available()) {

char data=bt_iletisim.read();
Serial.println(data);
// İLERİ hareketi***********************
if(data=='F'){
sifirla();

delay(zaman);
digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);

}
//GERİ hareketi***********************
else if(data=='B') {

sifirla();

delay(zaman);
geri(); }

//SOL HAREKETİ***********************
else if(data=='L') {

sifirla();

delay(zaman);
sol(); }

//SAĞ HAREKETİ***********************
else if(data=='R') {

sifirla();

delay(zaman);
sag(); }
else if(data=='S') {

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
else{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW);
}

} //bluetooth parantezi***********************

char data=bt_iletisim.read();
if(data=false) {
Serial.print("data");
Serial.println(data);

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }

//********************* *****************

} //void loop parantezi***********************
void ileri() {
digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);
}
void geri()
{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,HIGH);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,HIGH);
}
void sol()
{

digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,HIGH);
}
void sag()
{
digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,HIGH);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);
}

void sifirla()
{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
void bits() {
digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
en son yaptığım deneme buydu.bu da tutmadı :)
 

orchun

Üye
Katılım
2 Kas 2018
Mesajlar
53
Tepkime puanı
1
Puanları
8
Konum
Elazığ
if(bt_iletisim.available() bütün hareket komutlarını bunun içine yaz sonra komut bitince kapat ve else aç loop içinde olacak şekilde
 

kemalcan

Üye
Katılım
1 Kas 2018
Mesajlar
46
Tepkime puanı
1
Puanları
8
Konum
Ankara
son dediğinizi denedim bu şekilde yazdım hiç çalışmadı

Kod:
#include<SoftwareSerial.h>

SoftwareSerial bt_iletisim(2,3); //pcTX(dil)=2,pcRX(kulak)=3,
#define motor1_a 4

#define motor1_b 5
#define motor2_a 6
#define motor2_b 7

int zaman=10;

void setup() {
pinMode(motor1_a,OUTPUT);
pinMode(motor1_b,OUTPUT);
pinMode(motor2_a,OUTPUT);
pinMode(motor2_b,OUTPUT);

Serial.begin(9600);
bt_iletisim.begin(9600); }

void loop() {

// İLERİ hareketi********************************************************************
if(bt_iletisim.available()) {
char data=bt_iletisim.read();
Serial.println(data);

if(data=='F'){
sifirla();
delay(zaman);
ileri(); }}

//GERİ hareketi**************************************************************
if(bt_iletisim.available()) {
char data=bt_iletisim.read();
Serial.println(data);

if(data=='B') {
sifirla();
delay(zaman);
geri(); }}

//SOL HAREKETİ*********************************
if(bt_iletisim.available()) {
char data=bt_iletisim.read();
Serial.println(data);

if(data=='L') {
sifirla();
delay(zaman);
sol(); }}

//SAĞ HAREKETİ************************************
if(bt_iletisim.available()) {

char data=bt_iletisim.read();
Serial.println(data);

if(data=='R') {
sifirla();
delay(zaman);
sag(); }}
//DUR HAREKETİ***************************************
if(bt_iletisim.available()) {
char data=bt_iletisim.read();
Serial.println(data);

if(data=='S') {
digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); } }
else{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW);
}

} //void loop parantezi*************************************
void ileri() {
digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);
}
void geri()
{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,HIGH);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,HIGH);
}
void sol()
{

digitalWrite(motor1_a,HIGH);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,HIGH);
}
void sag()
{
digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,HIGH);
digitalWrite(motor2_a,HIGH);
digitalWrite(motor2_b,LOW);
}

void sifirla()
{

digitalWrite(motor1_a,LOW);
digitalWrite(motor1_b,LOW);
digitalWrite(motor2_a,LOW);
digitalWrite(motor2_b,LOW); }
 

orchun

Üye
Katılım
2 Kas 2018
Mesajlar
53
Tepkime puanı
1
Puanları
8
Konum
Elazığ
Sorunu çözemezsen akşam hallederim telefonda derleyemiyorum
 
Üst