Radar de Detección

Codigo: 

# Librerias
import random  
from turtle import *
from time import sleep 
import time
import random
from pygame import mixer as mix

##############################################
import RPi.GPIO as GPIO    #Importamos la librería GPIO
import time                #Importamos time (time.sleep)
GPIO.setmode(GPIO.BCM)     #Ponemos la placa en modo BCM
GPIO_TRIGGER = 25          #Usamos el pin GPIO 25 como TRIGGER
GPIO_ECHO    = 7           #Usamos el pin GPIO 7 como ECHO
GPIO.setup(GPIO_TRIGGER,GPIO.OUT)  #Configuramos Trigger como salida
GPIO.setup(GPIO_ECHO,GPIO.IN)      #Configuramos Echo como entrada
GPIO.output(GPIO_TRIGGER,False)    #Ponemos el pin 25 como LOW
##############################################

bg = "background2.gif"

#instancias
t = Turtle()
screen = t.getscreen()
screen.setup(960,674)
screen.title("Radar de Deteccion - Grado Militar")
screen.bgcolor('black')
screen.bgpic(bg) #Fondo de la ventana

mix.init()
mix.music.load("countdown.wav")

#Variables importantes 
CatchDistance = 450-25
MaxAnalysisdistance = 450
rDis = 0

#Configuracion inicial tortuga 
t.penup()
t.right(90)
t.forward(275)
t.left(270)
t.pendown()
t.pensize(5)
t.speed(0)
t.ht()
t.color('#00EF00')

def readDistanceCm():
GPIO.output(GPIO_TRIGGER,True)   #Enviamos un pulso de ultrasonidos
        time.sleep(0.00001)              #Una pequeñña pausa
        GPIO.output(GPIO_TRIGGER,False)  #Apagamos el pulso
        start = time.time()              #Guarda el tiempo actual mediante time.time()
        while GPIO.input(GPIO_ECHO)==0:  #Mientras el sensor no reciba señal...
            start = time.time()          #Mantenemos el tiempo actual mediante time.time()
        while GPIO.input(GPIO_ECHO)==1:  #Si el sensor recibe señal...
            stop = time.time()           #Guarda el tiempo actual mediante time.time() en otra variable
        elapsed = stop-start             #Obtenemos el tiempo transcurrido entre envío y recepción
        distance = (elapsed * 34300)/2   #Distancia es igual a tiempo por velocidad partido por 2   D = (T x V)/2
        return distance
        #time.sleep(1)                    #Pequeña pausa para no saturar el procesador de la Raspberry

def getRand():
return random.randrange(2,450)

def BarridoClockWise(_t, angle):
rDis = readDistanceCm()
_t.right(angle)
_t.forward(rDis-10)
_t.color('blue')
_t.forward(450-rDis-10)
_t.penup()
_t.color('#00EF00')
_t.backward((rDis-10)+(450-rDis-10))
_t.left(angle)
_t.pendown()
def BarridoAntiClock(_t, angle):
rDis = readDistanceCm()
_t.left(angle)
_t.forward(rDis-10)
_t.color('blue')
_t.forward(450-rDis-10)
_t.penup()
_t.color('#00EF00')
_t.backward((rDis-10)+(450-rDis-10))
_t.right(angle)
_t.pendown()

def BarridoRadar(_t):
mix.music.play()
for i in range(180):
BarridoClockWise(_t, i)
_t.clear()
_t.right(180)
mix.music.play()
for i in range(180):
BarridoAntiClock(_t, i)
_t.clear()
_t.left(180)
ans = input('¿ Accionar ? ')
while True:
BarridoRadar(t)

screen.exitonclick()

Capturas:




Video: 




Comentarios

  1. Excelente proyecto, muy interesante y e código muy bien comentado.
    Felicidades!

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

From Zero To Hero By Perian Data

Semáforo sincronizado con LEDs en Raspberry PI