Mr obeslutsamhet - en liten kände version av dig själv som vänder sitt huvud och tittar på dig. (9 / 11 steg)
Steg 9: Testa komponenterna
-Arduino UNO $29.95
-2 x skarp IR-Närhetssensor $14.95 varje
-Standard Servo $12.00
-solid kabel $2,50
-9 VDC strömadapter $6,95
Lödfritt set av brödunderläggen (valfritt)
Lera eller Bluetack
Anslut de svarta kablarna av 2 IR-sensorer till marken och de röda kablarna till 5v. Sedan den gula kabeln av vänster IR-sensorn till A3 och den gula kabeln av vänster IR-sensorn till A2.
Anslut den svarta kabeln på Servo till marken, röd 5v och vit till pin 9.
Använda lera eller Bluetack för att hålla basen av servo på plats och IR-sensorer till servo hjulet.
Ladda upp följande kod till din Arduino ombord och test. Koden bygger på Ardbots raden efter Robot kod, mer information här.
/*
Enkla Pan spårning med 2 IR-sensorer
Kräver Arduino IDE version 0017
eller senare (0019 eller senare rekommenderad)
*/
#include < Servo.h >
Servo servo; Definiera servo
CONST int lineLSense = A3; Definiera vänster IR-Sensor
CONST int lineRSense = A2; Definiera rätt IR-Sensor
int grad = 90. Utgångspunkten för Servo
int irReflectR = 0;
int irReflectL = 0;
int tröska = 200. Du kan justera denna tröskel för att manipulera spänna av din IR sensormätningar.
void setup() {
servo.attach(9); servo pin D9
Serial.BEGIN(9200);
}
void loop() {
Läs reflekterande sensorer
int trav = 2;
irReflectL = analogRead(lineLSense);
irReflectR = analogRead(lineRSense);
om (grad > = 180) {
grad = 179;
}
om (grad < = 0) {
grad = 1;
}
om (irReflectL > = tröska & & irReflectR > = tröska) {
Serial.println ("på linjen").
}
om (irReflectL > = tröska & & irReflectR < = tröska) {
servo.write (grad + trav); pendlade rätt
grad = (grad + trav);
Delay(4);
Serial.println ("pendlade rätt");
}
om (irReflectL < = tröska & & irReflectR > = tröska) {
servo.write (grad - trav); pendlade vänster
grad = (grad - trav);
Delay(4);
Serial.println ("pendlade vänster");
}
Om linjen bryts försöka hämta igen
om (irReflectL < tröska & & irReflectR < tröska) {
Serial.println("Lost");
Delay(20);
}
}
Motion rutiner för linje efter
void line_forward() {
servo.write(0);
}
void line_slipRight() {
servo.write (grad + 5);
}
void line_slipLeft() {
servo.write(0);
}
void line_spinRight() {
servo.write(180);
}
void line_spinLeft() {
servo.write(0);
}