Stap 7: De CODE van de ARDUINO
De code van de belangrijkste blok is heel eenvoudig:
void loop)
{
checkBTcmd (); CONTROLEREN als de opdracht wordt ontvangen van BT-afstandsbediening
receiveCmd ();
Als (aandraaien) manualCmd ();
anders stopRobot ();
}
Het eerste ding om te doen is om te controleren of er nieuwe BT commando komt. Wie zal dit controleren is 'checkBTcmd ()'-functie:
VOID checkBTcmd () / / controleren als de opdracht is ontvangen van BT-afstandsbediening
{
Als (BT1.available ())
{
opdracht = BT1.read ();
BT1.Flush ();
}
}
De variabele "turnOn" wordt gebruikt om de kar voor bijlagen uitschakelen. De functie "receiveCmd ()" zal worden belast met de status van deze variabele definiëren als een functie van de ontvangen BT module opdracht. Merk op dat de gebruikte logica, telkens wanneer de rode knop met het symbool van de "Macht" is ingedrukt, het teken 'p' zal worden verzonden door de app en variabele "turnOn" verandert als de waarde (van 1 naar 0 en vice versa):
de void (receiveCmd)
{
schakelaar (opdracht)
{
letter 'p':
aandraaien = turnOn!;
opdracht = 0;
analogWrite (LEDStatus, aandraaien * 128); Robot ON - leidde op
Beep (outBuz, 1000, 100);
BT1.Print ("opdracht in / uit");
BT1.println (' \ n');
vertraging (200); Vertraging aandacht vragen voor moduswijziging
breken;
geval ben ': / / hier niet gebruikt
breken;
}
}
Terug te keren naar de hoofdlus terwijl de variabele "inschakelen" hoog (1 is), voert de functie "manualCmd" een opdracht afhankelijk van de ontvangen karakter:
de void (manualCmd)
{
schakelaar (opdracht)
{
Case "f":
moveStop (); Uitschakelen van beide motoren
staat = commando;
breken;
Case 'w':
moveForward ();
staat = commando;
breken;
geval zou ':
moveRight ();
breken;
geval 'a':
moveLeft ();
breken;
geval van ':
moveBackward ();
staat = commando;
breken;
geval '+':
Als (staat == 'w')
{
MotorSpeed MotorSpeed = + 10;
Als (MotorSpeed > MAX_SPEED) MotorSpeed = MAX_SPEED;
opdracht = 'w';
} Else command = staat;
breken;
geval '-':
Als (staat == 'w') = MotorSpeed MotorSpeed - 10;
Als (MotorSpeed
opdracht = staat;
breken;
}
}
Bijvoorbeeld, als de "w"-opdracht is ontvangen de specifieke functie de kar om verder te gaan: "moveForward (") wordt uitgevoerd.
Als "PowerOn" is hoog, maar de "POWER"-toets is ingedrukt, zal de variabele "PowerOn", en zijn "toggle" LOW "(stopRobot")-functie zal worden uitgevoerd in plaats van 'manualCmd ()'. Deze functie zorgt ervoor dat de achterste motor wordt gestopt, de LEDs af en het nulpunt van de variabelen.
de void (stopRobot)
{
digitalWrite (ledBlue, laag);
digitalWrite (ledRed, laag);
staat = 0;
moveStop (); Uitschakelen van beide motoren
}