Paso 7: Código de Python
Otro descargo de responsabilidad: tampoco soy un informático o programador, mucho menos un experto en Python. Si el código de abajo se ve horrible, ineficiente, o sólo hace usted cringe, no dude en enviar un enlace al mejor código, por el bien de la gente leyendo esto en el futuro.Actualización 13/12/2013: ver comentario de mluna debajo un enlace a un código más limpio.
Ahora que tienes el circuito construido, es hora de empezar a usar el Raspberry Pi! Esta es otra parte que era confuso para un usuario frambuesa Pi - no era inmediatamente obvio cómo controlar realmente los pines GPIO, porque al parecer hay más de una forma de hacerlo. Una búsqueda en Google para "python gpio de frambuesa pi" revela varios tutoriales diferentes y puede descargar los paquetes Python. También puede controlar las clavijas directamente desde un terminal sin usar Python en todos. Por lo tanto, me tomó un tiempo para darse cuenta de que la distribución de la Raspbian por defecto ya viene con un módulo de Python para controlantes pins GPIO. ¡ UF!
Recuerde que supongo ya tienes un Raspberry Pi para arriba y corriendo este punto, utilizando Raspbian, que viene con tanto Python 2.x y 3.x (a partir de diciembre de 2013). Escribí el código en Python 3.2.3 utilizando inactivo 3 (integrado desarrollo biblioteca) - hay un acceso directo para él en el escritorio predeterminado de Raspbian.
Para ejecutar el código:
1. Abra un terminal ("LXTerminal" icono en el escritorio), escriba sudo idle3y pulse Entrar. Esto va en marcha lenta "como raíz", que se requiere para el acceso GPIO con Python.
2. descargar christmas_timer.py (abajo) y luego ábrelo en el ralentí 3, o crear un nuevo archivo de Python y copia y pega el código a continuación.
3. Tome un minuto para mirar el código y los comentarios. La única parte que necesita para editar es la sección hacia el principio con todos los "on" y "off" veces (MonOn MonOff, TueOn, etc.).
4. estás casi listo para ejecutar el código! Pero primero... (ir al siguiente paso)
# Frambuesa Pi personalizados Navidad temporizador de luz
módulo de GPIO de importación #
importación RPi.GPIO como GPIO# configurar pines GPIO como salidas
# Este Convenio es para la Convención de pin header "P1"
# donde las patillas comienzan con P1 en la parte superior izquierda
# y a P26 en la parte inferior derecha, con las probabilidades en la
columna de la izquierda # y eventos en la columna de la derecha.
# Así, pins 11 P1 y P1-12 corresponden a GPIO17 y
# GPIO18 respectivamente.
GPIO.setmode (GPIO. JUNTA)
GPIO.setup (11, GPIO. HACIA FUERA)
GPIO.setup (12, GPIO. HACIA FUERA)módulos de fecha y hora de importación #
fecha y hora de la importación
tiempo de importación# Entrar en los tiempos que desea las luces para activar y desactivar para
# cada día de la semana. Por defecto es para que luces encender a
# 17:30 y a las 22:30 en días laborables, en a 17:00 y apagado
# en 23:30 los fines de semana. Tenga en cuenta que esto es usando un reloj de 24 horas.MonOn = datetime.time(hour=17,minute=30,second=0)
MonOff = datetime.time(hour=22,minute=30,second=0)
TueOn = datetime.time(hour=17,minute=30,second=0)
TueOff = datetime.time(hour=22,minute=30,second=0)
WedOn = datetime.time(hour=17,minute=30,second=0)
WedOff = datetime.time(hour=22,minute=30,second=0)
Thuan = datetime.time(hour=17,minute=30,second=0)
ThuOff = datetime.time(hour=22,minute=30,second=0)
FriOn = datetime.time(hour=17,minute=30,second=0)
FriOff = datetime.time(hour=22,minute=30,second=0)
SatOn = datetime.time(hour=17,minute=0,second=0)
SatOff = datetime.time(hour=23,minute=30,second=0)
SunOn = datetime.time(hour=17,minute=0,second=0)
SunOff = datetime.time(hour=23,minute=30,second=0)
# Guardar estos momentos en una matriz para facilitar el acceso más adelante.
OnTime = [MonOn, TueOn, WedOn, Thuan, FriOn, SatOn, SunOn]
OffTime = [MonOff, TueOff, WedOff, ThuOff, FriOff, SatOff, SunOff]
# Establecer un "tiempo de espera" en segundos. Esto asegura que el programa hace una pausa
# brevemente después de él enciende las luces encendido o apagado. Por otra parte, desde el
# bucle se ejecutará más de una vez por segundo, intentará mantener
# Encienda las luces cuando ya están encendidos (o desactivar cuando son
# ya apagado.
waitTime = 3
# Iniciar el bucle que se ejecutará hasta que deja el programa o girar a la
# de la Raspberry Pi.
Aunque la verdad:
# obtener la hora actual en horas, minutos y segundos
currTime = DateTime.DateTime.Now
# consigue el día de la semana (0 = el lunes, 1 = el martes, 2 = el miércoles...)
currDay = datetime.datetime.now().weekday()
#Check para ver si es el momento de encender las luces
Si (currTime.hour - OnTime [currDay] .hour == 0 y
currTime.minute - OnTime [currDay] .minute == 0 y
currTime.second - .segundo OnTime [currDay] == 0):
# establece el pin GPIO en alta, equivalente a
# la tecla ON del mando a distancia
GPIO.output (11, GPIO. ALTA)
# esperar un período muy corto de tiempo establezca
# el valor bajo, el equivalente de liberar el
Botón #
Time.Sleep(.5)
GPIO.output (11, GPIO. BAJO)
# Espere unos segundos para que el bucle no viene
# volver a través y presione nuevamente el botón "on"
# mientras el ae de luces ya en
Time.Sleep(waitTime)
#check a ver si es momento de apagar las luces
Elif (currTime.hour - .hour OffTime [currDay] == 0 y
currTime.minute - .minute OffTime [currDay] == 0 y
currTime.second - .segundo OffTime [currDay] == 0):
# establece el pin GPIO en alta, equivalente a
# presiona el botón OFF en el mando a distancia
GPIO.output (12, GPIO. ALTA)
# esperar un período muy corto de tiempo establezca
# el valor bajo, el equivalente de liberar el
# Botón de apagado
Time.Sleep(.5)
GPIO.output (12, GPIO. BAJO)
# Espere unos segundos para que el bucle no viene
# volver a través y presione nuevamente el botón de "off"
# mientras la luces ae ya apagado
Time.Sleep(waitTime)