Arduino belli bir satır sayısı geçilince saçmalıyor.

0 oy
2 Mart RIDVAN sordu
Arduino da belli bir satır sayısı geçilince program saçmalamaya başlıyor.

Saçmalama olarak serial monitörde yazdıklarım tam olarak gözükmüyor. Mesela merhaba yazdığımda sadece m harfi geri dönüyor normalde merhaba tam olarak dönmesi gerekiyor.

Kod serial monitöre ihtiyaç duyduğu için mecbur düzeltmem lazım bu hatayı .

Nerede problem çıkardığını kodun içinde yorum satırına yazdım.

/* CARDR-5V
 * BUL-5V
 * AR-13 CARDR-SCK
 * AR-12 CARDR-MISO
 * AR-11 CARDR-MOSI
 * AR-9  HOP-+
 * AR-4  CARDR-CS
 * AR-1  BUL-RX
 * AR-0  BUL-TX
 * 3 . pin kapı kilit ledi
 * 4.pin kilima ledi
 */

#include <SimpleSDAudio.h>
String ses,isim,mesaj,onay;
int i=0,a=0,sicaklik=0;
//----------------------------Okuma Bölümü Başlangıç
void oku(String x){
   if (x=="deneme"){
       SdPlay.setFile("deneme.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="merhaba"){
       SdPlay.setFile("merhaba.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="nasilsin"){
       SdPlay.setFile("iyi.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="kim"){
       SdPlay.setFile("kim.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="onay"){
       SdPlay.setFile("onay.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="mesaj"){
       SdPlay.setFile("mesaj.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="evet"){
       SdPlay.setFile("evet.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="no"){
       SdPlay.setFile("no.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="1"){
       SdPlay.setFile("1.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="2"){
       SdPlay.setFile("2.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="3"){
       SdPlay.setFile("3.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="4"){
       SdPlay.setFile("4.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="5"){
       SdPlay.setFile("5.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="6"){
       SdPlay.setFile("6.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="7"){
       SdPlay.setFile("7.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="8"){
       SdPlay.setFile("8.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="9"){
       SdPlay.setFile("9.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="10"){
       SdPlay.setFile("10.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="20"){
       SdPlay.setFile("20.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="30"){
       SdPlay.setFile("30.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="40"){
       SdPlay.setFile("40.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="50"){
       SdPlay.setFile("50.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="60"){
       SdPlay.setFile("60.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="70"){
       SdPlay.setFile("70.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="80"){
       SdPlay.setFile("80.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="90"){
       SdPlay.setFile("90.wav");
       SdPlay.play();
       delay(10);
    }
    if (x=="sderece"){
       SdPlay.setFile("sderece.wav");
       SdPlay.play();
       delay(10);
    }
}
//----------------------------Okuma Bölümü Bitiş
//----------------------------Dinleme Bölümü Başlangıç
String dinle(String gses){
    while (Serial.available()){  
    delay(10);
    char c = Serial.read();
    if (c == '#') {break;}
    gses += c;
  }
  return(gses);
}
//----------------------------Dinleme Bölümü Bitiş

void setup() {
  ses="RIDVAN";
  
  Serial.begin(9600);
  SdPlay.setSDCSPin(4);

  SdPlay.init(SSDA_MODE_FULLRATE | SSDA_MODE_MONO | SSDA_MODE_AUTOWORKER);
  pinMode(2,INPUT);
  pinMode(3,OUTPUT);
  pinMode(5,OUTPUT);
  pinMode(6,OUTPUT);
  pinMode(7,OUTPUT);
  pinMode(8,OUTPUT);
  pinMode(10,OUTPUT);
 }

void loop() {
  sicaklik = analogRead(A0)*0.48828125;
  
  
  
  if (Serial.available()){
  ses = dinle(ses);
  }

  if (ses.length()>0) {
     Serial.println(ses);
      
      if(ses == "deneme")  oku("deneme");
      else if (ses == "merhaba" || ses == "Merhaba")  oku("merhaba");
      else if (ses == "nasılsın" || ses == "Nasılsın")  oku("nasilsin");
      else if (ses == "Havakaç derece" || ses == "hava kaç derece"|| ses == "hava sıcakmı"|| ses == "Hava sıcakmı"){
        ses = String((sicaklik/10)*10);
        oku(ses);
        delay(1000);
        ses = String(sicaklik%10);
        oku(ses);
        delay(1000);
        oku("sderece");
      }

---------------------------------------------
      //Buradan sonrasını silersem düzgün çalışıyor. Ne yazdığım farketmiyor. Delay bile atsam direk saçmalamaya başlıyor. Arduino mega ve orjilindede denedim aynı problem oluyor.

------------------------------------------------------
      else if (ses == "Kapıları kilitle" || ses == "kapıları kilitle"){
        digitalWrite(3,1);
        delay(200);
        digitalWrite(3,0);
        Serial.println("Kapılar kilitlendi");
        oku("kapikilitlendi");
      }
      else if (ses == "Klimayı aç" || ses == "klimayı aç"){
        digitalWrite(4,1);
        Serial.println("Klima açıldı.");
        oku("klimaopen");
      }
      else if (ses == "Kilimayı kapat" || ses == "klimayı kapat"){
        digitalWrite(4,0);
        Serial.println("Klima kapandı.");
        oku("klimaclose");
      }
        
      ses="";
      delay(10);
 }

}

1 cevap

0 oy
3 Mart RIDVAN cevapladı
Bu problemle başka karşılaşan varsa ben soruyu yazan kişiyim problemin sebebini bulamadım ama tmrpcm adlı başka bi ses dönüştürme kütüpanesi kullandım düzeldi.
      Arduino Başlangıç Seti 
Uzman Sayfası
...