arduino uno bluetooth seri haberleşmede veri ayırma
  • arkadaşlar ben iki arduino iki bluetooth kullanarak bir araç tasarımı yapıyorum ancak kumandadan gönderdiğim verileri okurken problem yaşıyorum aracımda bir adet servo ve bir adet dc motor bulunmakta bluetooth üzerinden göndediğim servo açı bilgisini ve dc hız ve yön bilgisini ayırmam lazım şöyle bir kod yazmıştım ancak sonuç alamadım yardımcı olursanız sevinirim.(projede joystick shield ve bir adette l298n motor sürücü bulunmakta) Ancak benim burdaki sorunum dediğim gibi kumandadan gönderdiğim farklı değişken verilerini serial.read yaparken ayıramıyorum.

    verici yani kumanda kodum
    #include
    #define joy_x A0
    #define joy_y A1

    unsigned int val;
    unsigned int dcval;
    unsigned int hizgeri;
    unsigned int hizileri;

    void setup()
    {
    Serial.begin(38400);
    }

    void loop()
    {
    val = analogRead(joy_x);
    val = map(val, 0, 1023, 0, 179);
    Serial.write(val);
    delay(1000);

    dcval = analogRead(joy_y);
    Serial.write(dcval);
    delay(1000);

    if(dcval<515)<br /> {
    hizgeri = map(dcval, 0, 515, 255, 0);
    Serial.write(hizgeri);
    delay(1000);
    }
    else if(dcval>515)
    {
    hizileri = map(hizileri, 515, 1023, 0, 255);
    Serial.write(hizileri);
    delay(1000);
    }

    }


    Bu da alıcı kodum

    #include
    #include
    Servo myservo;
    unsigned int val ;
    unsigned int dcval;
    unsigned int hizgeri;
    unsigned int hizileri;
    const int inputbir = 8;
    const int inputiki = 9;
    const int enableA = 11;

    void setup()
    {
    Serial.begin(38400);
    myservo.attach(10);
    pinMode(inputbir, OUTPUT);
    pinMode(inputiki, OUTPUT);
    pinMode(enableA, OUTPUT);
    }

    void loop() // run over and over
    {
    if (Serial.available()>0){

    val = Serial.read();
    myservo.write(val);

    dcval = Serial.read();

    if (dcval<510)<br />{
    hizgeri = Serial.read();
    analogWrite(enableA, hizgeri);
    digitalWrite(inputbir, LOW);
    digitalWrite(inputiki, HIGH);
    }

    else if (dcval>520)
    {
    hizileri = Serial.read();
    analogWrite(enableA, hizileri);
    digitalWrite(inputbir, HIGH);
    digitalWrite(inputiki, LOW);
    }

    else if (dcval >= 510 && dcval <= 520)<br />{
    digitalWrite(inputbir, LOW);
    digitalWrite(inputiki, LOW);
    }

    }

    }
  • böyle zaten olmaz bu iş.

    ne gönderdiğini belli eden birşey koymalısın gönderdiğin datanın başına,
    örneğin dc değermi gönderiyorsun

    seria.write("dc");
    serial.write(dc);
    gönder ki alıcı tarafta da kontrolünü yap

    if(gelen data =="dc")
    {
    gelen datanın başında dc indexi var ise aldığım data dc değerdir diye ayırabilirsin.
    }

    öyle birinci serial.read da dc alayım,
    ikinci serial.read da val alayım

    o iş biraz zor 25 yıl uğraşsan olmaz :)
  • bende bugün farkettim daha iyi araştırma yapmalıyım saolun serial.read i biraz yanlış anlamışım ama anlattığınız şekilde uğraşıcam yorumunuz için teşekkür ederim.

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.