The echo pin should be connected to the sensor's echo pin, trigger to trigger pin. Usually, echo=17 and trigger=4 is standard, so swapping is likely wrong.
Step 2: Verify other code parts
Import is correct, sensor.distance returns meters (not centimeters), and print syntax is valid.
Final Answer:
Echo and trigger pins are swapped -> Option A
Quick Check:
Pin swap error = D [OK]
Hint: Echo pin usually higher number than trigger [OK]
Common Mistakes:
Confusing echo and trigger pins
Assuming distance returns centimeters
Forgetting to import gpiozero
5. You want to measure distance in centimeters and print only integer values every second. Which code snippet correctly does this using DistanceSensor?
hard
A. from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=17, trigger=4)
while True:
print(sensor.distance)
time.sleep(1)
B. from gpiozero import DistanceSensor
sensor = DistanceSensor(echo=17, trigger=4)
print(round(sensor.distance))
C. from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=4, trigger=17)
while True:
print(sensor.distance * 100)
time.sleep(1)
D. from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=17, trigger=4)
while True:
print(int(sensor.distance * 100))
time.sleep(1)
Solution
Step 1: Check pin assignments and imports
from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=17, trigger=4)
while True:
print(int(sensor.distance * 100))
time.sleep(1) correctly imports time, sets echo=17 and trigger=4, which is standard.
Step 2: Verify distance calculation and printing
It multiplies sensor.distance (meters) by 100 to get centimeters, converts to int for integer output, and prints every second with time.sleep(1).
Step 3: Compare with other options
from gpiozero import DistanceSensor
sensor = DistanceSensor(echo=17, trigger=4)
print(round(sensor.distance)) prints once and rounds meters, not centimeters. from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=4, trigger=17)
while True:
print(sensor.distance * 100)
time.sleep(1) swaps pins and prints float centimeters. from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=17, trigger=4)
while True:
print(sensor.distance)
time.sleep(1) prints meters, not centimeters.
Final Answer:
from gpiozero import DistanceSensor
import time
sensor = DistanceSensor(echo=17, trigger=4)
while True:
print(int(sensor.distance * 100))
time.sleep(1) -> Option D
Quick Check:
Correct pins, int centimeters, 1-second delay = A [OK]
Hint: Multiply by 100, convert to int, use sleep(1) for timing [OK]
Common Mistakes:
Swapping echo and trigger pins
Not converting meters to centimeters
Printing only once instead of every second
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.