Para implementar este medidor de velocidad se uso un sensor ultrasonico, que lo que hace es que con el efecto doopler, cuando la onda del sonido rebota con un onjeto, marca la distancia de donde se encuentra el objeto. Ya solo con la formula de velocidad v=d/t, el tiempo se iba sacando cuando media dos distancias y el tiempo en que tardaba en llegar a una distancia determinada.
- Código:
from turtle import *
import time
import botbook_gpio as gpio
import RPi.GPIO as GPIO
t=Turtle()
l=Turtle()
med=Turtle()
bgpic('ff.png')
setup(640,590,600,0)
l.hideturtle()
t.hideturtle()
med.hideturtle()
t.pensize(5)
#----------------------------------------------dibujo de letrero
t.pu()
l.pu()
t.fillcolor('white')
t.goto(-5,-180)
t.backward(150)
t.begin_fill()
t.pd()
t.lt(90)
t.fd(130)
t.rt(90)
t.fd(350)
t.rt(90)
t.fd(140)
t.backward(260)
t.rt(90)
t.fd(350)
t.lt(90)
t.fd(150)
t.end_fill()
l.goto(-20,0)
l.pd()
l.pensize(60)
l.fd(85)
l.pu()
l.goto(-80,40)
l.write("SU VELOCIDAD ES:",False, "left",("courier",16,"bold"))
l.goto(105,0)
l.pencolor('black')
l.write('cm',False, "left",("courier",18,"bold"))
l.pd()
l.pensize(2)
l.fd(30)
l.pu()
l.goto(113,-25)
l.write('s',False, "left",("courier",18,"bold"))
#----------------------------------------------Medida de vel en letrero
def readDistanceCm():
triggerPin = 22 #<1>
echoPin = 27
v=(343.5) #m/s
gpio.mode(triggerPin, "out")
gpio.mode(echoPin, "in")
gpio.interruptMode(echoPin, "both")
gpio.write(triggerPin, gpio.LOW)
time.sleep(0.1)
gpio.write(triggerPin, gpio.HIGH)
time.sleep(0.00001)
gpio.write(triggerPin, gpio.LOW)
t=gpio.pulseInHigh(echoPin) # s
d=t*v
d=(d/2) *100
print(d)
time.sleep(0.1)
gpio.write(triggerPin, gpio.HIGH)
time.sleep(0.00001)
gpio.write(triggerPin, gpio.LOW)
t=gpio.pulseInHigh(echoPin) # s
d2=t*v
d2=(d2/2) *100
return d,d2
def main():
cont=0
while True:
d,d2=readDistanceCm()
if(d<=11.3 and d>10.0):
print("d1 is %0.2f cm" % d)
cont+=0.1
if(d2<3.5):
print("d2 is %0.2f cm"% d2)
break
return d,d2,cont
try:
for i in range(10000):
d,d2,cont=main()
dist=7.5
l.goto(-20,0)
l.pd()
l.pensize(60)
l.fd(85)
l.pu()
print("la dist es: %0.2f",dist)
print("cont: ",cont)
print("vel = ",dist/cont)
velo=str(dist/cont)
med.pencolor('red')
med.pu()
med.goto(-30,-25)
med.write(str(velo[:4]),False, "left",("Helvic",30,"bold"))
time.sleep(0.15)
except KeyboardInterrupt:
print('FIN')
exitonclick()