Arduino bluetooth üzerinden uygulamama data göndermek istiyorum ancak arduino bluetooth üzerinden data göndermek de sorun var sanırım sorunun nerede olduğunu tam anlayamadım.
(Bu kodda veri okumada yapiyorum veri okumada sorun yok.)
#include <SoftwareSerial.h> // Bluetooth modülü bağlantısı için tanımlamalar
#include <LiquidCrystal.h> //Ekran için tanımlama
#include <Servo.h> //Servo
#include <TinyGPS++.h> // TinyGPS++ kütüphanesi eklenmeli
LiquidCrystal lcd_1(18, 19, 20, 21, 22, 23); //Ekran için pin tanımlama
SoftwareSerial bluetoothSerial(24, 25); // RX, TX pimleri olarak belirtilen dijital pinler
// Röle kontrolü için tanımlamalar
const int role1 = 2;
const int role2 = 3;
const int role3 = 4;
const int role4 = 5;
const int role5 = 6;
const int role6 = 7;
const int role7 = 8;
const int role8 = 9;
const int role9 = 10;
const int role10 = 11;
const int role11 = 12;
const int role12 = 13;
const int role13 = 14;
const int role14 = 15;
const int role15 = 16;
const int role16 = 17;
// GPS modülünün bağlı olduğu pimler
const int gpsTxPin = 24; // GPS modülünün TX pini
const int gpsRxPin = 25; // GPS modülünün RX pini
// Potansiyometre bağlantı pini(Direksiyon)
const int potPin = A0;
// Servo nesnesi
Servo servo1;
// gps nesnesi oluşturulur
TinyGPSPlus gps;
void setup() {
// Röle kontrol pini çıkış olarak ayarlanır
pinMode(role1, OUTPUT);
pinMode(role2, OUTPUT);
pinMode(role3, OUTPUT);
pinMode(role4, OUTPUT);
pinMode(role5, OUTPUT);
pinMode(role6, OUTPUT);
pinMode(role7, OUTPUT);
pinMode(role8, OUTPUT);
pinMode(role9, OUTPUT);
pinMode(role10, OUTPUT);
pinMode(role11, OUTPUT);
pinMode(role12, OUTPUT);
pinMode(role13, OUTPUT);
pinMode(role14, OUTPUT);
pinMode(role15, OUTPUT);
pinMode(role16, OUTPUT);
// Bluetooth haberleşme hızı 9600 baud olarak ayarlanır
// GPS modülü için seri iletişim başlatılır
Serial.begin(9600);
bluetoothSerial.begin(9600);
// Servo pin bağlantısı
servo1.attach(A1);
// LCD başlatma
lcd_1.begin(16,2);
// Yükleme ekranı gösterimi(SİSTEM)
lcd_1.print("Sistem Basliyor");
lcd_1.setCursor(0, 1);
for (int i = 0; i < 16; i++) {
lcd_1.print("-");
delay(100);
}
lcd_1.clear();
delay(1000);
lcd_1.print("Servolar");
lcd_1.setCursor(0, 1);
lcd_1.print("Ayarlaniyor...");
// Servo başlangıç konumu
servo1.write(90);
delay(2000);
// LCD ekranı temizleme
lcd_1.clear();
lcd_1.print("Sistem");
lcd_1.setCursor(0, 1);
lcd_1.print("Baslatildi");
delay(2000);
// LCD ekranı temizleme
lcd_1.clear();
}
void loop() {
// Gelen veriyi saklamak için bir değişken
char receivedData;
// Bluetooth verisi var mı diye kontrol edilir
if (bluetoothSerial.available()) {
// Bir karakter alınır ve receivedData değişkenine atanır
receivedData = bluetoothSerial.read();
// Alınan veriye göre röleyi kontrol eder
switch (receivedData) {
case 'A':
digitalWrite(role1, HIGH); // Röleyi açar 1
break;
case 'B':
digitalWrite(role1, LOW); // Röleyi kapatır 1
break;
case 'C':
digitalWrite(role2, HIGH); // Röleyi Açar 2
break;
case 'Ç':
digitalWrite(role2, LOW); // Röleyi kapatır 2
break;
case 'D':
digitalWrite(role3, HIGH); // Röleyi Açar 3
break;
case 'E':
digitalWrite(role3, LOW); // Röleyi kapatır 3
break;
case 'F':
digitalWrite(role4, HIGH); // Röleyi Açar 4
break;
case 'G':
digitalWrite(role4, LOW); // Röleyi kapatır 4
break;
case 'İ':
digitalWrite(role5, HIGH); // Röleyi Açar 5
break;
case 'J':
digitalWrite(role5, LOW); // Röleyi kapatır 5
break;
case 'K':
digitalWrite(role6, HIGH); // Röleyi Açar 6
break;
case 'L':
digitalWrite(role6, LOW); // Röleyi kapatır 6
break;
case 'M':
digitalWrite(role7, HIGH); // Röleyi Açar 7
break;
case 'N':
digitalWrite(role7, LOW); // Röleyi kapatır 7
break;
case 'O':
digitalWrite(role8, HIGH); // Röleyi Açar 8
break;
case 'P':
digitalWrite(role8, LOW); // Röleyi kapatır 8
break;
case 'R':
digitalWrite(role9, HIGH); // Röleyi Açar 9
break;
case 'S':
digitalWrite(role9, LOW); // Röleyi kapatır 9
break;
case 'T':
digitalWrite(role10, HIGH); // Röleyi Açar 10
break;
case 'U':
digitalWrite(role10, LOW); // Röleyi kapatır 10
break;
case 'V':
digitalWrite(role11, HIGH); // Röleyi Açar 11
break;
case 'Y':
digitalWrite(role11, LOW); // Röleyi kapatır 11
break;
case 'X':
digitalWrite(role12, HIGH); // Röleyi Açar 12
break;
case 'W':
digitalWrite(role12, LOW); // Röleyi kapatır 12
break;
case 'Z': //boş
digitalWrite(role13, HIGH); // Röleyi Açar 13
break;
case 'a': //boş
digitalWrite(role13, LOW); // Röleyi kapatır 13
break;
case 'b': //boş
digitalWrite(role14, HIGH); // Röleyi Açar 14
break;
case 'c': //boş
digitalWrite(role14, LOW); // Röleyi kapatır 14
break;
case 'd': //boş
digitalWrite(role15, HIGH); // Röleyi Açar 15
break;
case 'e': // boş
digitalWrite(role15, LOW); // Röleyi kapatır 15
break;
default:
break;
}
}
// Potansiyometre değerini oku
int potValue = analogRead(potPin);
// Potansiyometre değerini 0-180 arasında ölçekle
int servoAngle = map(potValue, 0, 1023, 0, 180);
// Servo motoru güncelle
servo1.write(servoAngle);
// Servo açısını ekrana yazdırma
lcd_1.setCursor(0, 0);
lcd_1.print("Pot Degeri: ");
lcd_1.print(potValue);
//Bluetooth to App
bluetooth.print("potValue"); //Bluetooth to App send
bluetooth.print("|"); //Value delimiter
lcd_1.setCursor(0, 1);
lcd_1.print("Donus Acisi: ");
lcd_1.print(servoAngle);
//Bluetooth to App
bluetooth.print("servoAngle"); //Bluetooth to App send
bluetooth.print("|");
delay(50); // Biraz gecikme ekleyerek okumaları daha stabil hale getiriyoruz.
// GPS verilerini okuma
while (Serial.available() > 0) {
if (gps.encode(Serial.read())) {
// GPS verisi başarıyla okundu
float latitude = gps.location.lat();
float longitude = gps.location.lng();
float altitude = gps.altitude.meters();
float speed = gps.speed.kmph();
// Ekranda gösterme
lcd_1.println(latitude);//lat
lcd_1.println(longitude);//long
lcd_1.println(altitude);//ALt
lcd_1.println(speed);//long
lcd_1.print(speed, 0, 0);
//Bluetooth to App send
bluetooth.print("latitude");
bluetooth.print("|"); //Value delimiter
bluetooth.print("longitude");
bluetooth.print("|");
bluetooth.print("altitude");
bluetooth.print("|"); //Value delimiter
bluetooth.print("speed");
bluetooth.println(); //end data
}
}
}