User:Asadabbas/ENES-100/Project 3 14

Week 0
Lightweight Robot

Problem Statement
The next project i was assigned to is the Lightweight Robot or "The beer retrieval robot".

Right now the robot has a working program that only runs the test code on the arduino

our next steps will be

- to find or write a new code that will work with the ping sensor.

- add a shovel arm to bring you beer (or anything else you want it to)

Week #1 Narrative
For this week i was assigned on working on the Lightweight robot but did not have any materials for the project

the next steps for this project were mainly related to programming the arduino

so i proceeded to play around with the arduino and practice writing various codes including

Fade: Demonstrates the use of analog output to fade an LED.

Blink Without Delay: blinking an LED without using the delay function.

Button: use a pushbutton to control an LED.

Week #2 Narrative
For Week 2 i continued working on arduino codes.

but now i wanted to move away from working with LEDs

now i want to move closer to what the project requires like the Ping sensor

The next step for the robot is to let it move around a room without bumping to any obstacles

we wanted to achieve this using the ultrasonic sensor.

An ultrasonic sensor senses and navigates exactly like a bat would. It sends off small sound wave every few milliseconds and detects how far they go before they bounce back to the sensor; and uses this information to gauge its surroundings.

the program i used to run the ping sensor was the one i found on arduino.cc

/* Ping))) Sensor  This sketch reads a PING))) ultrasonic rangefinder and returns the distance to the closest object in range. To do this, it sends a pulse to the sensor to initiate a reading, then listens for a pulse to return. The length of the returning pulse is proportional to   the distance of the object from the sensor. The circuit: * +V connection of the PING))) attached to +5V   * GND connection of the PING))) attached to ground * SIG connection of the PING))) attached to digital pin 7  http://www.arduino.cc/en/Tutorial/Ping   created 3 Nov 2008   by David A. Mellis   modified 30 Aug 2011   by Tom Igoe   This example code is in the public domain. */ // this constant won't change.  It's the pin number // of the sensor's output: const int pingPin = 7; void setup {  // initialize serial communication:  Serial.begin(9600); } void loop {  // establish variables for duration of the ping,   // and the distance result in inches and centimeters:  long duration, inches, cm;  // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. // Give a short LOW pulse beforehand to ensure a clean HIGH pulse: pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending  // of the ping to the reception of its echo off of an object.  pinMode(pingPin, INPUT);  duration = pulseIn(pingPin, HIGH);  // convert the time into a distance  inches = microsecondsToInches(duration);  cm = microsecondsToCentimeters(duration);  Serial.print(inches);  Serial.print("in, ");  Serial.print(cm);  Serial.print("cm");  Serial.println;   delay(100); }  long microsecondsToInches(long microseconds) {  // According to Parallax's datasheet for the PING))), there are // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per // second). This gives the distance travelled by the ping, outbound // and return, so we divide by 2 to get the distance of the obstacle. // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { // The speed of sound is 340 m/s or 29 microseconds per centimeter. // The ping travels out and back, so to find the distance of the // object we take half of the distance travelled. return microseconds / 29 / 2; } [Get Code]

Week #3 Narrative
For week three after we worked on the arduino code with no success we started considering newer ways to navigate the robot

one of the ways we came across was to use a light sensor instead of a ping sensor

the robot would have multiple sensors attached to the chassis that would recognise the light

Light sensor flow chart would go as follows -

1. we would use a flashlight or a laser and point it at the robot 2. one of the sensors would recognise which sensor the light was hitting 3. the sensors stop looking for light for 5 seconds 4. the robot will use this time to turn until the front center sensor is facing the last known position of the light. (the fact that the robot stop reading for the light source gives it time to quickly be able to turn towards the light.) 5. stop and re-locate light 6. after the light is primarily being sensed by the front center sensor the robot will stop looking for the light 7. move towards the last know location for 5 seconds 8. then look for the light again,