Rad efterföljare Robot - PID Control - Android Setup (9 / 12 steg)
Steg 9: Den final koden
I detta steg, roboten kan följa en ständig loop och kommer att göra det utan stopp.
Loop programmet skulle vara:
Ogiltig loop)
{
readLFSsensors(); Läs sensorer, lagring värden på Sensor Array och beräkna "fel"
calculatePID();
motorPIDcontrol();
}
Men för en mer komplett och riktig operation, det är viktigt att lägga till åtminstone ett par grunderna "kommandon" klar "med raden". Till exempel, låt oss införa en ny variabel: "mode". Vi kommer att definiera 3 stater för denna variabel:
läge:
- #define slutat 0
- #define FOLLOWING_LINE 1
- #define NO_LINE 2
Om alla sensorer hittar en svart linje, Sensor Array produktionen skulle vara: 1 1 1 1 1. I detta tillstånd, kan vi definiera läge som "Stoppad" och roboten ska utföra en "full stop".
om ((LFSensor [0] == 1) & & (LFSensor [1] == 1) & & (LFSensor [2] == 1) & & (LFSensor [3] == 1) & & (LFSensor [4] == 1)) {läge = stoppad; }
- Andra gemensamma situationen med efterföljare linje robotar är var det grundar "ingen linje" eller Sensor Array utdata: 0 0 0 0 0. I detta fall kan vi programmera den att vända tillbaka 180 eller vända i små vinklar tills en linje är att hitta och det normala linjen följa villkoret återupptas.
annars om ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) {läge = NO_LINE;)
Den kompletta loop () skulle vara:
void loop()
{
readLFSsensors();
Switch (läge)
{
fall stoppad:
motorStop();
bryta;
fall NO_LINE:
motorStop();
motorTurn (vänster, 180);
bryta;
fall FOLLOWING_LINE:
calculatePID();
motorPIDcontrol();
bryta;
}
}
Den verkliga final koden kommer integreras några ytterligare logik och även vissa variabel måste initieras, osv. Under steg förklaring, jag lämnade dem ut för enkelhet, men allt ska vara klart titta på final koden.
Nedan den final Arduino koden: