uno ve due i2c farklı çıktı

,

Merhaba arkadaşlar, l3gd20h gyroscope kullanıyorum. uno veya mega ile i2c kullanarak istediğim veriyi sorunsuz alıyorum. Ancak due ile yaptığım denemede aynı kod farklı sonuçlar veriyor. (20 ve 21 numaralı pinleri kullanıyorum) i2c ile okuduğum verilerde gyro_roll_input = (gyro_roll_input * 0.8) + ((gyro_roll / 57.14286) * 0.2); gyro_pitch_input = (gyro_pitch_input * 0.8) + ((gyro_pitch / 57.14286) * 0.2); gyro_yaw_input = (gyro_yaw_input * 0.8) + ((gyro_yaw / 57.14286) * 0.2); (gyro_roll, gyro_pitch, gyro_yaw toplamda 2+2+2 byte olarak sensörden aldığım veri) şeklinde açıları dereceye çeviriyorum ancak due ile sensör hareket ettiğim de veriler değişmesine rağmen uno ile okuduğumda 0-90 arası geliyorsa due de 0-6000 (6000 tam rakam değil büyüklük belirtme amaçlı) arası veri gelebiliyor. Bunun sebebi ne olabilir ?

değişken tanımlarını gözden geçirin. due de float veya long değerlerde fark vardı galiba

float yerine short kullanınca düzeldi. edit : float yerine short kullanınca düzelmemiş hatalı bilgi olmaması açısından cevabı düzenliyorum. i2c den gelen byteları birleştirirken veri tipini int16_t olarak belirtince düzeldi.