Şimdi Ara

arduino haberleşme

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
8
Cevap
0
Favori
202
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba

    Bitirme projesi kapsamında slave arduinoda dizi halinde bulunan verileri master arduinoya aktarmam ve masterdan da bluetooth ile cep telefonu arayüzüne vermem lazım.
    2 arduino haberleşmesi için nrf24l01 aldım ancak çalışmıyor.Tekrar tekrar aldım yine çalıştıramadım.
    spi haberleşme denedim onu yapamadım.
    I2C ile veri gönderiyorum ama float veri gönderemiyorum sadece int verileri gönderebiliyorum.

    En kolay hangi yolla çözebilirim bunu.2 arduinoyu bluetooth modülle bağlasam nasıl olur?



  • Float veri tipini iki adet int olarak gönderin, hedefe ulaşınca da tekrar birleştirilsin
    (nokta öncesi ve nokta sonrası)



    < Bu mesaj bu kişi tarafından değiştirildi limbesh -- 7 Aralık 2019; 20:42:25 >
  • quote:

    Orijinalden alıntı: limbesh

    Float veri tipini iki adet int olarak gönderin, hedefe ulaşınca da tekrar birleştirilsin
    (nokta öncesi ve nokta sonrası)
    Master arduinoda kodları yazıp seri ekranda görüntülerken değerlerim istediğim gibi çıkıyor ama 2 arduinoyu seri haberleşme ile rx-tx pinleriyle bağladığımda slavede çok alakasız değerler okuyorum.
  • Anladım, onu ben hiç denemedim,
    rx tx bağlantı mantığını biliyorsunuzdur.
    tx > rx ve rx >tx
  • edit.sorun çözüldü.Muhtemelen potansiyometrenin bağlı olduğu gerilim kaynağı ile arduino arasında toprak bağlantısını yapmamışım.Şimdi devre ve kod çalışıyor.

    1. arduinoda basit bir şekilde pot değeri okuyorum ve serial.write ile 2. arduinoya yolluyorum.
    1. arrduinoda ölçtüğüm değerler doğru ama 2. arduinoya giden değerler yanlış. 3-4 tane sayıyı sürekli gösteriyor. 10-25-36-40 gibi.Hep bu rakamlar var.

    İşin kötü tarafı dün çalıştırdım ve her şeyi aynı yapmama rağmen şimdi çalışmıyor.
    Nedeni ney olabilir?
    Veici kod 

    #include <SPI.h>

    long value=0;
    void setup() {
    pinMode(A0, INPUT);
    Serial.begin(9600);

    }

    void loop() {
    value=analogRead(A0);
    value=map(value, 0,1023,0,255);
    Serial.write(value);

    }


    Alici kod 


    #include <SPI.h>
    long deger;
    int sayi;
    float v=0;
    void setup() {

    Serial.begin(9600);
    }

    void loop() {
    deger=Serial.read();
    sayi=(deger*4);
    v=(sayi*5.0)/1024.0;

    Serial.println(v);


    }



    < Bu mesaj bu kişi tarafından değiştirildi aeson01 -- 21 Aralık 2019; 14:49:29 >




  • Hocam basitten karmaşığa doğru giderek çözebilirsiniz, en azından hatayı bulursunuz.
    Pinlerden okuma yapmadan basit sade bir değer gönderin,
    alıcı da işlem yapmadan direkt ekrana yazsın
    problem yok ise noktalı değer gönderin vs



    < Bu mesaj bu kişi tarafından değiştirildi limbesh -- 27 Aralık 2019; 0:36:7 >
  • Serial.write ve Serial.read yaptığınızda muhtemelen tek byte gönderip alıyorsunuz fakat gönderdiğin değer long türünde yani 4 byte.

    Verici kodunuzda Serial.write(value) yerine Serial.write(value,4); kullanın.

    Alıcı kodunda

    long value = 0;
    Serial.readBytes(&value, 4);


    yapın. Sonra value üstünden istediğiniz işlemleri yapabilirsiniz.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.