Ir al contenido principal

Sensor de luz con python

EN ESTA ENTRADA SE MUESTRA LA APLICACIÓN DE UN SENSOR DE LUZ  

Como es de costumbre todos tenemos una lampara en nuestra casa, para poder aprovechar al máximo su rendimiento con una foto-resistencia o sensor de luz podemos hacer que esta se apague o prenda según la intensidad de luz que haya a su alrededor, si hay mucha luz se apaga pero si hay poca se prende, esto es algo muy esencial en la domotica.

Y  me di la tarea de hacer un ejemplo simulado, por medio del modulo "turtle" y los puertos "GPIO" de la rasberry pi 3, mediante el lenguaje de programación de python, donde un puerto estará recibiendo la señal del circuito armado, y con esta señal se darán medidas o rangos para ir dibujando al foco según la intensidad de la luz.

CIRCUITO ARMADO

EL MATERIAL ES:
  1. Foto-resistencia
  2. Resistencia de 2k
  3. Capacitor de 1 micro
PROGRAMA

from turtle import *
import RPi.GPIO as GPIO, time # se necesita esta libreria para poder utilizar los puertos rpigo en la raspberry

#SE HACE EL MODELADO DE LA LAMPARA
t=Turtle()
screen=t.getscreen()
setup(700,700,0,0)
screensize(600,600)
colormode(255)
t.speed(0)
t.hideturtle()
t.fillcolor("gray")
t.begin_fill()
t.goto(20,0)
t.goto(20,-20)
t.goto(-20,-20)
t.goto(-20,0)
t.goto(0,0)
t.end_fill()


t.circle(50) #ESTE SERA NUESTRO FOCO


t.fillcolor("black")
t.penup()
t.goto(20,-20)
t.begin_fill()
t.pendown()
t.goto(20,-300)
t.goto(60,-300)
t.goto(60,-320)
t.goto(-60,-320)
t.goto(-60,-300)
t.goto(-20,-300)
t.goto(-20,-20)
t.goto(20,-20)
t.end_fill()

t.penup()
t.goto(20,-100)
t.pendown()
t.goto(200,-100)
t.goto(100,150)
t.goto(-100,150)
t.goto(-200,-100)
t.goto(-20,-100)

t.penup()
t.goto(0,0) #SE POSICIONA EN EL LUGAR DEL FOCO
t.pendown()

#ACTIVACION DE LOS PUERTOS GPIO
GPIO.setmode(GPIO.BCM)

#WHILE INFINITO DONDE SE ESTARA REPITIENDO EL PROCESO
while True:
measurement=0 #VARIABLE AUXILIAR DE MEDIDA
#SE HABILITAN LOS PUERTOS
GPIO.setup(4,GPIO.OUT)
GPIO.setup(4,GPIO.LOW)
time.sleep(0.1)
GPIO.setup(4,GPIO.IN)
while (GPIO.input(4)==GPIO.LOW):
measurement+=1
print(measurement)
#RANGOS QUE SEGUN LA MEDIDA SERAN LOS VALORES PARA RGB VARIANDO LA INTENCIDAD DEL BRILLO
if measurement>2000:
r=255
g=255
b=0
elif measurement <1999 and measurement>1900:
r=255
g=255
b=13
elif measurement <1899 and measurement>1800:
r=255
g=255
b=26
elif measurement <1799 and measurement>1700:
r=255
g=255
b=39
elif measurement <1699 and measurement>1600:
r=255
g=255
b=52
elif measurement <1599 and measurement>1500:
r=255
g=255
b=65
elif measurement <1499 and measurement>1400:
r=255
g=255
b=78
elif measurement <1399 and measurement>1300:
r=255
g=255
b=91
elif measurement <1299 and measurement>1200:
r=255
g=255
b=104
elif measurement <1199 and measurement>1100:
r=255
g=255
b=117
elif measurement <1099 and measurement>1000:
r=255
g=255
b=130
elif measurement <999 and measurement>900:
r=255
g=255
b=143
elif measurement <899 and measurement>800:
r=255
g=255
b=156
elif measurement <799 and measurement>700:
r=255
g=255
b=169
elif measurement <699 and measurement>600:
r=255
g=255
b=182
elif measurement <599 and measurement>500:
r=255
g=255
b=195
elif measurement <499 and measurement>400:
r=255
g=255
b=208
elif measurement <399 and measurement>300:
r=255
g=255
b=221
elif measurement <299 and measurement>200:
r=255
g=255
b=234
elif measurement <199 and measurement>100:
r=255
g=255
b=247
 
else:
r=255
g=255
b=255
#FUERA DEL WHILE SECUNDARIO SE RELLENA LA FIGURA DEPENDIENDO DEL RANGO
t.fillcolor(r,g,b)
t.begin_fill()
t.circle(50)
t.end_fill()

screen.exitonclick()

CORRIDA DELPROGRAMA

Con foco a su total intensidad, donde el sensor de luz esta recibiendo muy poco estimulo.
Con el foco a mediana intensidad, donde el sensor ya recibe un poco de luz pero no la suficiente
 Con el foco apagado donde el sensor esta recibiendo demasiada luz 

Comentarios

Entradas populares de este blog

Funciones y Figuras Geometricas

En la siguiente serie de funciones se calculara cada una de las áreas y volúmenes de las siguientes figuras geométricas, haciendo uso de listas para evaluar e imprimir datos. PROGRAMA  En el programa siguiente tomar en cuenta las especificaciones dadas.  #en el siguiente programa se muestran 24 funciones diferentes #dichas funciones sirven para calcular el area y volumen de figuras geometricas #las funciones utilizan como principal recurso las lists (por especificaciones del docente que imparte la materia) #todas las funciones corren en el programa #pero tener cuidado con la version de python ya que en algunas verciones se puede tener error #se recomienda comprobar cada funcion por separado para su rapida ejecucion #todas las funciones contienen un print y aun lado esta comentado las salidas que da ejemplo [base,altura,area] #despues de cada funcion se manda a llamar dicha funcion para no generar confucion en el codigo #cada funcion se tiene un nombre rel...

Semaforo en python

En el siguiente programas se realizo la simulación tanto física como virtual de un semáforo a cuatro esquinas, los materiales utilizados ademas de los leds, resistencias y protoboard que son los componentes básicos, también es necesario tener una raspberry pi 3 con python instalado, con las librerías de turtle y gpio. El funcionamiento es básico, los led se aterrizan a tierra y las entradas de voltaje serán aterrizadas a los pines GPIO de la raspberry que dependiendo de las sentencias mandaran voltaje o no mandaran nada a sus respectivos leds. La lógica de un semáforo de 4 esquinas es: mientras un semáforo este en verde los otros tres deben de estar en rojo y hacer el intercambio en sentido horario. CÓDIGO DEL PROGRAMA from turtle import * import RPi.GPIO as gpio import time t=Turtle() S1=Turtle() S2=Turtle() S3=Turtle() S4=Turtle() screen=t.getscreen() setup(1100,650,0,0) screensize(1000,600) colormode(255) #fondo carretera t.fillcolo...