Etape 5: Finition du Prototype
Formidable ! Maintenant vous avez un cap et 8 moteurs prêts à buzz à votre appel d’offres. Ils devraient tous être branchés sur l’Arduino, trop. Voici le code que j’ai utilisé pour combiner les deux. Notez que j’ai gardé l’interface série pour que je serais capable de dépanner il. Vous aurez envie de compenser des régions d’activation de chaque moteur par un certain nombre de grades universitaires fondé sur le titre de la boussole par rapport à sa place sur la ceinture une fois que vous avez tout ensemble, et il est bon d’être en mesure de voir juste combien de degrés à décaler par. Cette partie doit attendre jusqu'à ce que vous avez la ceinture mises en place, cependant.#include < Wire.h >
J’ai utilisé des broches 2-9, ymmv
const int NPin = 2 ;
const int NEPin = 3 ;
const int EPin = 4 ;
const int SEPin = 5 ;
const int SPin = 6 ;
const int SWPin = 7 ;
const int WPin = 8 ;
const int NWPin = 9 ;
void setup()
{
Serial.Begin(9600) ;
Wire.Begin() ;
pinMode (NPin, sortie) ;
pinMode (NEPin, sortie) ;
pinMode (EPin, sortie) ;
pinMode (SEPin, sortie) ;
pinMode (SPin, sortie) ;
pinMode (SWPin, sortie) ;
pinMode (WPin, sortie) ;
pinMode (NWPin, sortie) ;
}
void loop()
{
Wire.beginTransmission(0x21) ;
Wire.Write("A") ;
Delay(100) ;
Wire.requestFrom(0x21, 2) ;
octet MSB = Wire.read() ;
octet LSB = Wire.read() ;
Wire.endTransmission() ;
flotteur degs = ((MSB << 8) + LSB) / 10 ;
Serial.Print(DEGS) ;
Serial.println ("degrés.") ;
Cas particulier avec pin du Nord pour faire face à la traversée de 0 degrés.
Si ((degs > = 337,5 & & degs < = 360) || (degs > = 0.0 & & degs < 22,5))
{
digitalWrite (NPin, élevé) ;
}
d’autre
{
digitalWrite (NPin, faible) ;
}
Vérifier toutes les autres directions en utilisant une gamme de 45 degrés.
Si (degs > = 22,5 & & degs < 67,5)
{
digitalWrite (NEPin, élevé) ;
}
d’autre
{
digitalWrite (NEPin, faible) ;
}
Si (degs > = 67,5 & & degs < 112,5)
{
digitalWrite (EPin, élevé) ;
}
d’autre
{
digitalWrite (EPin, faible) ;
}
Si (degs > = 112,5 & & degs < 157,5)
{
digitalWrite (SEPin, élevé) ;
}
d’autre
{
digitalWrite (SEPin, faible) ;
}
Si (degs > = 157,5 & & degs < 202,5)
{
digitalWrite (SPin, élevé) ;
}
d’autre
{
digitalWrite (SPin, faible) ;
}
Si (degs > = 202,5 & & degs < 247,5)
{
digitalWrite (SWPin, élevé) ;
}
d’autre
{
digitalWrite (SWPin, basse) ;
}
Si (degs > = 247,5 & & degs < 292.5)
{
digitalWrite (WPin, élevé) ;
}
d’autre
{
digitalWrite (WPin, basse) ;
}
Si (degs > = 292,5 & & degs < 337,5)
{
digitalWrite (NWPin, élevé) ;
}
d’autre
{
digitalWrite (NWPin, basse) ;
}
Delay(100) ;
}
Télécharger qu’ou similaire, et vous devriez obtenir un moteur bourdonnant à la fois, selon la position de la boussole. Félicitations ! C’est tout cela. Maintenant le problème est, comment vous l’obtenir dans une ceinture ?