(med Video) Grundläggande Arduino Robot, ljus sökare! (7 / 8 steg)
Steg 7: Final koden
* Program för en enkel ljus söker Robot.
* skapade av: Anuj
* (c) copyright
*
* Robotic base bör omfatta differentiell enhet.
*
* Fysiska installationen:
* Två LDRs ansluten till marken och Analog pin 1(Right) och Analog pin 2(left)
* bas av NPN-transistorer på stift 11(right) och 12(left).
*
*
******************************************************************************************************************/
Med hjälp av Arduino Duemilinove
PIN definitioner - fäster en variabel till en PIN-kod.
CONST int RightMotor = 2; Detta stift används för att aktivera eller inaktivera rätt motor. Ansluten till basen av en NPN-transistor.
CONST int LeftMotor = 3; Detta stift används för att aktivera eller inaktivera vänstra motorn. Ansluten till basen av en NPN-transistor.
CONST int RightSensor = 1; Detta stift används för att läsa värdet för rätt sensorn.
CONST int LeftSensor = 2; Detta stift används för att läsa värdet på vänster sensorn.
Varierande definitioner
int SensorLeft; Detta lagrar värdet för vänster givarstaven att använda senare i skissen
int SensorRight; Här lagras värdet av rätt givarstaven att använda senare i skissen
int SensorDifference; Detta värde används för att avgöra skillnaden mellan vänster och höger
metoden setup() körs när när programmet körs. När den
Arduino återställs, setup() kommer att genomföras en gång.
void setup() {
pinMode (LeftMotor, OUTPUT); Definierar detta stift som en utgång. Arduinoen kommer att skriva värden till detta stift.
pinMode (RightMotor, OUTPUT); Definierar detta stift som en utgång. Arduinoen kommer att skriva värden till detta stift.
pinMode (LeftSensor, indata); Definierar detta stift som indata. Arduino läser värden från detta stift.
pinMode (RightSensor, indata); Definierar detta stift som indata. Arduino läser värden från detta stift.
digitalWrite (A1, hög); Gör en inre pullup motstånd
digitalWrite (A2, hög); Gör en inre pullup motstånd
Serial.BEGIN(9600); Kan en seriell anslutning via Arduino till antingen USB eller UART (stift 0 & 1). Observera att överföringshastigheten är inställd 9600
Serial.println ("\nBeginning ljus söker beteende"); Placeras i slutet av void Setup() så att det körs en gång, precis innan den ogiltiga Loop()
}
metoden loop() körs om och om igen,
så länge Arduino har makt
void loop() {
SensorLeft = 1023 - analogRead(LeftSensor); Detta läser värdet i sensorn och sedan sparar den till motsvarande heltal.
Delay(1);
SensorRight = 1023 - analogRead(RightSensor); Detta läser värdet i sensorn och sedan sparar den till motsvarande heltal.
Delay(1);
SensorDifference = abs (SensorLeft - SensorRight); Detta beräknas skillnaden mellan de två sensorerna och sedan sparar den till ett heltal.
Detta avsnitt av skiss används för att skriva ut värdena i de
sensorer via seriell till datorn. Användbart för att bestämma
om sensorerna arbetar och om koden också fungerar.
Serial.Print ("vänster Sensor ="); Skriver ut texten i citat.
Serial.Print(SensorLeft); Skriver ut värdet på vänster sensorn.
Serial.Print("\t"); Skriver ut en flik (mellanslag).
Serial.Print ("rätt Sensor ="); Skriver ut texten i citat.
Serial.Print(SensorRight); Skriver ut värdet av rätt sensorn.
Serial.Print("\t"); Skriver ut en flik (mellanslag).
Detta avsnitt av skiss är vilken faktiskt interperets data och sedan körs motorerna därefter.
om (SensorLeft > SensorRight & & SensorDifference > 75) {/ / detta tolkas som om vänstra sensorn läser mer ljus än höger sensorn, göra detta:
digitalWrite (RightMotor, hög); Detta används till sväng vänster. Märka den
digitalWrite (LeftMotor, låg); mittemot motor går att vända vänster.
Serial.println("left"); Detta skriver vänster när roboten skulle faktiskt sväng vänster.
}
om (SensorLeft < SensorRight & & SensorDifference > 75) {/ / detta tolkas som om vänstra sensorn läser mindre ljus än höger sensorn, göra detta:
digitalWrite (RightMotor, låg); Detta används till sväng höger. Märka den
digitalWrite (LeftMotor, hög); mittemot motor går att vända rätt.
Serial.println("Right"); Detta skriver rätt när roboten skulle faktiskt sväng höger.
}
annars om (SensorDifference < 75) {/ / detta tolkas som om skillnaden mellan de två sensorerna är under 125 (Experiment som passar våra sensorer), gör detta:
digitalWrite (RightMotor, hög); Detta används för att gå rakt. Varsel
digitalWrite (LeftMotor, hög); båda motorerna är aktiverade att gå framåt.
Serial.println("forward"); Detta skriver fram när roboten skulle faktiskt gå framåt.
}
Serial.Print("\n");
}