Étape 4: Test d’accéléromètre
Maintenant, la partie la plus difficile, tests de l’accéléromètre. C’était la première fois que nous travaillions avec accéléromètres d'où que l’énorme quantité de temps passé à expérimenter et essayer de comprendre les valeurs.Nous avons trouvé un excellent site qui a contribué à nous fournir une compréhension de base des accéléromètres, mais aussi un grand code.
http://bildr.org/2011/04/Sensing-orientation-with-the-adxl335-Arduino/
C’est le code, qu'ils ont fourni et ce que nous avons utilisé.
=================================================
//////////////////////////////////////////////////////////////////
© 2011 bildr
Publié sous la licence MIT - veuillez réutiliser changement et partager
Code simple pour le ADXL335, imprime l’orientation calculée par l’intermédiaire de série
//////////////////////////////////////////////////////////////////
Analog lire épingles
const int XPSous = 0 ;
const int yPin = 1 ;
const int zPin = 2 ;
Les valeurs minimales et maximales qui sont venus
l’accéléromètre lorsque vous vous trouvez encore
Très bien peut-être devrez-vous modifier ces
minVal int = 265 ;
maxVal int = 402 ;
pour contenir les valeurs calculées
double x ;
double y ;
double z ;
void setup() {}
Serial.Begin(9600) ;
}
void loop() {}
lire les valeurs analogiques de l’accéléromètre
int xRead = analogRead(xPin) ;
int yRead = analogRead(yPin) ;
int zRead = analogRead(zPin) ;
convertir des valeurs lues à degrés -90 à 90 - nécessaires pour atan2
xAng int = carte (xRead, minVal, maxVal, -90, 90) ;
yAng int = carte (yRead, minVal, maxVal, -90, 90) ;
zAng int = carte (zRead, minVal, maxVal, -90, 90) ;
Caculate 360deg valeurs comme suit : atan2 (-yAng, zAng-)
atan2 affiche la valeur de π - π (radians)
Nous sommes puis en convertissant les radians en degrés
x = RAD_TO_DEG * (atan2 (-yAng, - zAng) + PI) ;
y = RAD_TO_DEG * (atan2 (-xAng, - zAng) + PI) ;
z = RAD_TO_DEG * (atan2 (-yAng, - xAng) + PI) ;
Sortie les caculations
Serial.Print ("x:") ;
Serial.Print(x) ;
Serial.Print("| y: ");
Serial.Print(y) ;
Serial.Print("| z: ");
Serial.println(z) ;
retard (100); //just ici à ralentir vers le bas de la sortie série - plus facile à lire
=======================================================