Hall effekt sensorer 2: Synkroniserar rörelse (3 / 6 steg)
Steg 3: Flytta manöverdonen
Det finns två funktioner som rör manöverdonet. En är för att gå framåt, den andra för omvänd. De är i huvudsak samma, bara skiljer vilka variabler ändras och vilka hastigheter justeras. Se den första funktionen nedan. Det finns några Serial.prints() ingår att kan ha kommentarerna bort för felsökning ändamål.
void goForwards()
{
om (prev [0] == 1 & & sw [0] == 0) firstRun = sant;
annat firstRun = false; //when växeln ändras, använda firstRun dröjsmål
framåt = sant;
baklänges = false; //set riktning
fullyRetracted = false; //once flyttas framåt, inte längre tillbaka
Serial.println ("flytta framåt");
SPDEN [0] = FWDspd;
SPDEN [1] = 0;
SPDEN [2] = FWDspd;
SPDEN [3] = 0; Ange bas hastigheter
FWDsync (); //update hastigheter baserat på hall effekt räknas
getFeedback (); //check strömförbrukning
digitalWrite (enable0, hög);
digitalWrite (enable1, hög); //enable båda styrelser
Serial.Print ("inte utöka"), Serial.println(dontExtend);
om (dontExtend == true)
{
digitalWrite (enable0, låg);
digitalWrite (enable1, låg); //disable båda styrelser om inte tillåtet att förlänga
}
fördröjning (10), //slight dröjsmål
Serial.Print ("hastigheter"), Serial.print(spd[0]), Serial.print (","), Serial.print(spd[1]);
Serial.Print (","), Serial.print(spd[2]), Serial.print (","), Serial.println(spd[3]);
analogWrite (PWMA0, spd[0]);
analogWrite (PWMB0, spd[1]);
analogWrite (PWMA1, spd[2]);
analogWrite (PWMB1, spd [3]), //set hastigheter
om (firstRun == true) delay(timedelay[0]);
annat delay(timedelay[1]); liten fördröjning att komma till för nuvarande avläsningar
dontRetract = false; //once du har gått framåt, kan du flytta tillbaka igen.
firstRun = false;
} //end goForwards
Synkronisera magin händer i subrutinen FWDsync(). Vi ska täcka som i nästa steg. Bifogat är den fullständiga koden.