Stap 9: Testen van de componenten
-Arduino UNO $29.95
-2 x sensor van de nabijheid van de scherpe IR elke $14.95
-Standaard Servo $12.00
-vaste kern draad $2.50
-9 VDC adapter van de macht $6.95
Solderless Breadboard (optioneel)
Klei of Bluetack
Sluit de zwarte draden van de 2 IR-sensoren aan de grond en de rode draden aan op de 5v. Dan de gele kabel van de linker IR sensor A3 en de gele kabel van de linker IR sensor tot A2.
Verbind de zwarte draad van de Servo op grond, rood is 5v en wit naar pin 9.
Gebruik de klei of Bluetack te houden van de base van de servo in de plaats en de IR-sensoren aan het servo-wiel.
Upload de volgende code naar uw Arduino Board en de test. Code is gebaseerd op de ArdBot Line Na Robot Code, meer info hier.
/* Simple Pan Tracking with 2 IR Sensors Requires Arduino IDE version 0017 or later (0019 or later preferred) */ #include <Servo.h> Servo servo; // Define the servo const int lineLSense = A3; //Define the Left IR Sensor const int lineRSense = A2; //Define the Right IR Sensor int degree = 90; //Starting point of the Servo int irReflectR = 0; int irReflectL = 0; int thresh = 200; //You can adjust this threshold to manipulate the range of your IR sensor readings. void setup() { servo.attach(9); // servo pin D9 Serial.begin(9200); } void loop() { // Read reflective sensors int trav = 2; irReflectL = analogRead(lineLSense); irReflectR = analogRead(lineRSense); if (degree >= 180){ degree = 179; } if (degree <= 0){ degree = 1; } if (irReflectL >= thresh && irReflectR >= thresh) { Serial.println("on line"); } if (irReflectL >= thresh && irReflectR <= thresh) { servo.write(degree + trav); // veering off right degree=(degree + trav); delay(4); Serial.println("veering off right"); } if (irReflectL <= thresh && irReflectR >= thresh) { servo.write(degree - trav); // veering off left degree=(degree - trav); delay(4); Serial.println("veering off left"); } // If line is lost try to reacquire if (irReflectL < thresh && irReflectR < thresh) { Serial.println("lost"); delay(20); } } // Motion routines for line following void line_forward() { servo.write(0); } void line_slipRight() { servo.write(degree + 5); } void line_slipLeft() { servo.write(0); } void line_spinRight() { servo.write(180); } void line_spinLeft() { servo.write(0); }