Difference between revisions of "Analog Distance Sensor"
From Mech
Jump to navigationJump to searchJaneMiller (talk | contribs) (Created page with " == Sharp 4-30 cm Analog Distance Sensor == '''Summary''' *This sensor detects reflective objects that are 4-30 cm away. *The sensor outputs a voltage from approximately 0-3...") |
JaneMiller (talk | contribs) |
||
Line 13: | Line 13: | ||
'''Programming''' |
'''Programming''' |
||
*Looking at the graph on page 4 [https://www.pololu.com/file/0J713/GP2Y0A41SK0F.pdf '''in the datasheet for the sensor'''] |
*Looking at the graph on page 4 [https://www.pololu.com/file/0J713/GP2Y0A41SK0F.pdf '''in the datasheet for the sensor'''], it looks like the range of 4-30 cm corresponds to a range of 2.5-0.4 volts. |
||
*We can use the Arduino's analogRead() function to read in this signal. By using the analogRead function, our result will be a number in the range 0-1023, which corresponds to 0-5 volts. |
|||
*To calibrate and find values for our sensor, we can stream the output values of our sensor using a program similar to [http://arduino.cc/en/Tutorial/AnalogReadSerial '''this example'''] from the Arduino website: |
|||
<pre> |
|||
/* |
|||
AnalogReadSerial |
|||
Reads an analog input on pin 0, prints the result to the serial monitor. |
|||
Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. |
|||
This example code is in the public domain. |
|||
*/ |
|||
// the setup routine runs once when you press reset: |
|||
void setup() { |
|||
// initialize serial communication at 9600 bits per second: |
|||
Serial.begin(9600); |
|||
} |
|||
// the loop routine runs over and over again forever: |
|||
void loop() { |
|||
// read the input on analog pin 0: |
|||
int sensorValue = analogRead(A0); |
|||
// print out the value you read: |
|||
Serial.println(sensorValue); |
|||
delay(1); // delay in between reads for stability |
|||
} |
|||
</pre> |
|||
*To trigger some event when an object is further than a certain distance away, instead of using Serial.println on our sensorValue variable, we could compare it to some min_value variable using an if statement: |
|||
<pre> |
|||
int min_val=30; |
|||
void setup(){ |
|||
} |
|||
void loop() { |
|||
//read sensor value |
|||
int sensorValue= analogRead(A0) |
|||
//convert this value to a distance, consider using the "map" function |
|||
if (sensorValue > min_val) |
|||
{ |
|||
// activate your event using a digitalWrite or some other function |
|||
} |
|||
delay(1); //delay between readings |
|||
} |
|||
</pre> |
|||
*Try using this distance sensor with a few RGB LEDs to "show" how far away an object is with the intensity of the color of the LEDs! |
|||
**Try using the RGB LEDs with this sensor like a red/yellow/green stoplight |
Latest revision as of 19:18, 27 March 2015
Sharp 4-30 cm Analog Distance Sensor
Summary
- This sensor detects reflective objects that are 4-30 cm away.
- The sensor outputs a voltage from approximately 0-3.3 volts which you can read into a microcontroller
Wiring
- This sensor has three cables coming out of it: red-power, black-ground and white-signal.
- Wire the power cable to the Arduino's 5V, the ground to the Arduino's ground
- Plug the signal cable into any of the Arduino's analog input pins (A0-A5 for the Arduino UNO) with a small pull-down resistor
Programming
- Looking at the graph on page 4 in the datasheet for the sensor, it looks like the range of 4-30 cm corresponds to a range of 2.5-0.4 volts.
- We can use the Arduino's analogRead() function to read in this signal. By using the analogRead function, our result will be a number in the range 0-1023, which corresponds to 0-5 volts.
- To calibrate and find values for our sensor, we can stream the output values of our sensor using a program similar to this example from the Arduino website:
/* AnalogReadSerial Reads an analog input on pin 0, prints the result to the serial monitor. Attach the center pin of a potentiometer to pin A0, and the outside pins to +5V and ground. This example code is in the public domain. */ // the setup routine runs once when you press reset: void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); } // the loop routine runs over and over again forever: void loop() { // read the input on analog pin 0: int sensorValue = analogRead(A0); // print out the value you read: Serial.println(sensorValue); delay(1); // delay in between reads for stability }
- To trigger some event when an object is further than a certain distance away, instead of using Serial.println on our sensorValue variable, we could compare it to some min_value variable using an if statement:
int min_val=30; void setup(){ } void loop() { //read sensor value int sensorValue= analogRead(A0) //convert this value to a distance, consider using the "map" function if (sensorValue > min_val) { // activate your event using a digitalWrite or some other function } delay(1); //delay between readings }
- Try using this distance sensor with a few RGB LEDs to "show" how far away an object is with the intensity of the color of the LEDs!
- Try using the RGB LEDs with this sensor like a red/yellow/green stoplight