Version 3 (modified by 6 years ago) (diff) | ,
---|
Ultrasonic Rangefinder
Robots need to sense the environment around them, particularly when driving autonomously. Ultrasonic sensors are like the sonar used by bats. They emit a chirp of sound and measure the time it takes to hear an echo of that chirp. The longer the time, the further the sound traveled. Since sound travels at a particular speed through air, we can use the echo delay to calculate how far away the object was that reflected the sound. You can read more about ultrasonic sensors here
Create another program using the TimedRobot java template and name it UltrasonicTest. Modify the generated code as follows:
- import the Ultrasonic class
import edu.wpi.first.wpilibj.Ultrasonic;
- declare a ultrasonic variable in the Robot class
private Ultrasonic f_ultrasonic;
- in robotInit() instantiate an ultrasonic object and set it to start automatically ranging
f_ultrasonic = new Ultrasonic(1,0); f_ultrasonic.setAutomaticMode(true);
- in robotPeriodic() read and display the range
if (f_ultrasonic.isRangeValid()) { SmartDashboard.putNumber("Front range", f_ultrasonic.getRangeInches()); }
Run the program and observe the "Front range" value in the Smart Dashboard as you move the robot towards and away from the wall.
Notice that the measurements aren't always perfect; the sensor may receive echos from multiple surfaces.
Extra Credit: explore more advanced ultrasonic sample program here
Attachments (1)
-
UltrasonicSensor.jpg (147.7 KB) - added by 6 years ago.
Ultrasonic Sensor
Download all attachments as: .zip