Bildirimler
Tümünü temizle
Arduino Geliştirme Kartları
2
Yazılar
2
Üyeler
0
Likes
135
Görüntüleme
Konu başlatıcı Temmuz 13, 2022 15:21
İki arduino arasında Can bus ile veri iletimi gerçekleştiriyorum float verilerin ondalıklı kısımları 00 olarak geliyor. Örneğin 12.45 veri gönderiyor 12.00 gözüküyor sorun ne olabilir?(Bütün değişkenler float olarak tanımlı. Can baud 500kbps 8mhz)
Temmuz 13, 2022 15:28
Merhaba, yüksek ihtimalle gönderme kısmında float olarak gönderdiğinizi düşünüyorsunuz ama int olarak gidiyor. Kodunuzu görmeden yorum yapmam çok zor fakat örnek kodları paylaşabilirim, siz de kodunuzu bu örneklere göre düzenlersiniz.
Union yöntemi ile
Gönderim:
union myval { float fl; int8 bytes[4]; } fl = 0.14; putc(bytes[0]); putc(bytes[1]); putc(bytes[2]); putc(bytes[3]);
Alım:
union myval { float fl; int8 bytes[4]; } bytes[0] = getc(); bytes[1] = getc(); bytes[2] = getc(); bytes[3] = getc(); printf("%f", fl);
Pointer kullanarak
Gönderim:
int8 *fl_ptr; float fl; fl = 0.14; fl_ptr = &fl; putc(*fl_ptr++); putc(*fl_ptr++); putc(*fl_ptr++); putc(*fl_ptr);
Alım
int8 *fl_ptr; float fl; fl_ptr = &fl; *fl_ptr++ = getc(); *fl_ptr++ = getc(); *fl_ptr++ = getc(); *fl_ptr = getc(); printf("%f", fl);