Stap 5: Afwerking van het Prototype
Geweldig! Nu heb je een rubriek en 8 motoren klaar buzz op uw biedingen. Ze moeten allemaal aangesloten op de Arduino, ook. Hier is de code die ik gebruikte om te verenigen naar de tweetal. Merk op dat ik hield de seriële interface zodat ik zou kunnen lossen. U zult willen van elke motor activering regio's gecompenseerd door een bepaald aantal graden op basis van het kompas rubriek ten opzichte van zijn plaats op de gordel zodra je alles samen, en het is goed om te kunnen zien hoeveel graden, u gecompenseerd wilt door. Dat deel moet wachten totdat u de gordel samengesteld, maar hebben.#include < Wire.h >
Ik gebruikte pinnen 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, uitvoer);
pinMode (NEPin, uitvoer);
pinMode (EPin, uitvoer);
pinMode (SEPin, uitvoer);
pinMode (SPin, uitvoer);
pinMode (SWPin, uitvoer);
pinMode (WPin, uitvoer);
pinMode (NWPin, uitvoer);
}
void loop
{
Wire.beginTransmission(0x21);
Wire.write("A");
delay(100);
Wire.requestFrom(0x21, 2);
byte MSB = Wire.read();
byte LSB = Wire.read();
Wire.endTransmission();
zweven degs = ((MSB << 8) + LSB) / 10;
Serial.Print(DEGS);
Serial.println ("degrees.");
Speciaal geval met Champagne pin om te gaan met het oversteken van 0 graden.
Als ((degs > = 337.5 & & degs < = 360) || (degs > = 0.0 & & degs < 22,5))
{
digitalWrite (NPin, hoge);
}
anders
{
digitalWrite (NPin, laag);
}
Controleer alle andere richtingen met behulp van een 45-graden bereik.
Als (degs > = 22,5 & & degs < 67,5)
{
digitalWrite (NEPin, hoge);
}
anders
{
digitalWrite (NEPin, laag);
}
Als (degs > = 67,5 & & degs < 112,5)
{
digitalWrite (EPin, hoge);
}
anders
{
digitalWrite (EPin, laag);
}
Als (degs > = 112,5 & & degs < 157,5)
{
digitalWrite (SEPin, hoge);
}
anders
{
digitalWrite (SEPin, laag);
}
Als (degs > = 157,5 & & degs < 202.5)
{
digitalWrite (SPin, hoge);
}
anders
{
digitalWrite (SPin, laag);
}
Als (degs > = 202.5 & & degs < 247,5)
{
digitalWrite (SWPin, hoge);
}
anders
{
digitalWrite (SWPin, laag);
}
Als (degs > 247,5 = & & degs < 292,5)
{
digitalWrite (WPin, hoge);
}
anders
{
digitalWrite (WPin, laag);
}
Als (degs > = 292,5 & & degs < 337.5)
{
digitalWrite (NWPin, hoge);
}
anders
{
digitalWrite (NWPin, laag);
}
delay(100);
}
Die upload of gelijkwaardig, en moet je een motor zoemen op een moment, afhankelijk van het kompas rubriek. Congrats! Dat is het hele ding. Nu het probleem is, hoe je het in een gordel?