Because the vcc input for ultrasonic sensor is 5v and the output of esp 32 is 3.3v thus the low power and malfunction try to use other mcu as 5v output
Use this code instead and connect the VCC to VIN (Notice I changed the pins and the serial monitor baud) #include #define echoPin 18 // CHANGE PIN NUMBER HERE IF YOU WANT TO USE A DIFFERENT PIN #define trigPin 5 // CHANGE PIN NUMBER HERE IF YOU WANT TO USE A DIFFERENT PIN long duration, distance; void setup(){ Serial.begin (115200); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop(){ digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
#include // Define pins for ultrasonic sensor const int trigPin = 14; const int echoPin = 12; // Define LCD pins const int rs = 35, en = 34, d4 = 32, d5 = 25, d6 = 26, d7 = 27; LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { // Initialize serial communication Serial.begin(9600); // Set up the ultrasonic sensor pins pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // Set up the LCD number of columns and rows lcd.begin(16, 2); // Print initial message to LCD lcd.print("Distance:"); } void loop() { // Variables for the duration of the ultrasonic pulse and the distance long duration; int distance; // Send a pulse to the trigger pin digitalWrite(trigPin, L); delayMicroseconds(2); digitalWrite(trigPin, H); delayMicroseconds(10); digitalWrite(trigPin, L); // Measure the duration of the echo pulse duration = pulseIn(echoPin, HIGH); // Calculate the distance (in cm) distance = duration * 0.034 / 2; // Print distance to serial monitor Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); // Display distance on LCD lcd.setCursor(0, 1); // Set cursor to second line lcd.print(" "); // Clear previous distance lcd.setCursor(0, 1); // Set cursor to second line lcd.print(distance); // Print current distance // Example if-else conditions based on distance if (distance
i m get error in distance is always 0
My HC-SR04 works on 5 volts, not 3.3. I do appreciate that you don't use an HC-SR04 library though.
With a esp8266 its the same process?
Thank you so much!!
THIS WORKSSS!!
By the way, after a research can get data from ultrasonic module just by using 2 wires by carry data over dc lines :)
can you share the link to read about?
Thank you very much for this great content!
Thank you, working fine
how do i open the link to see the code and circuit
All given in description.
Will the same code work for esp8266?
Yes it should work, just make sure that you select the right pins.
@@INOVATRIX tysm!
The distance is always 0 cm. I am using a 3 3v esp8266. What is the issue?
Thanks you so mutch
distances under 40 cm can be measure without problem, more that that i just get random values. Any idea how solve it?
That is the approximate limit of the sensor. For more range you'll need to use more expensive and accurate sensor
i am using one HCSR04 with one Arduino Mega 2560 and can measure easily 2 mts in a water tank, but with ESP32 works bad, any idea?@@INOVATRIX
I ran mine with a similar code, but it keeps sending me the Distance:0
Me to😢😢😢
Because the vcc input for ultrasonic sensor is 5v and the output of esp 32 is 3.3v thus the low power and malfunction try to use other mcu as 5v output
thanks man it works
This board iS 5V..... not great.
AliExpers has a new version for 3-5 volts
thanks
Thanks!
IF YOU HAVE 0CM USE 5V instead of 3,3V!!!!!!!!!!!!!
i get a measurement of 0 how do i change it to 5V
@@nrlauliasaid8007 there is a 3,3v and a 5v output on the esp32 change it to 5v
How i can do it
O meu sensor ultrasonico hc sr04 nao está funcionando no 3.3v, sabe o que poderia resolver?
Connect power to VIN pin on the ESP32 Board.
@@INOVATRIX to receive the echo return, would there be damage to the esp32 input pin?
bad. It is not async and uses blocking functions. slow
No its good😊😊
Use this code instead and connect the VCC to VIN (Notice I changed the pins and the serial monitor baud)
#include
#define echoPin 18 // CHANGE PIN NUMBER HERE IF YOU WANT TO USE A DIFFERENT PIN
#define trigPin 5 // CHANGE PIN NUMBER HERE IF YOU WANT TO USE A DIFFERENT PIN
long duration, distance;
void setup(){
Serial.begin (115200);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop(){
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration / 58.2;
String disp = String(distance);
Serial.print("Distance: ");
Serial.print(disp);
Serial.println(" cm");
delay(1000);
}
Thank you so much. It works! But can you tell me the reason why you have thought to make this change & why was that one not working?
#include
// Define pins for ultrasonic sensor
const int trigPin = 14;
const int echoPin = 12;
// Define LCD pins
const int rs = 35, en = 34, d4 = 32, d5 = 25, d6 = 26, d7 = 27;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// Initialize serial communication
Serial.begin(9600);
// Set up the ultrasonic sensor pins
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Set up the LCD number of columns and rows
lcd.begin(16, 2);
// Print initial message to LCD
lcd.print("Distance:");
}
void loop() {
// Variables for the duration of the ultrasonic pulse and the distance
long duration;
int distance;
// Send a pulse to the trigger pin
digitalWrite(trigPin, L);
delayMicroseconds(2);
digitalWrite(trigPin, H);
delayMicroseconds(10);
digitalWrite(trigPin, L);
// Measure the duration of the echo pulse
duration = pulseIn(echoPin, HIGH);
// Calculate the distance (in cm)
distance = duration * 0.034 / 2;
// Print distance to serial monitor
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Display distance on LCD
lcd.setCursor(0, 1); // Set cursor to second line
lcd.print(" "); // Clear previous distance
lcd.setCursor(0, 1); // Set cursor to second line
lcd.print(distance); // Print current distance
// Example if-else conditions based on distance
if (distance