We had a great day on Saturday at a workshop in Enniscorthy with some local budding engineers.. The robots we built used the Arduino nano and had two colour sensors on the front. The robot tries to keep BOTH sensors over a bright tape on a dark surface. This allows it to follow a winding track along the ground. The code for this robot is listed below. Please post back any comments or changes.
// // RoboSlam example: This code makes use of two colour sensors // The program will attempt to keep BOTH sensors over a bright // tape on a dark surface. If the robot moves off the tape // corrective action will be take. Care must be taken to // position the sensors the "right" distance from the tape. // This may take a little experimentation. // Declare an integer variable to store the colour readings int leftcolour; int rightcolour; // The setup routine runs once when the power is switched on. void setup() { // Digital output for LED pinMode(2, OUTPUT); // Digital outputs for left motor pinMode(3, OUTPUT); pinMode(4, OUTPUT); // Digital outputs for right motor pinMode(7, OUTPUT); pinMode(8, OUTPUT); // Open serial port to display colour readings on screen Serial.begin(9600); } // The loop routine runs over and over until the power is switched off. void loop() { // Read the voltage on pins A0 and A1 (the colour sensors, high value implies white) leftcolour = analogRead(A0); rightcolour = analogRead(A1); // Choose motor action based on colour reading if ( (leftcolour > 512) && (rightcolour > 512)) { // both white, go straight digitalWrite(2, LOW); // LED off digitalWrite(3, HIGH); // Left motor forward digitalWrite(4, LOW); digitalWrite(7, HIGH); // Right motor forward digitalWrite(8, LOW); } else { if (leftcolour <= 512) { // black detected on left, so turn to the right digitalWrite(2, HIGH); // LED on digitalWrite(3, HIGH); // Left motor forward digitalWrite(4, LOW); digitalWrite(7, LOW); // Right motor reverse digitalWrite(8, HIGH); } if (rightcolour <= 512) { // black detected on right, so turn to the left digitalWrite(2, HIGH); // LED on digitalWrite(3, LOW); // Left motor reverse digitalWrite(4, HIGH); digitalWrite(7, HIGH); // Right motor forward digitalWrite(8, LOW); } } }
Pictures of an assembled two-eyes robot
Hi,
I’ve uploaded the program onto the Arduino Nano but I’ve messed up the wiring on the breadboard. Can you send a picture of the breadboard with the 2 sensors connected on it.
Thank You.
LikeLike
Hi,we hope to be building a new batch of robots in the next few days. We can post a picture right after that.
LikeLike
thanx
LikeLike
I have added some pictures of an assembled robot and hopefully this will help with your wiring problems. Please reply if you are having difficulties.
LikeLike