Arduino-Bluetooth Modülü (HC-05) bacak bağlantıları : Arduino-Bluetooth pin connection
Arduino RX(dijital 0 bacağı) – Bluetooth Module TX
Arduino TX(dijital 1 bacağı) – Bluetooth Module RX
/*
* Arduino Bluetooth String Okuma
* Mustafa SOLAK - www.mustafasolak.com - 21.04.2019
*
*/
const byte karakterSayisi = 90;
char alinanKarakterler[karakterSayisi];
boolean yeniVeri = false;
char gelenVeri;
// gerekli ayarlar yapılıyor
void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
Serial.println("Arduino Bluetooth String Okuma İşlemi Başlatıldı");
}
// Ana fonksiyon
void loop() {
veriOku();
gelenVeriyiGoster();
if(strcmp( alinanKarakterler, "ledyak") == 0)
Serial.println("ledyakilacak");
delay(1000);
}
void veriOku() {
static boolean veriAliniyor = false;
static byte msSayac = 0;
char veriBaslangicKarakteri = '<';
char veriBitisKarakteri = '>';
char gelenKarakter;
while (Serial.available() > 0 && yeniVeri == false) { // get all bytes from buffer
gelenKarakter = Serial.read();
if (veriAliniyor == true) {
if (gelenKarakter != veriBitisKarakteri) // Eğer hala veri alınıyorsa
{
alinanKarakterler[msSayac] = gelenKarakter;
msSayac++;
// Eğer gelen karakter sayısı belirlediğimizden fazla olursa bunu sınırlandırıyoruz.
// Maksimum bizim const byte karakterSayisi = 90; ile belirlediğimiz 90 karakter olmalı
if (msSayac >= karakterSayisi) {
msSayac = karakterSayisi - 1;
}
}
else // veri sonlandırma karakteri > görüldü. en sona \0 sonlandırma karakteri ekliyorum
{
alinanKarakterler[msSayac] = '\0';
veriAliniyor = false;
msSayac = 0;
yeniVeri = true;
}
}
else if (gelenKarakter == veriBaslangicKarakteri) // veri alma işlemi başladı
{
veriAliniyor = true;
}
}
}
// bu fonksiyon veriOku() fonksiyonu ile gelmiş olan veriyi gösterir
void gelenVeriyiGoster() {
if (yeniVeri == true) {
Serial.println(alinanKarakterler);
yeniVeri = false;
}
}