text in tripple ` looks like code.
print
DOOR OPEN
DOOR LOCKED
measure_distance trigger echo = 20
(measure_distance trigger echo) == 20
== 20
:
main:
trigger := gpio.Pin TRIGGER --output
echo := gpio.Pin ECHO --input
servo := gpio.Pin 14
generator := pwm.Pwm --frequency=50
channel := generator.start servo --duty_factor=0.075
while true:
distance := measure_distance trigger echo
print "measured $(distance)cm"
if distance <= 200:
print "DOOR OPEN"
channel.set_duty_factor 0.125 // Max angle.
else:
print "DOOR LOCKED"
channel.set_duty_factor 0.025 // Min angle.
// The sleep can be lower (or even be removed), but while
// we are printing, we don't want the loop to run too
// quickly.
sleep --ms=500
print "starting"
jag run
jag monitor
main
print "starting"
` (three times)
import gpio
import i2c
import gpio.pwm
TRIGGER ::= 21
ECHO ::= 22
measure_distance trigger echo:
trigger_start := Time.monotonic_us
trigger.set 1
while Time.monotonic_us < trigger_start + 10:
// Do nothing while waiting for the 10us.
trigger.set 0
while echo.get != 1: null
echo_start := Time.monotonic_us
while echo.get == 1: null
echo_end := Time.monotonic_us
diff := echo_end - echo_start
return diff / 58
main:
print "starting"
trigger := gpio.Pin TRIGGER --output
echo := gpio.Pin ECHO --input
while true:
print "measured $(measure_distance trigger echo)cm"
sleep --ms=50
if (measure_distance trigger echo) == 200:
print "DOOR OPEN"
else:
print "DOOR LOCKED"
servo := gpio.Pin 14
generator := pwm.Pwm --frequency=50
channel := generator.start servo --duty_factor=0.075
sleep --ms=10
// https://github.com/toitlang/toit/issues/518
// Max angle.
channel.set_duty_factor 0.125
sleep --ms=2000
// Min angle.
channel.set_duty_factor 0.025
sleep --ms=200
while true