Stap 6: Arduino code
Arduino code en kalibratie. Uploaden van de code die hieronder wordt gegeven aan de Arduino en volg de aanwijzingen van de kalibratie hieronder de code.
/ * Zaklamp na Robot, Code 3/25/2014 Deze code maakt gebruik van drie lichte afhankelijke weerstanden geplaatst Motorische controle pinnen De volgende motor snelheden worden bepaald door experiment int sensorPinRight = 0; Juiste sensor pin int lightReadingRight; int lightReadingCenter; int lightReadingLeft; int readingDelay = 100; De wachttijd tussen de lezingen VOID Setup Uncomment de seriële feed voor calibratie doeleinden void loop Neem lezing van juiste sensor Neem lezing van centrum sensor Neem lezing van links sensor Vooruit als voldoende licht van centrum sensor wordt gevonden Sla rechtsaf als voldoende licht van juiste sensor wordt gevonden
aan de rechterkant, de voorkant en de linker zijden van een robot te controleren
beweging. Wanneer licht van voldoende sterkte valt op een van
de sensoren, de robot draait rechts, naar voren beweegt of draait
links.
*/
int E1 = 5; Laat speld voor juiste motor
int M1 = 4; Snelheid controle pin voor linker motor
int E2 = 6; Pin voor de linker motor inschakelen
int M2 = 7; Snelheid controle pin voor juiste motor
zodat de robot vooruit in een rechte lijn gaat.
int leftMotorSpeed = 215;
int rightMotorSpeed = 185;
int sensorPinCenter = 1; Centrum pin van de sensor
int sensorPinLeft = 2; Linker sensor pin
int lightToleranceRight = 1000; Sensor lezen moest leiden tot rechtsaf
int lightToleranceCenter = 1000; Sensor lezen moest leiden tot voorwaartse beweging
int lightToleranceLeft = 1000; Sensor lezen moest leiden tot linksaf
{
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
Serial.begin(9600);
}
{
Uncomment de regels seriële afdrukken voor calibratie doeleinden
lightReadingRight = analogRead(sensorPinRight);
Serial.Print ("rechts Sensor lezen:");
Serial.println(lightReadingRight);
lightReadingCenter = analogRead(sensorPinCenter);
Serial.Print ("Centreren sensorgegevens:");
Serial.println(lightReadingCenter);
lightReadingLeft = analogRead(sensorPinLeft);
Serial.Print ("links sensorgegevens:");
Serial.println(lightReadingLeft);
Als (lightReadingCenter > lightToleranceCenter)
{
digitalWrite (M1, hoge);
digitalWrite (M2, hoge);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
delay(readingDelay);
Stop
digitalWrite (M1, laag);
digitalWrite (M2, laag);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Als (lightReadingRight > lightToleranceRight)
{
digitalWrite (M1, laag);
digitalWrite (M2, hoge);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
delay(readingDelay);
Stop
digitalWrite (M1, laag);
digitalWrite (M2, laag);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Linksaf als voldoende licht van links sensor wordt gevonden
Als (lightReadingLeft > lightToleranceLeft)
{
digitalWrite (M1, hoge);
digitalWrite (M2, laag);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
delay(readingDelay);
Stop
digitalWrite (M1, laag);
digitalWrite (M2, laag);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
delay(5000); Uncomment deze lange vertraging voor motor calibratie doeleinden
}
Met deze code geüpload naar de robot, koppel de motoren en open de seriële monitor een kijkje nemen op de lezingen van de lichte sensoren. Ik deed mijn kalibratie in normale kamer licht. Elk van de ongedekte sensoren gaf lezingen in het bereik van 1000 tot 1100. Ik heb aangepast langzaam de grastrimmers totdat elke sensor Lees ongeveer 1000. Een beetje meer of een beetje minder is goed. Wanneer ik verdoezeld een sensor van licht, zakte de lezing naar de hoge 800s tot lage 900s. In de Arduino code stel ik de tolerantie van de drie variabelen; lightToleranceLeft, lightToleranceRight, en lightToleranceCenter tot 1000. Dus, wanneer de robot in duisternis is, alle lezingen zullen hieronder het triggerniveau van 1000. Wanneer een zaklamp in een sensor wordt weergegeven, zal de sensorgegevens gaan boven het triggerniveau en activeer de juiste beweging van de robot.
De specifieke nummers die ik voor mijn specifieke sensoren gebruikte zijn niet belangrijk. Belangrijk is dat je de sensor lezingen naar de seriële monitor sturen om hun ambient licht lezing. Dan pas langzaam de grastrimmers op de sensoren totdat de lezingen van alle drie sensoren ongeveer hetzelfde zijn. Vervolgens verdoezelen elke sensor en moet je een lagere lezing. Stel uw tolerantie variabelen om wat te lezen in de buurt van de ambient licht lezing. Een zaklamp schijnen op de sensor moet dan beroep doen op een lezing die hoger is dan de tolerantie, dus het activeren van de robot.
Een laatste ding met betrekking tot de kalibratie. Aan de onderkant van de Arduino-code is een commentaar lijn met een vertraging van vijf seconden. Ik uncommented deze regel om ervoor te zorgen dat de motoren correct zijn aangesloten. Met de robot geschorst van de grond, de code uitvoert met de robot in het donker. Een licht schijnen op de voorste sensor en met je handen voelen die manier de wielen draaien. Als een van hen in beweging achteruit in plaats van vooruit is, schakelen de positie van de draden van die motor op de motor schild. Vervolgens een licht schijnen op de juiste sensor en het gevoel van de wielen. Het juiste wiel moet gaan achteruit en het linker wiel moet gaan. Als het tegendeel gebeurt, ruilen de motor posities. M1 + wordt M2 + en M1 - M2- en vice versa. Ten slotte, commentaar uit de vijf seconden vertraging en de code opnieuw te uploaden. De robot moet klaar om te gaan.