Stap 9: De definitieve Code
Bij deze stap, de Robot een constante lus kunt volgen en zal doen w/o stop.
Het programma lus zou zijn:
void loop)
{
readLFSsensors(); lezen van sensoren, opslag waarden op Sensor Array en berekenen van 'fout'
calculatePID();
motorPIDcontrol();
}
Maar voor een meer volledige en echte werking, is het belangrijk om toe te voegen ten minste een paar grondbeginselen "opdrachten" gedaan "met de regel". Bijvoorbeeld, laten we introduceren een nieuwe variabele: 'modus'. We zullen 3 Staten voor deze variabele definiëren:
modus:
- #define gestopt 0
- #define FOLLOWING_LINE 1
- #define NO_LINE 2
Als alle sensoren een zwarte lijn vindt, de Sensor Array uitvoer zou zijn: 1 1 1 1 1. In deze voorwaarde, kunnen we definiëren modus als "Gestopt" en de "full stop" moet worden uitgevoerd door de Robot.
als ((LFSensor [0] == 1) & & (LFSensor [1] == 1) & & (LFSensor [2] == 1) & & (LFSensor [3] == 1) & & (LFSensor [4] == 1)) {modus = gestopt; }
- Andere gemeenschappelijke situatie met volgeling lijn Robots is waarbij het sticht "geen lijn", of de Sensor Array output: 0 0 0 0 0. In dit geval kunnen we het programma terug 180o of uitschakelen in kleine hoeken tot een lijn te vinden is en de normale lijn volgen voorwaarde wordt hervat.
anders als ((LFSensor [0] == 0) & & (LFSensor [1] == 0) & & (LFSensor [2] == 0) & & (LFSensor [3] == 0) & & (LFSensor [4] == 0)) {modus = NO_LINE;)
De volledige lus () zou zijn:
void loop
{
readLFSsensors();
schakelaar (modus)
{
Case gestopt:
motorStop();
breken;
Case NO_LINE:
motorStop();
motorTurn (links), 180;
breken;
Case FOLLOWING_LINE:
calculatePID();
motorPIDcontrol();
breken;
}
}
De echte definitieve code zal geïntegreerd wat extra logica en ook bepaalde variabele moet worden geïnitialiseerd, enz. Tijdens de stappen uitleg, ik liet hen uit voor eenvoud, maar alles moet duidelijk definitieve code bekijkt.
Blaten de definitieve Arduino-Code: