Serial Monitör Kapalıyken Komut Çalışmıyor
  • Merhabalar, Arduino Nano ve HC-06 ile bir uzakton kontrol sistemi tasarladım ancak şöyle bir sıkıntım var. Android uygulaması ile veri gönderiyor ve ona göre işlem yapıyorum. Buraya kadar herşey normal, usb'den güce bağlayıp ve serial monitörü açık tuttuğumda tüm sistem sorunsuz bir şekilde çalışıyor. Ama serial monitörü kapattığımda saçma sapan çalışıyor ve sanki farklı kod varmış gibi sürekli D13 pinine bağlı dahili ledde blink yapıyor. Sorunun kaynağı nedir yardımcı olabilirseniz sevinirim.

    Kod :


    String gelenText;
    void setup() {
    Serial.begin(9600);
    pinMode(4,OUTPUT);
    pinMode(5,OUTPUT);
    pinMode(6,OUTPUT);
    pinMode(7,OUTPUT);
    Serial.print("AT+NAMEArduinoLed");
    }

    void loop() {
    while(Serial.available())
    {
    delay(5);
    gelenText+=char(Serial.read());
    }
    if (gelenText=="1A")
    {
    digitalWrite(4,HIGH);
    }

    if (gelenText=="1K")
    {
    digitalWrite(4,LOW);
    }


    if (gelenText=="2A")
    {
    digitalWrite(5,HIGH);
    }


    if (gelenText=="2K")
    {
    digitalWrite(5,LOW);
    }


    if (gelenText=="3A")
    {
    digitalWrite(6,HIGH);
    }


    if (gelenText=="3K")
    {
    digitalWrite(6,LOW);
    }


    if (gelenText=="4A")
    {
    digitalWrite(7,HIGH);
    }


    if (gelenText=="4K")
    {
    digitalWrite(7,LOW);
    }


    gelenText=""; // değişkeni temizle
    }
  • Hocam zaten şuan kodlar serial monitöre göre yazılmış,Bluetooth modül için software serial örneğindeki gibi bir serial iletişim oluştur.Tanımladığın RX TX e göre Rx Tx i çapraz bağla.Şu an ki kodlardaki seriallerin yerine örneğin while(Serial.available()) tanımladığın seriali yaz .....while(tanimlanan.available()).... birde if ler yerine switch case kullanırsan daha temiz çalışır.iyi çalışmalar
  • Aynı sorun bende de var fakat SoftwareSerial kullansamda problem çözülmüyor. Pc ye bağlıyken hiç bir sorun yok fakat adaptör kullandığım zaman anlayamadığım bir şekilde sorun yaşıyorum
  • seriport gnd pini ıle pilin gnd pinin de birbiri ne bağlı olması lazım
  • okoman hocam gnd ler bağlı kart üzerindeki gnd yi seriport gnd sine bağladım zaten anlam veremedim bir türlü ne denediysem olmuyor
  • while(Serial.available())

    kısmını kaldır. Düzelme ihtimali var
  • O şekilde de düzelmedi malesef
  • Bu olay genellikle şu sebepten çıkıyor, Arduinonun donanımsal seri portu yani pin0 pin1 (rx tx) arduino ide deki seri port arayüzünü aktif edince aktif oluyor. Bu yüzden seriporttan birşey bağlayacağın zaman pin0 pin1 i kullanmak yerine softwareserial kütüphanesini kullanarak bu pin0 pin1 den farklı 2 pini kullanmanı tavsiye ederim.

    Bir ihtimal problemin bu şekilde çözülecektir.
  • Hocam evvela yardımların için teşekkür ederim, Ben ilk olarak dediğin gibi donanımsal seri port kullandım bir kaç araştırmadan sonra aynen senin bahsettiğin gibi software serial kullanmak gerektiğini okudum ama software serial de de yine aynı problemi görüyorum. Cihaz pc ye bağlı iken hardware serial de software serial de düzgün ama harici beslediğim zaman ikisinde de çalışmıyor. software serial event i iptal edip loop da data çeksemde aynı problem while döngüsünü de iptal etsem aynı problem.
  • ilginç bir problemle karşı karşıyasın :)
    Çözde bizide bilgilendir. Sevaba gir valla.

    Not: ben ne zaman software serial kullansam çalıştı hiç problem yaşamadım
  • //protokol oluşturmalısın diye düşünüyorum

    String SerialReceiveText="";

    // fonsiyon oluşturalım..

    String buff_analis(String protocol_message)
    {
    String str_command=protocol_message.substring(0,2);
    String str_response="";


    if (str_command=="AA")
    {
    str_response=">AA";
    //işlemler
    }
    if (str_command=="AB")
    {
    str_response=">AB";
    //işlemler
    }

    .
    .
    .
    .
    .
    .
    .
    .


    return str_response;
    }




    // ana döngü içerisine...

    if (Serial.available() > 0)
    {
    char c = Serial.read();
    SerialReceiveText+=c;
    if (c == '\r')
    {
    Serial.println(buff_analis(SerialReceiveText));
    SerialReceiveText="";
    }
    }


    //birde böyle dene
    Saygılarımla..

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.