Hi. I am making a code but... dont want to be the previous code looped again and restarting the code by the bluetooth command "/K?:restart" by the command line.
The code is simple:
#include <SPI.h> // SPI kütüphanesi eklendi
#include <SD.h> // SD kart kütüphanesi eklendi
#include <SdFat.h> // SDFat kütüphanesi eklendi 32G+ destekler
#include <SoftwareSerial.h>
SoftwareSerial bt_iletisim(7,6);
File dosya; // dosya adında bir File nesnesi oluşturuldu
long number9999 = 2147483647LL;
void setup()
{
Serial.begin(115200); // SD karttan okunan verileri Serial monitöre daha hızlı aktarmak için 115200baud hızı seçildi
// aynı değişikliği Serial monitörünüzde önceden yapmayı unutmayın
bt_iletisim.begin(15200);
Serial.println("SD kart hazirlaniyor...");
if(!SD.begin(4)) // SD kart CS bacağı 4 nolu dijital pine bağlı, SD kart takılı değilse
{
Serial.println("SD kart takili degil!!!");
Serial.println("Lutfen SD kartinizi takiniz!!!");
while(!SD.begin(4)); // kart takılana kadar beklenir
Serial.println("SD kart kullanima hazir!!!"); // kart takılınca program devam eder
delay(1000); // 1 saniye isteğe bağlı bekleme
}
else
{
Serial.println("SD kart kullanima hazir!!!"); // kart takılı ise program devam eder
delay(1000); // 1 saniye isteğe bağlı bekleme
}
}
void loop()
{
Serial.println("-----------------LRT SD KART TEST-----------------");
char okunan[100]; // 100 karakterlik char tipinde boş bir dizi tanımlandı
int i=0; // okunacak karakter sayısı için sınır değişken başlangıçta sıfır
// Attempt to create folders
Serial.println("Folder olusturma testleri basliyor...");
if (SD.mkdir("/Empty_Flashable_Zip")) {
Serial.println("The Empty_Flashable_Zip in root was sucsessfully created.");
}
else {
Serial.println("The Empty_Flashable_Zip in root was NOT sucsessfully created!");
}
dosya = SD.open("LRT.txt",FILE_WRITE); // LRT.txt adlı bir dosya üzerine veri yazılmak üzere oluşturulup açılıyor.
dosya.println(123.456789,6); // açılan dosyaya 123.456789 sayısı yazılıyor dondaki 6 ondalıklı
// kısmın kaç basamağının yazılacağını belirtiyor
dosya.close(); // yazma işlemi bitti dosya kapatılıyor
Serial.println("123.456789 sayisi SD Karta Yazildi...");
dosya = SD.open("LRT.txt",FILE_READ); // aynı dosya bu sefer okunmak için açılıyor
while (dosya.available()) // dosyada karakter olduğu sürece while döngüsü devam ediyor
{
okunan[i] = dosya.read(); // ilk karakterden başlayıp her döngüde bir sonraki karakteri
// boş dizi değişkenine aktarıyoruz
i++;
if(i==number9999) // 12 karakter sınırı koyduk bundan fazla karakter okunmayacak dosyadan
{
break; // okunmaya kalkışılırsa while döngüsü sonlandırılır programa devam edilir
}
}
dosya.close(); // dosya kapatılıyor
float okunan_rakam = atof (okunan); // okunan karakter dizisi float tipinde tam sayıya dönüştürülüyor
Serial.println(okunan_rakam,6); // ekrana dosyadan okunan ve float tipinde tam sayıya çevrilmiş hali
// Serial monitöre yazdırılıyor, ondalıklı kısım 6 basamaklı olacak şekilde.
// çıktı 123.456771 oluyor gerçekte kaydedilen değer ise 123.456787 oluyor
Serial.println("Yazdınız. Şimdi Bluetooth ile deneyin!");
if (bt_iletisim.available()) {
char data = bt_iletisim.read();
dosya.println(data);
Serial.println(data);
}
while(1); // program sonu loop tekrarını istemiyorum şimdilik
}
How do I do it?
Second: stop the code command is "/K?:stop"
Can you please explain in more detail what is your issue.
Can you do the stop and restart that you want with Serial input from the monitor?
This does not look correct, appears to overrun the boundaries of an array.
From the comment, number9999 should be equal to 11 if you want to read 12 characters at index 0-11.
long number9999 = 2147483647LL;
char okunan[100]; // 100 karakterlik char tipinde boş bir dizi tanımlandı
while (dosya.available()) // dosyada karakter olduğu sürece while döngüsü devam ediyor
{
okunan[i] = dosya.read(); // ilk karakterden başlayıp her döngüde bir sonraki karakteri
// boş dizi değişkenine aktarıyoruz
i++;
if(i==number9999) // 12 karakter sınırı koyduk bundan fazla karakter okunmayacak dosyadan
{
break; // okunmaya kalkışılırsa while döngüsü sonlandırılır programa devam edilir
}
}
The posted code reads one character from BT (if one is available) then hangs in an infinite loop.
So, you first need to learn how to input and interpret entire commands from the BT module. See the Serial Input Basics tutorial for some ideas.
if (bt_iletisim.available()) {
char data = bt_iletisim.read();
dosya.println(data);
Serial.println(data);
}
while(1); // program sonu loop tekrarını istemiyorum şimdilik
#include <SPI.h> // SPI kütüphanesi eklendi
#include <SD.h> // SD kart kütüphanesi eklendi
#include <SdFat.h> // SDFat kütüphanesi eklendi 32G+ destekler
#include <SoftwareSerial.h>
SoftwareSerial bt_iletisim(7,6);
int reset = 2;
File dosya; // dosya adında bir File nesnesi oluşturuldu
long number9999 = 2147483647LL;
void setup()
{
Serial.begin(115200); // SD karttan okunan verileri Serial monitöre daha hızlı aktarmak için 115200baud hızı seçildi
// aynı değişikliği Serial monitörünüzde önceden yapmayı unutmayın
bt_iletisim.begin(15200);
Serial.println("SD kart hazirlaniyor...");
if(!SD.begin(4)) // SD kart CS bacağı 4 nolu dijital pine bağlı, SD kart takılı değilse
{
Serial.println("SD kart takili degil!!!");
Serial.println("Lutfen SD kartinizi takiniz!!!");
while(!SD.begin(4)); // kart takılana kadar beklenir
Serial.println("SD kart kullanima hazir!!!"); // kart takılınca program devam eder
delay(1000); // 1 saniye isteğe bağlı bekleme
}
else
{
Serial.println("SD kart kullanima hazir!!!"); // kart takılı ise program devam eder
delay(1000); // 1 saniye isteğe bağlı bekleme
}
digitalWrite(reset, HIGH);
}
void loop()
{
Serial.println("-----------------LRT SD KART TEST-----------------");
char okunan[100]; // 100 karakterlik char tipinde boş bir dizi tanımlandı
int i=0; // okunacak karakter sayısı için sınır değişken başlangıçta sıfır
// Attempt to create folders
Serial.println("Folder olusturma testleri basliyor...");
if (SD.mkdir("/Empty_Flashable_Zip")) {
Serial.println("The Empty_Flashable_Zip in root was sucsessfully created.");
}
else {
Serial.println("The Empty_Flashable_Zip in root was NOT sucsessfully created!");
}
dosya = SD.open("LRT.txt",FILE_WRITE); // LRT.txt adlı bir dosya üzerine veri yazılmak üzere oluşturulup açılıyor.
dosya.println(123.456789,6); // açılan dosyaya 123.456789 sayısı yazılıyor dondaki 6 ondalıklı
// kısmın kaç basamağının yazılacağını belirtiyor
dosya.close(); // yazma işlemi bitti dosya kapatılıyor
Serial.println("123.456789 sayisi SD Karta Yazildi...");
dosya = SD.open("LRT.txt",FILE_READ); // aynı dosya bu sefer okunmak için açılıyor
while (dosya.available()) // dosyada karakter olduğu sürece while döngüsü devam ediyor
{
okunan[i] = dosya.read(); // ilk karakterden başlayıp her döngüde bir sonraki karakteri
// boş dizi değişkenine aktarıyoruz
i++;
if(i==number9999) // 12 karakter sınırı koyduk bundan fazla karakter okunmayacak dosyadan
{
break; // okunmaya kalkışılırsa while döngüsü sonlandırılır programa devam edilir
}
}
dosya.close(); // dosya kapatılıyor
float okunan_rakam = atof (okunan); // okunan karakter dizisi float tipinde tam sayıya dönüştürülüyor
Serial.println(okunan_rakam,6); // ekrana dosyadan okunan ve float tipinde tam sayıya çevrilmiş hali
// Serial monitöre yazdırılıyor, ondalıklı kısım 6 basamaklı olacak şekilde.
// çıktı 123.456771 oluyor gerçekte kaydedilen değer ise 123.456787 oluyor
Serial.println("Yazdınız. Şimdi Bluetooth ile deneyin!");
if {
if (bt_iletisim.available()) {
char data = bt_iletisim.read();
dosya = SD.open("LRT.txt",FILE_WRITE);
dosya.println(data);
Serial.println(data);
if (data = "/K?:restart") {
Serial.println("restart");
break;
}
if (data = "/K?:exit") {
Serial.println("exit");
while(1);
}
}
}
}