PieM
Senior Member
Calcul simplifié d'angle d'inclinaison de l'accéléromètre selon X ou Y.
Le calcul est effectué avec une erreur de 2° entre -50 et + 50°
la valeur de l'angle est recentrée sur 90 pour l'horizontal afin de n'avoir que des valeurs positives, (donc comprises entre 40 et 140).
A venir: la même précision pour des angles supérieurs.
Le calcul est effectué avec une erreur de 2° entre -50 et + 50°
la valeur de l'angle est recentrée sur 90 pour l'horizontal afin de n'avoir que des valeurs positives, (donc comprises entre 40 et 140).
A venir: la même précision pour des angles supérieurs.
Code:
[color=Green]#REM##############################################
# Lecture des données d'accéléromètre LSM303DLM
# valeurs en degrés de -50° à +50° avec erreur < 2°
# ramenées en valeurs positives centrées sur 90°
# PieM Date 20150125 revision 0
#ENDREM[/color][color=Black]###########################################[/color]
[color=Navy]#picaxe [/color][color=Black]20X2[/color]
[color=Gray]{[/color]
[color=Green]'*********** E/S ********************************
'entrées ------------------------------
'sorties ------------------------------
'*********** variables **************************[/color]
[color=Blue]symbol [/color][color=Purple]Xmg [/color][color=DarkCyan]= [/color][color=Purple]w1[/color]
[color=Blue]symbol [/color][color=Purple]Ymg [/color][color=DarkCyan]= [/color][color=Purple]w2[/color]
[color=Blue]symbol [/color][color=Purple]Zmg [/color][color=DarkCyan]= [/color][color=Purple]w3[/color]
[color=Blue]symbol [/color][color=Purple]Angle_X [/color][color=DarkCyan]= [/color][color=Purple]w4[/color]
[color=Blue]symbol [/color][color=Purple]Angle_Y [/color][color=DarkCyan]= [/color][color=Purple]w5[/color]
[color=Blue]symbol [/color][color=Purple]Angle [/color][color=DarkCyan]= [/color][color=Purple]w6[/color]
[color=Green]'reserve bits = b0 et b1
'*********** constantes **************************
'*********** memorisation en EEPROM **************
'eeprom 0,(0)
'*********** Macros ******************************[/color]
[color=Navy]#MACRO [/color][color=Black]Calc_angle[/color][color=Blue]([/color][color=Purple]Val_Axe[/color][color=Blue])
[/color][color=Purple]Val_Axe [/color][color=DarkCyan]= [/color][color=Purple]Val_Axe[/color][color=DarkCyan]/[/color][color=Navy]16
[/color][color=Blue]if [/color][color=Purple]Val_Axe [/color][color=DarkCyan]>= [/color][color=Navy]$800 [/color][color=Blue]then
[/color][color=Purple]Val_Axe [/color][color=DarkCyan]= [/color][color=Navy]$1000 [/color][color=DarkCyan]- [/color][color=Purple]Val_Axe [/color][color=Green]'valeur en mg
[/color][color=Purple]Angle [/color][color=DarkCyan]= [/color][color=Purple]Val_Axe [/color][color=DarkCyan]*[/color][color=Navy]8[/color][color=DarkCyan]/[/color][color=Navy]125
[/color][color=Purple]Angle [/color][color=DarkCyan]= [/color][color=Navy]90 [/color][color=DarkCyan]- [/color][color=Purple]Angle [/color][color=DarkCyan]min [/color][color=Navy]40 [/color][color=Green]'valeur négatives de 40 à 90
[/color][color=Blue]else
[/color][color=Purple]Angle [/color][color=DarkCyan]= [/color][color=Purple]Val_Axe [/color][color=DarkCyan]*[/color][color=Navy]8[/color][color=DarkCyan]/[/color][color=Navy]125 [/color][color=DarkCyan]+ [/color][color=Navy]90 [/color][color=DarkCyan]max [/color][color=Navy]140 [/color][color=Green]'valeur positives de 90 à 140
[/color][color=Blue]endif
[/color][color=Green]'erreur < 2° entre -50 +50° [/color]
[color=Navy]#ENDMACRO[/color]
[color=Green]'************ initialisation *******************[/color]
[color=Blue]setfreq m8 [/color][color=Green]'fréquence [/color]
[color=Blue]hi2csetup i2cmaster [/color][color=Black],[/color][color=Navy]%00110000[/color][color=Black], [/color][color=Blue]i2cfast_8[/color][color=Black], [/color][color=Blue]i2cbyte
hi2cout [/color][color=Navy]$20[/color][color=Black],[/color][color=Blue]([/color][color=Navy]$27[/color][color=Blue]) [/color][color=Green]'activation[/color]
[color=Blue]hi2cout [/color][color=Navy]$23[/color][color=Black],[/color][color=Blue]([/color][color=Navy]$00[/color][color=Blue]) [/color][color=Green]'mode 2g[/color]
[color=Gray]}[/color]
[color=Green]'######################################################################
'|||||||||||||||||||||| Programme principal |||||||||||||||||||||||||||
'======================================================================[/color]
[color=Blue]do
hi2cin [/color][color=Navy]$A8[/color][color=Black], [/color][color=Blue]([/color][color=Purple]b2[/color][color=Black],[/color][color=Purple]b3[/color][color=Black],[/color][color=Purple]b4[/color][color=Black],[/color][color=Purple]b5[/color][color=Black],[/color][color=Purple]b6[/color][color=Black],[/color][color=Purple]b7[/color][color=Blue])[/color][color=Green]' lecture des valeurs
[/color][color=Black]Calc_angle[/color][color=Blue]([/color][color=Purple]Xmg[/color][color=Blue])
[/color][color=Purple]Angle_X [/color][color=DarkCyan]= [/color][color=Purple]Angle
[/color][color=Black]Calc_angle[/color][color=Blue]([/color][color=Purple]Ymg[/color][color=Blue])
[/color][color=Purple]Angle_Y [/color][color=DarkCyan]= [/color][color=Purple]Angle
[/color][color=Blue]sertxd ([/color][color=Red]" X: "[/color][color=Black], #[/color][color=Purple]Angle_X[/color][color=Black], [/color][color=Red]" Y: "[/color][color=Black], #[/color][color=Purple]Angle_Y[/color][color=Black], [/color][color=Blue]cr[/color][color=Black], [/color][color=Blue]lf)
pause [/color][color=Navy]500[/color]
[color=Blue]loop[/color]