Arduino ljus efter Robot (6 / 6 steg)
Steg 6: Arduino kod
Arduino kod och kalibrering. Ladda upp koden nedan till Arduino och följ kalibrering anvisningarna nedan koden.
/ * Ficklampa efter Robot kod 3/25/2014 Denna kod använder tre ljus beroende resistorer placeras Motorisk kontroll stift Följande motor hastigheter bestäms av experiment int sensorPinRight = 0; Rätt givarstaven int lightReadingRight; int lightReadingCenter; int lightReadingLeft; int readingDelay = 100; Fördröjning mellan avläsningar void setup() Avkommentera det seriella fodret för kalibrering void loop() Ta behandlingen från rätt sensor Ta behandlingen från center sensor Ta behandlingen från vänster sensor Gå vidare om tillräckligt med ljus detekteras från center sensor Sväng höger om tillräckligt med ljus detekteras från rätt sensor
höger fram och vänster sidor av en robot för kontroll
motion. När ljus av tillräcklig styrka faller på en av
sensorer, roboten vänder rätt, rör sig framåt eller vänder
vänster.
*/
int E1 = 5; Aktivera pin för rätt motor
int M1 = 4; Speed control pin för vänster motor
int E2 = 6; Aktivera pin för vänstra motorn
int M2 = 7. Speed control pin för rätt motor
så att roboten rör sig framåt i rät linje.
int leftMotorSpeed = 215.
int rightMotorSpeed = 185;
int sensorPinCenter = 1; Sensor mittstift
int sensorPinLeft = 2; Vänstra givarstaven
int lightToleranceRight = 1000; Sensor läsa behövs för att utlösa högersväng
int lightToleranceCenter = 1000; Sensor läsa behövs för att utlösa förflyttning framåt
int lightToleranceLeft = 1000; Sensor läsa behövs för att utlösa vänstersväng
{
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
Serial.BEGIN(9600);
}
{
Avkommentera seriell tryckta raderna för kalibrering
lightReadingRight = analogRead(sensorPinRight);
Serial.Print ("rätt Sensor läsa:");
Serial.println(lightReadingRight);
lightReadingCenter = analogRead(sensorPinCenter);
Serial.Print ("centrera Sensor läsa:");
Serial.println(lightReadingCenter);
lightReadingLeft = analogRead(sensorPinLeft);
Serial.Print ("vänster Sensor läsa:");
Serial.println(lightReadingLeft);
om (lightReadingCenter > lightToleranceCenter)
{
digitalWrite (M1, hög).
digitalWrite (M2, hög);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
Delay(readingDelay);
Stanna
digitalWrite (M1, låg).
digitalWrite (M2, låg);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
om (lightReadingRight > lightToleranceRight)
{
digitalWrite (M1, låg).
digitalWrite (M2, hög);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
Delay(readingDelay);
Stanna
digitalWrite (M1, låg).
digitalWrite (M2, låg);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Sväng vänster om tillräckligt med ljus detekteras från vänster sensor
om (lightReadingLeft > lightToleranceLeft)
{
digitalWrite (M1, hög).
digitalWrite (M2, låg);
analogWrite (E1, leftMotorSpeed);
analogWrite (E2, rightMotorSpeed);
Delay(readingDelay);
Stanna
digitalWrite (M1, låg).
digitalWrite (M2, låg);
analogWrite (E1, 0);
analogWrite (E2, 0);
}
Delay(5000); Avkommentera denna lång försening för motor kalibrering
}
Med denna kod laddas upp till roboten, koppla motorerna och öppna den seriella bildskärmen för att ta en titt på avläsningarna från ljussensorer. Jag gjorde min kalibrering i normala rum ljus. Var och en av den avtäckta sensorer gav avläsningar i intervallet 1000 till 1100. Jag justerade långsamt trimmare till varje sensor läsa omkring 1000. Lite mer eller lite mindre är okej. När jag täckte en sensor från ljus, tappade behandlingen till den höga 800s till låga 900-talet. I Arduino koden satte jag tre tolerans variabler. lightToleranceLeft, lightToleranceRight, och lightToleranceCenter till 1000. Således, när roboten är i mörker, alla avläsningar kommer vara under 1000 trigger. När en ficklampa visas på en sensor, kommer den sensor behandlingen gå ovanför avtryckaren och aktivera lämplig rörelse roboten.
De särskilda nummer som jag använde för min särskilda sensorer är inte viktiga. Det är viktiga att du skickar sensormätningar till seriell bildskärmen för att få deras omgivande ljus avläsningar. Sedan långsamt justera trimmare på sensorer tills avläsningarna från alla tre sensorer är ungefär samma. Sedan täcka upp varje sensor och du borde få en lägre läsning. Ange din tolerans variabler till några behandlingen nära omgivande ljus läsning. En ficklampa lyser på sensorn bör sedan åberopa en högre än toleransen, alltså aktivera roboten läsning.
En sista sak angående kalibrering. I botten av Arduino-koden är en kommenterade linje med en fördröjning på fem sekunder. Jag okommenterade denna linje så att motorerna var korrekt ansluten. Med roboten tillfälligt från marken, kör kod med robot i mörkret. Skina ett ljus på främre sensorn och med ditt händer känns som långt hjulen vänder. Om en av dem rör sig bakåt i stället för framåt, byta position trådar av den motorn på motor skölden. Nästa skina ett ljus på rätt sensorn och känna hjulen. Högra hjulet ska gå bakåt och vänstra hjulet ska gå framåt. Om motsatsen händer, byta motor positioner. M1 + blir M2 + och M1 - blir M2- och vice versa. Slutligen, kommentera ut de fem sekunders fördröjning och ladda upp koden igen. Roboten bör vara redo att gå.