HC-SR04 Ultrasonic Sensor Distance Measuring Module
Jump to navigation
Jump to search
HC-SR04 Ultrasonic Sensor Distance Measuring Module
- Model: HC-SR04
- Working voltage : 5V(DC)
- Static current: Less than 2mA.
- Output signal: Electric frequency signal, high level 5V, low level 0V.
- Sensor angle: Not more than 15 degrees.
- Detection distance: 2cm~450cm.
- High precision: Up to 3mm
- Mode of connection: VCC / trig(T) / echo(R) / GND
- Module Working Principle:
- Adopt IO trigger through supplying at least 10us sequence of high level signal
- The module automatically send eight 40khz square wave and automatically detect whether receive the returning pulse signal
- If there is signals returning, through outputting high level and the time of high level continuing is the time of that from the ultrasonic transmitting to receiving
A lire
- http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1272177425
- http://iteadstudio.com/application-note/arduino-library-for-ultrasonic-ranging-module-hc-sr04/
Projets
Arduino
- Ultrasonic
- Library New Ping
Simple
// load the library for HC-SR04 http://iteadstudio.com/application-note/arduino-library-for-ultrasonic-ranging-module-hc-sr04/ // Remark: change the “WProgram.h” reference to “Arduino.h” in files "Ultrasonic.h" and "Ultrasonic.cpp" and everything will be fine #include "Ultrasonic.h" // Sensor VCC pin connected to Arduino pin 5V // Sensor GND pin connected to Arduino pin GND // Sensor TRIG pin connected to Arduino pin 12 // sensor ECHO pin connected to Arduino pin 13 Ultrasonic ultrasonic(12,13); void setup() { Serial.begin(9600); } void loop() { Serial.print(ultrasonic.Ranging(CM)); Serial.println(" cm"); delay(100); Serial.print(ultrasonic.Timing()); // Distance = ((Duration of high level)*(Sonic :340m/s))/2 Serial.println(" ms"); delay(100); }
With 3 Ultrasonic + Servo
/* * UltraSonic Scanner * * output values from a ultrasonic sensors array in a NMEA 0183 sentence (ie formatted message) * * $USDIS,LEFT_DISTANCE_IN_CM,CENTER_DISTANCE_IN_CM,RIGHT_DISTANCE_IN_CM,SERVOPOS*CHECKSUM[CR][LF] * * TODO Calcutate checksum (always 00) */ #include "Ultrasonic.h" #include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created Ultrasonic ultrasonicCenter(12,13); Ultrasonic ultrasonicRight(10,11); Ultrasonic ultrasonicLeft(6,7); int servoPos = 90; // variable to store the servo position int servoIncr = 10; // variable to store the servo increment const int MINSERVOPOS=55; const int MAXSERVOPOS=125; void setup() { Serial.begin(4800); myservo.attach(3); // attaches the servo on pin 9 to the servo object } void loop() { Serial.print("$USDIS,"); Serial.print(ultrasonicLeft.Ranging(CM)); Serial.print(","); Serial.print(ultrasonicCenter.Ranging(CM)); Serial.print(","); Serial.print(ultrasonicRight.Ranging(CM)); Serial.print(","); Serial.print(servoPos); Serial.print("*"); Serial.print("00"); Serial.print("\r\n"); myservo.write(servoPos); // tell servo to go to position in variable 'pos' servoPos=servoPos+servoIncr; if(servoPos<MINSERVOPOS || servoPos>MAXSERVOPOS) servoIncr=-servoIncr; delay(100); } byte calcChecksumBuf(byte checksum, byte buf[], int i, int len){ for(;i<len; i++){ checksum=calcChecksum(checksum,buf[i]); } return checksum; } byte calcChecksum(byte checksum, byte c){ if ( c == '$' ) return 0; if ( c != '\r' && c != '\n' && c != '*' ) { checksum ^= c; } return checksum; }
New Ping
From http://code.google.com/p/arduino-new-ping/wiki/15_Sensors_Example ... TODO ...