Go Down

Topic: Pitch e roll con giroscopio mpu6050 (Read 395 times) previous topic - next topic

ichigokurosaki

#15
Apr 20, 2018, 12:27 am Last Edit: Apr 20, 2018, 12:28 am by ichigokurosaki
Mah, strano.
Magari per avere qualche indicazione prova a scrivere con Serial.print() qualcosa in più, come AcX, AcY e AcZ dentro FunctionsMPU, e poi Value in FunctionsPitchRoll sia dopo atan2() sia dopo la rimappatura.
E confronta anche questi tra il "prima" e "dopo".

Bene mi hai dato un' ottima idea! infatti i risultati sono strani:
dentro la funzione FunctionsPitchRoll:
roll (radianti): -0.81   
roll (gradi): -46.33   
pitch (radianti): 0.49   
pitch (gradi): 28.05

e fin qui ci siamo.

Ora il valore "ritornato" dalla funzione e assegnato a pitch

Pitch: 28

e fin qui ci siamo, poi quello assegnato a roll
   
Roll: 65490   

ma non era -46,33 gradi? Perché non ha ritornato il valore corretto? e poi è altissimo.

Pitch dopo la funzione map

Pitch: 62   

ma non era 28?

e per ultimo roll dopo la funzione map

Roll: 65215

insomma, i problemi sorgono all'interno della funzione main. Ho quindi pensato a un problema di conversione, che usando sempre int al posto di uint16_t si è risolto. Mi hai consigliato un ottimo metodo di debug ^.^

ichigokurosaki

Probabilmente il problema di conversione succedeva perché uint16_t è un unsigned giusto?

docdoc

Probabilmente il problema di conversione succedeva perché uint16_t è un unsigned giusto?
Esatto. La "u" iniziale indica "unsigned", poi "int16" un intero 16 bit.
Per quello i valori negativi diventavano incasinati...

Contento di averti aiutato.
Alex "docdoc" - ** se ti sono stato d'aiuto, un punto karma sarà gradito, clicca su "add" qui a sinistra, vicino al mio nome ;) **

ichigokurosaki

Esatto. La "u" iniziale indica "unsigned", poi "int16" un intero 16 bit.
Per quello i valori negativi diventavano incasinati...

Contento di averti aiutato.
Ok grazie ancora ^.^

Go Up