Bird
Raised Fist0
Arduinoprogramming~10 mins

Ultrasonic distance sensor (HC-SR04) in Arduino - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define the trigger pin for the HC-SR04 sensor.

Arduino
const int trigPin = [1];
Drag options to blanks, or click blank then click option'
A2
B5
C13
D9
Attempts:
3 left
💡 Hint
Common Mistakes
Choosing an analog pin instead of a digital pin for the trigger.
Using the same pin number for both trigger and echo.
2fill in blank
medium

Complete the code to set the echo pin as an input in the setup function.

Arduino
pinMode([1], INPUT);
Drag options to blanks, or click blank then click option'
AechoPin
BtrigPin
CledPin
DbuttonPin
Attempts:
3 left
💡 Hint
Common Mistakes
Setting the trigger pin as input instead of output.
Using a pin variable that is not defined.
3fill in blank
hard

Fix the error in the code to send a 10 microsecond pulse to the trigger pin.

Arduino
digitalWrite(trigPin, HIGH);
delayMicroseconds([1]);
digitalWrite(trigPin, LOW);
Drag options to blanks, or click blank then click option'
A1
B100
C10
D5
Attempts:
3 left
💡 Hint
Common Mistakes
Using delay() instead of delayMicroseconds().
Using too long or too short pulse duration.
4fill in blank
hard

Fill both blanks to correctly calculate the distance in centimeters from the duration.

Arduino
long duration = pulseIn([1], HIGH);
float distance = duration [2] 58.2;
Drag options to blanks, or click blank then click option'
AechoPin
B*
C/
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Multiplying duration instead of dividing.
Using the trigger pin instead of echo pin for pulseIn.
5fill in blank
hard

Fill all three blanks to complete the loop that reads distance and prints it to the serial monitor.

Arduino
digitalWrite([1], LOW);
delayMicroseconds(2);
digitalWrite([2], HIGH);
delayMicroseconds(10);
digitalWrite([2], LOW);

long duration = pulseIn([3], HIGH);
float distance = duration / 58.2;
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
Drag options to blanks, or click blank then click option'
AtrigPin
BechoPin
Attempts:
3 left
💡 Hint
Common Mistakes
Using echo pin to send pulse instead of trigger pin.
Mixing up the order of setting pins HIGH and LOW.

Practice

(1/5)
1. What is the main purpose of the trigger pin on the HC-SR04 ultrasonic sensor?
easy
A. To send a short ultrasonic pulse to start distance measurement
B. To receive the echo signal from the object
C. To power the sensor
D. To reset the sensor

Solution

  1. Step 1: Understand the role of the trigger pin

    The trigger pin is used to send a short pulse that starts the ultrasonic burst.
  2. Step 2: Differentiate from echo pin

    The echo pin listens for the returning pulse, not the trigger pin.
  3. Final Answer:

    To send a short ultrasonic pulse to start distance measurement -> Option A
  4. Quick Check:

    Trigger pin sends pulse = A [OK]
Hint: Trigger pin sends pulse, echo pin listens [OK]
Common Mistakes:
  • Confusing trigger with echo pin
  • Thinking trigger powers the sensor
  • Assuming trigger resets the sensor
2. Which Arduino function is used to measure the duration of the echo pulse from the HC-SR04 sensor?
easy
A. digitalWrite()
B. pulseIn()
C. analogRead()
D. delay()

Solution

  1. Step 1: Identify function to measure pulse duration

    The pulseIn() function measures the length of a pulse on a pin.
  2. Step 2: Exclude other functions

    digitalWrite() sets pin output, analogRead() reads analog values, delay() pauses execution.
  3. Final Answer:

    pulseIn() -> Option B
  4. Quick Check:

    pulseIn measures pulse length = B [OK]
Hint: Use pulseIn() to measure echo pulse duration [OK]
Common Mistakes:
  • Using digitalWrite() to read pulse
  • Confusing analogRead() with pulse measurement
  • Using delay() instead of measuring pulse
3. What will be the output distance (in cm) if the measured echo time is 1160 microseconds? Use the formula: distance = (echoTime / 2) / 29.1.
medium
A. 80 cm
B. 40 cm
C. 10 cm
D. 20 cm

Solution

  1. Step 1: Calculate half of echo time

    Half of 1160 microseconds is 580 microseconds.
  2. Step 2: Divide by 29.1 to get distance

    580 / 29.1 ≈ 19.93 cm, approximately 20 cm.
  3. Final Answer:

    20 cm -> Option D
  4. Quick Check:

    (1160/2)/29.1 ≈ 20 cm [OK]
Hint: Divide echo time by 2 and then by 29.1 [OK]
Common Mistakes:
  • Forgetting to divide echo time by 2
  • Using wrong divisor instead of 29.1
  • Mixing units of time and distance
4. Identify the error in this Arduino code snippet for HC-SR04 distance measurement:
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
echoTime = pulseIn(echoPin, LOW);
medium
A. echoTime should be declared as int, not long
B. delayMicroseconds should be delay()
C. pulseIn should measure HIGH pulse, not LOW
D. triggerPin should be set LOW before HIGH

Solution

  1. Step 1: Check pulseIn usage

    The echo pulse is HIGH when the echo is received, so pulseIn should measure HIGH pulse.
  2. Step 2: Verify other code parts

    delayMicroseconds(10) is correct for 10 microseconds pulse; triggerPin sequence is correct; echoTime type depends on usage but not an error here.
  3. Final Answer:

    pulseIn should measure HIGH pulse, not LOW -> Option C
  4. Quick Check:

    pulseIn measures HIGH pulse = D [OK]
Hint: pulseIn(echoPin, HIGH) to measure echo pulse [OK]
Common Mistakes:
  • Measuring LOW pulse instead of HIGH
  • Using delay() instead of delayMicroseconds()
  • Setting triggerPin LOW before HIGH incorrectly
5. You want to measure distance continuously and print it every second using HC-SR04. Which code snippet correctly triggers the sensor and calculates distance in cm?
hard
A. digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); echoTime = pulseIn(echoPin, HIGH); distance = (echoTime / 2) / 29.1;
B. digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); echoTime = pulseIn(echoPin, LOW); distance = echoTime * 29.1 / 2;
C. digitalWrite(triggerPin, LOW); delay(10); digitalWrite(triggerPin, HIGH); echoTime = pulseIn(echoPin, HIGH); distance = (echoTime / 2) / 29.1;
D. digitalWrite(triggerPin, HIGH); delayMicroseconds(2); digitalWrite(triggerPin, LOW); echoTime = pulseIn(echoPin, HIGH); distance = (echoTime * 2) / 29.1;

Solution

  1. Step 1: Check trigger pulse sequence

    The correct sequence is to set trigger LOW for 2 microseconds, then HIGH for 10 microseconds, then LOW again.
  2. Step 2: Verify echo measurement and distance formula

    pulseIn measures HIGH pulse duration; distance = (echoTime / 2) / 29.1 converts time to cm correctly.
  3. Final Answer:

    Code snippet C correctly triggers and calculates distance -> Option A
  4. Quick Check:

    Trigger LOW-2us-HIGH-10us-LOW, pulseIn HIGH, distance formula = C [OK]
Hint: Trigger LOW-2us, HIGH-10us, then LOW; measure HIGH pulse [OK]
Common Mistakes:
  • Skipping initial LOW trigger pulse
  • Measuring LOW pulse instead of HIGH
  • Incorrect distance formula with wrong multiplication/division
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard