0

I am trying to connect an HC-SR04 to an Arduino Uno. For some reason when I run this code on the serial monitor it outputs wingdings in a straight line.

ýòøÿüÿøÿüòý÷ÿ÷ýÿÿúýÿýúÿòý÷ûòûòû÷ýÿøÿøÿÿ÷øÿüÿýÿþòøòÿÿøûüÿøÿÿòÿ÷ûòûòý÷ûòûòûöû÷ÿûû÷øÿÿ÷øÿüÿýÿüÿûöþÿý÷ûòûòûòûöûûûûûò

No breaks. Sometimes when I hit "Tools/Fix Encoding and Reload" it outputs

Ping: 0 cm Ping: 0 cm Ping: 0 cm

followed by more wingdings.

I've looked up some similar problems and it was usually fixed by changing baud to a lower value, 9600. I've done this and I still have problems.

Would you be able to help me out? I'd very much appreciate it.

const int trigpin = 9;
const int echopin = 10;
long duration;
int distance;
void setup() {
 Serial.begin(9600);
}
void loop() {
 pinMode(trigpin, OUTPUT);
 pinMode(echopin, INPUT);
 digitalWrite(trigpin,LOW);
 delayMicroseconds(2);
 digitalWrite(trigpin, HIGH);
 delayMicroseconds(5);
 digitalWrite(trigpin,LOW);
 duration = pulseIn(echopin,HIGH);
 distance = duration *0.034/2;
 Serial.print("Distance: ");
 Serial.println(distance);
}

Updated Solution

After testing out Joel's code to check the sensor was in order, I found some new sample code which worked to display the distance in inches of a HC SR04 sensor.

 // set up variables
 int trigpin = 13; // Trig Pin is connected to Arduino pin 13
 int echopin = 11; // Echo Pin is connected to Arduino pin 11
 // now we need variables which we will be measuring
 float pingtime; // Time for ping to travel to target and return
 float targetdistance; // Distance from sensor to target
 float speedofsound = 776.5; // speed of sound in miles per hour at 77 F
void setup() {
Serial.begin(9600); // Turn on serial port
pinMode(trigpin, OUTPUT); // Sensor trig pin is output
pinMode(echopin, INPUT); // input is reading from echopin
 }
void loop() {
digitalWrite(trigpin, LOW);// set trigger pin low
delayMicroseconds(2000); // pause to let signal settle
digitalWrite(trigpin, HIGH); // set trigger pin high 
delayMicroseconds(15); // pause in high state, make sure sensor reads
digitalWrite(trigpin, LOW); // bring trigpin back low
 pingtime = pulseIn(echopin, HIGH); 
// sensor will be sending HIGH pulse, measure pingtime at echopin
// ping time is in microseconds
 pingtime = pingtime / 1000000.; 
// converts pingtime to seconds because speed of sound is miles per hour
 pingtime = pingtime / 3600.; 
 // converts pingtime to hours
 // add a period to make float to avoid int mistakes
 targetdistance = speedofsound * pingtime;
 // calculates distance in miles traveled by ping
 targetdistance = targetdistance / 2; 
 // accounts for roundtrip of ping to target
 targetdistance = targetdistance * 63360.;
 // convert target distance to inches
 // 63360 inches in a mile
Serial.print("The distance to the target is:");
Serial.print(targetdistance);
Serial.println("inches");
delay(1000);
 }
asked Feb 1, 2017 at 5:14
1
  • since it seems that the problem did have to do with the serial monitor settings, can you please select my answer as correct. Commented Feb 1, 2017 at 7:46

1 Answer 1

1

Check your serial monitor baud rate. This is definitely caused by your serial monitor being set to a different baud rate than the 9600 you specified in the program.

If it had anything to do with the sensor than this line would be printed properly Serial.print("Distance: ");

Once you change the serial monitor baud rate then try running this program, to verify that it is set properly:

void setup() {
 Serial.begin(9600);
}
void loop() {
 Serial.println("Hi There!");
}

If that prints "Hi There!" then the program your serial monitor is set up properly.

answered Feb 1, 2017 at 6:50
2
  • I tested your code and I get an infinite loop of "Hi There"s which I will take as a good sign. :D Commented Feb 1, 2017 at 7:06
  • @AngelaAlbrecht that is a good sign, try your original code again without changing any settings and see if it prints "Distance: " Commented Feb 1, 2017 at 7:07

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.