Ir al contenido principal

Semaforos

El siguiente programa dibuja un cruce con 4 semáforos funcionales,  y muestra como se sincronizan con LEDs adheridos a la raspberry. El programa también dibuja y simula el cruce de automóviles.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

from turtle import *
from time import sleep
from gpiozero import LED
import random

t=Turtle()
screen=t.getscreen()
setup(1440,720,0,0)
screensize(1440,720)
colormode(255)
a=Turtle()
b=Turtle()
c=Turtle()
d=Turtle()
verde=LED(17)
amarillo=LED(27)
rojo=LED(22)
verde2=LED(16)
amarillo2=LED(20)
rojo2=LED(21)
verde3=LED(14)
amarillo3=LED(15)
rojo3=LED(18)
verde4=LED(23)
amarillo4=LED(24)
rojo4=LED(25)
t.speed(30)
t.pencolor("gray")
t.speed(20)
t.pensize(300)
t.penup()
t.goto(-720,-15)
t.pendown()
t.forward(720)
t.left(90)
t.forward(360)
t.penup()
t.goto(20,-300)
t.pendown()
t.backward(-250)
t.penup()
t.goto(605,-7.5)
t.left(90)
t.pendown()
t.forward(600)
t.end_fill()
t.color(255,255,255)
t.pensize(5)
t.penup()
t.goto(-580,-15)
t.pendown()
i=0
while i<=400:
t.backward(60)
t.penup()
t.backward(20)
t.pendown()
i=i+100
t.penup()
t.goto(20,-270)
t.pendown()
t.left(90)
i=0
while i<=100:
t.backward(40)
t.penup()
t.backward(20)
t.pendown()
i=i+100

t.penup()
t.goto(605,-7.5)
t.pendown()
t.left(90)
i=0
while i<=400:
t.backward(60)
t.penup()
t.backward(20)
t.pendown()
i=i+100
t.penup()
t.goto(20,320)
t.pendown()
t.left(90)
i=0
while i<=100:
t.backward(40)
t.penup()
t.backward(20)
t.pendown()
i=i+100
bgcolor("green")
t.penup()
t.pensize(50)
t.right(90)
t.color(105,105,105)
t.penup()
t.goto(-720,135)
t.pendown()
t.forward(580)
t.left(90)
t.forward(360)
t.penup()
t.home()
t.color(105,105,105)
t.goto(-720,-165)
t.pendown()
t.forward(580)
t.rt(90)
t.forward(490)
t.penup()
t.home()
t.color(105,105,105)
t.goto(720,-165)
t.pendown()
t.rt(180)
t.forward(550)
t.left(90)
t.forward(490)
t.penup()
t.home()
t.color(105,105,105)
t.goto(720,135)
t.pendown()
t.rt(180)
t.forward(550)
t.rt(90)
t.forward(490)
t.penup()
d.penup()
t.color(85,107,47)
t.goto(-150,-150)
t.pendown()
t.dot(28)
t.penup()
t.color(149,139,86)
t.goto(-150,-120)
t.pendown()
t.dot(28)
t.penup()
t.color(119,49,56)
t.goto(-150,-90)
t.pendown()
t.dot(28)
t.penup()
t.color(119,49,56)
t.goto(-110,110)
t.pendown()
t.dot(28)
t.penup()
t.color(149,139,86)
t.goto(-80,110)
t.pendown()
t.dot(28)
t.penup()
t.color(85,107,47)
t.goto(-50,110)
t.pendown()
t.dot(28)
t.penup()
t.color(119,49,56)
t.goto(150,-150)
t.pendown()
t.dot(28)
t.penup()
t.color(149,139,86)
t.goto(120,-150)
t.pendown()
t.dot(28)
t.penup()
t.color(85,107,47)
t.goto(90,-150)
t.pendown()
t.dot(28)
t.penup()
t.color(119,49,56)
t.goto(160,120)
t.pendown()
t.dot(28)
t.penup()
t.color(149,139,86)
t.goto(160,90)
t.pendown()
t.dot(28)
t.penup()
t.color(85,107,47)
t.goto(160,60)
t.pendown()
t.dot(28)
num=random.randint(1,5)
num2=random.randint(1,3)
num3=random.randint(1,5)
num4=random.randint(1,3)
s=-580
d.shape("turtle")
colores=["red","green","yellow","blue","brown"]
v=[]
m=[]
n=[]
k=[]
for i in range (num):
sel=random.randint(0,4)
d.color(colores[sel])
v.append(colores[sel])
d.goto(s,-38)
d.stamp()
s=s+70
a.penup()
a.right(90)
a.shape("turtle")
q=310
for i in range (num2):
sel=random.randint(0,4)
a.color(colores[sel])
m.append(colores[sel])
a.goto(-10,q)
a.stamp()
q=q-70

b.penup()
b.left(180)
b.shape("turtle")
r=580
for i in range (num3):
sel=random.randint(0,4)
b.color(colores[sel])
n.append(colores[sel])
b.goto(r,18)
b.stamp()
r=r-70
c.penup()
c.left(90)
c.shape("turtle")
y=-310
for i in range (num4):
sel=random.randint(0,4)
c.color(colores[sel])
k.append(colores[sel])
c.goto(45,y)
c.stamp()
y=y+70


d.speed(5)
a.speed(5)
b.speed(5)
c.speed(5)
d.hideturtle()
a.penup()
a.hideturtle()
a.color(255,0,0)
a.goto(-110,110)
a.pendown()
a.dot(28)
a.penup()
rojo.on()
b.penup()
b.hideturtle()
b.color(255,0,0)
b.goto(160,120)
b.pendown()
b.dot(28)
b.penup()
rojo2.on()
c.penup()
c.hideturtle()
c.color(255,0,0)
c.goto(150,-150)
c.pendown()
c.dot(28)
c.penup()
rojo3.on()
d.penup()
d.hideturtle()
d.color(255,0,0)
d.goto(-150,-90)
d.pendown()
d.dot(28)
d.penup()
rojo4.on()
sleep(3)
verde.on()
amarillo.off()
rojo.off()
a.penup()
a.hideturtle()
a.color(119,49,56)
a.goto(-110,110)
a.pendown()
a.dot(28)
arc=1
if(verde.on):
#~ if (arc==1):
a.penup()
a.color(0,255,0)
a.hideturtle()
a.goto(-50,110)
a.pendown()
a.dot(28)
a.penup()

for i in range (num2):
  a.speed(3)
  a.goto(-10,q)
  a.pendown()
  a.showturtle()
  a.color(m[num2-i-1])
  a.clearstamps(-1)
  a.penup()
  a.forward(720)
  a.hideturtle()
  q=q+70
sleep(2)
a.penup()
a.color(85,107,47)
a.goto(-50,110)
a.pendown()
a.dot(28)
a.penup()
a.penup()
a.color(255,215,0)
a.goto(-80,110)
a.pendown()
a.dot(28)
a.penup()
verde.off()
amarillo.on()
rojo.off()
sleep(0.5)
a.penup()
a.color(149,139,86)
a.goto(-80,110)
a.pendown()
a.dot(28)
a.penup()
verde.off()
amarillo.off()
rojo.off()
sleep(0.5)
a.penup()
a.color(255,215,0)
a.goto(-80,110)
a.pendown()
a.dot(28)
a.penup()
verde.off()
amarillo.on()
rojo.off()
sleep(0.5)
a.penup()
a.color(149,139,86)
a.goto(-80,110)
a.pendown()
a.dot(28)
a.penup()
verde.off()
amarillo.off()
rojo.off()
sleep(0.5)
a.penup()
a.color(255,0,0)
a.goto(-110,110)
a.pendown()
a.dot(28)
a.penup()
verde.off()
amarillo.off()
rojo.on()
sleep(2)
verde2.on()
amarillo2.off()
rojo2.off()
b.penup()
b.hideturtle()
b.color(119,49,56)
b.goto(160,120)
b.pendown()
b.dot(28)
b.penup()
arc=2
if (verde2.on):
#~ if(arc==2):
b.penup()
b.color(0,255,0)
b.hideturtle()
b.goto(160,60)
b.pendown()
b.dot(28)
b.penup()
for i in range (num3):
   b.speed(3)
   b.goto(r,18)
   b.pendown()
   b.showturtle()
   b.color(n[num3-i-1])
   b.clearstamps(-1)
   b.penup()
   b.forward(1080)
   b.hideturtle()
   r=r+70
sleep(2)
b.penup()
b.color(85,107,47)
b.goto(160,60)
b.pendown()
b.dot(28)
b.penup()
b.penup()
b.color(255,215,0)
b.goto(160,90)
b.pendown()
b.dot(28)
b.penup()
verde2.off()
amarillo2.on()
rojo2.off()
sleep(0.5)
b.penup()
b.color(149,139,86)
b.goto(160,90)
b.pendown()
b.dot(28)
b.penup()
verde2.off()
amarillo2.off()
rojo2.off()
sleep(0.5)
b.penup()
b.color(255,215,0)
b.goto(160,90)
b.pendown()
b.dot(28)
b.penup()
verde2.off()
amarillo2.on()
rojo2.off()
sleep(0.5)
b.penup()
b.color(149,139,86)
b.goto(160,90)
b.pendown()
b.dot(28)
b.penup()
verde2.off()
amarillo2.off()
rojo2.off()
sleep(0.5)
b.penup()
b.color(255,0,0)
b.goto(160,120)
b.pendown()
b.dot(28)
b.penup()
verde2.off()
amarillo2.off()
rojo2.on()
sleep(2)
verde3.on()
amarillo3.off()
rojo3.off()
c.penup()
c.hideturtle()
c.color(119,49,56)
c.goto(150,-150)
c.pendown()
c.dot(28)
c.penup()
arc=3
if (verde3.on):
#~ if(arc==3):
c.penup()
c.color(0,255,0)
c.hideturtle()
c.goto(90,-150)
c.pendown()
c.dot(28)
c.penup()
for i in range (num4):
c.speed(3)
c.goto(45,y)
c.pendown()
c.showturtle()
c.color(k[num4-i-1])
c.clearstamps(-1)
c.penup()
c.forward(520)
c.hideturtle()
y=y-70
sleep(2)
c.penup()
c.color(85,107,47)
c.goto(90,-150)
c.pendown()
c.dot(28)
c.penup()
c.penup()
c.color(255,215,0)
c.goto(120,-150)
c.pendown()
c.dot(28)
c.penup()
verde3.off()
amarillo3.on()
rojo3.off()
sleep(0.5)
c.penup()
c.color(149,139,86)
c.goto(120,-150)
c.pendown()
c.dot(28)
c.penup()
verde3.off()
amarillo3.off()
rojo3.off()
sleep(0.5)
c.penup()
c.color(255,215,0)
c.goto(120,-150)
c.pendown()
c.dot(28)
c.penup()
verde3.off()
amarillo3.on()
rojo3.off()
sleep(0.5)
c.penup()
c.color(149,139,86)
c.goto(120,-150)
c.pendown()
c.dot(28)
c.penup()
verde3.off()
amarillo3.off()
rojo3.off()
sleep(0.5)
c.penup()
c.color(255,0,0)
c.goto(150,-150)
c.pendown()
c.dot(28)
c.penup()
verde3.off()
amarillo3.off()
rojo3.on()
sleep(2)
verde4.on()
amarillo4.off()
rojo4.off()
d.penup()
d.hideturtle()
d.color(119,49,56)
d.goto(-150,-90)
d.pendown()
d.dot(28)
d.penup()
arc=4
if (verde3.on):
#~ if(arc==4):
d.penup()
d.color(0,255,0)
d.hideturtle()
d.goto(-150,-150)
d.pendown()
d.dot(28)
d.penup()
for i in range (num):
d.speed(3)
d.goto(s,-38)
d.pendown()
d.showturtle()
d.color(v[num-i-1])
d.clearstamps(-1)
d.penup()
d.forward(940)
d.hideturtle()
s=s-70
sleep(2)
d.penup()
d.color(85,107,47)
d.goto(-150,-150)
d.pendown()
d.dot(28)
d.penup()
d.penup()
d.color(255,215,0)
d.goto(-150,-120)
d.pendown()
d.dot(28)
d.penup()
verde4.off()
amarillo4.on()
rojo4.off()
sleep(0.5)
d.penup()
d.color(149,139,86)
d.goto(-150,-120)
d.pendown()
d.dot(28)
d.penup()
verde4.off()
amarillo4.off()
rojo4.off()
sleep(0.5)
d.penup()
d.color(255,215,0)
d.goto(-150,-120)
d.pendown()
d.dot(28)
d.penup()
verde4.off()
amarillo4.on()
rojo4.off()
sleep(0.5)
d.penup()
d.color(149,139,86)
d.goto(-150,-120)
d.pendown()
d.dot(28)
d.penup()
verde4.off()
amarillo4.off()
rojo4.off()
sleep(0.5)
d.penup()
d.color(255,0,0)
d.goto(-150,-90)
d.pendown()
d.dot(28)
d.penup()
verde4.off()
amarillo4.off()
rojo4.on()
sleep(2)
screen.exitonclick()

Comentarios

Entradas populares de este blog

Funciones Geometricas

En este programa encontramos múltiples formulas para la obtención de área y volumen de una gran variedad de figuras geométricas. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> import math def cuadrado(): lado=float(input("Dame el valor de lado: ")) cuadrado=[] cuadrado.append(lado) area=cuadrado[0]*cuadrado[0] cuadrado.append(area) print("Lado= {}, Area= {}".format(cuadrado[0],cuadrado[1])) def triangulo(): triangulo=[] base=float(input("Dame la base: ")) altura=float(input("Dame la altura: ")) triangulo.append(base) triangulo.append(altura) area=(triangulo[0]*triangulo[1])/2 triangulo.append(area) print("Base= {}, Altura= {}, Area= {}".format(triangulo[0],triangulo[1],triangulo[2])) def rectangulo(): rectangulo...

Fotoresistencia y foco

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> from turtle import * import turtle  import numpy as np from pylab import* import random import time import RPi.GPIO as GPIO, time t=Turtle() screen=t.getscreen() setup(400,300,0,0) screensize(150,150) colormode(255) t=Turtle() t.speed(10) screen=t.getscreen() setup(900,620,0,0) screensize(500,150) colormode(255) turtle.bgcolor("darkgray") t.hideturtle() t.penup() t.pensize(5) t.goto(-250,-150) t.pendown() t.goto(450,-150) t.penup() t.goto(-250,-150) t.pendown() t.goto(-450,-300) t.penup() t.goto(-250,-150) t.pendown() t.goto(-250,500) t.penup() t.goto(100,300) t.pendown() t.dot(40,255,255,255) t.dot(40,255,250,0) t.bgcolor("darkgray") GPIO.setmode(GPIO.BCM) valor=0 def medida (): measu...

Radar de velocidad

Las siguientes líneas de código dibujan y actúan como un radar de velocidad en pequeña escala. El sensor lee dos distancias (una inicial y una final) entre 50 y 10 cm, es a los 50 cm cuando lee la inicial y a menos de 10 cuando obtiene la final, al mismo tiempo contara las décimas de segundo para obtener el tiempo. Ya teniendo las dos variables necesarias para calcular una velocidad solo realiza la operación y muestra el resultado en la interfaz.  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> import time import botbook_gpio as gpio from turtle import * t=Turtle() screen=t.getscreen() setup(720,720,0,0) t.speed(5) t.penup() screen.bgcolor("gray") t.fillcolor("white") t.begin_fill() t.goto(200,-200) t.pendown() t.goto(...