Stap 6: Tuning de controle lus
Het doel is om beide photoresistors te lezen van het hetzelfde niveau van licht. Het programma berekent dit door één lichtsensor waarde van de andere af te trekken. Als deze waarde gelijk is aan nul (0), zijn de lichte sensoren beide lezen hetzelfde niveau van licht. Als dat niet het geval is, wordt het programma zal het draaien van de robot om deze fout te corrigeren. Zodra dit gebeurt, de robot moet worden geconfronteerd met de lichtbron.
In deze zeer eenvoudige controle lus is de setpoint gelijk aan nul (waar beide lichtsensor aan het lezen bent dezelfde waarde). De output is de motor snelheid en richting.
Het is onwaarschijnlijk dat het programma erg goed zonder enige aanpassing werken zal. Dit heet "tuning de lus".
De winst-waarde is ingesteld op "3" om te beginnen. De waarde aan te passen, is hoe de controle lus is afgestemd. Als de robot te draait snel of is acteren 'springerig' verminderen de winst. Als de robot is te langzaam, verhoogt u de waarde van de winst. Na het aanpassen van de winst, herlaad de programma en zien als gedrag van de robot is verbeterd. Succes!
geval 'g': //follow het licht
krijgen = 3;
temp_var = (lightsensor_left - lightsensor_right) * krijgen;
Als (temp_var > 0)
{
digitalWrite (dir_a, hoge);
digitalWrite (dir_b, laag);
Serial.println ("Left\n draaien");
}
anders
{
digitalWrite (dir_a, laag);
digitalWrite (dir_b, hoge);
Serial.println ("Right\n draaien");
}
Serial.println(temp_var);
temp_var=ABS(temp_var);
if(temp_var > 255)
{
temp_var = 255;
}
analogWrite (pwm_a, temp_var);
analogWrite (pwm_b, temp_var);
breken;