Paso 4: Escribir el programa
Antes de adentrarnos en él, es importante tener en cuenta que la sangría es importante en el lenguaje Python. Otros idiomas utilizan signos de puntuación como soportes para decirle al programa la orden para ejecutar las cosas; Python usa indentación. Debido a esto, no puede simplemente copiar y pegar el código de esta página a su programa, el formato puede no ser totalmente preservado. No dude en seguir y escribir su propio código como ir, o simplemente descargar mi código de ejemplo aquí.
Si eres nuevo en la codificación, es importante mencionar que no hay una manera de escribir un programa. Personas tienen su propio estilo, pero sobre todo viene a cómo piensa resolver un problema. Me proporcionan código de ejemplo y explicar línea por línea, pero por favor, saber que no es la única manera de lograr el mismo resultado exacto.
import sys, time
Aquí importamos dos bibliotecas incorporadas - funciones, variables, etc. que ya han sido definidos y que podemos llamar el.
import RPi.GPIO as GPIO
Se trata de una biblioteca de Raspbian que nos permite utilizar Python para control GPIO pins.
redPin = 11 greenPin = 13 bluePin = 15
Ahora, definimos algunas variables - que pins nos va conectando a que conducen RGB. Este paso no es necesario, pero facilita cambiar pines si es necesario.
def blink(pin):
Aquí, definimos una función. Una función es un conjunto de pasos que el equipo se ejecutará en el orden que le damos a él. Esta función requiere una variable para poder ejecutar: el número del pin que queremos iluminar.
GPIO.setmode(GPIO.BOARD)
Comenzamos nuestra función haciendo referencia a una de nuestras bibliotecas, GPIO. Entonces, le decimos que queremos elegir una Convención de nomenclatura de los pines GPIO (que son dos), para que el programa sepa que nos estamos refiriendo a las más. Entonces, decimos que utilice la Convención de "tablero" (en lugar de la Convención BMC), utilizando la biblioteca GPIO.
GPIO.setup(pin, GPIO.OUT)
Ahora, una vez más usando la biblioteca GPIO, decimos el Pi que queremos usar un pin. Pero primero, tenemos que especificar que la clavija y cómo queremos usar-de entrada o de salida. Aquí, "pin" es la variable que va a ser conectada en blink(pin).
GPIO.output(pin, GPIO.HIGH)
Ahora que el pasador se ha establecido, esta línea lo convierte. Debe reconocer la sintaxis por ahora; Aquí estamos utilizando la misma variable "pin" y el uso de la biblioteca GPIO para fijar el pin a un valor de "alto". En el caso de los pines GPIO, un "alto" valor resulta en 3.3v se pasa, o "on", mientras que un "bajo" valor resultados en 0v se pasa, o "off".
Ahora vamos a definir una función para apagar las luces. Se va a ver casi idéntica a la función anterior, sólo que te ajuste los pernos a baja.
DEF turnOff(pin): def turnOff(pin): GPIO.setmode(GPIO.BOARD) GPIO.setup(pin, GPIO.OUT) GPIO.output(pin, GPIO.LOW)
Necesitamos definir algunas funciones específicas a color utilizando las funciones que acaba de hacer. Recordar que estamos utilizando pernos de 11, 13 y 15 para rojo, verde y azul. Comenzaremos con las funciones que encender la luz. Con este tipo de función, no requiere ningún parámetro, así que los soportes permanecen vacíos; llamar a esta función en el programa simplemente lo ejecutará.
def redOn(): blink(redPin)
Aquí, le damos a la función de "parpadear" un número pin que se usa, 11. Cuando llamamos a redOn(), nuestra función de abrir y cerrar comenzará a ejecutarse con "pin" sustituido por "redPin". Hay que recordar que, antes, fijar redPin igual a 11.
Ahora hacemos lo mismo para el resto de los colores.
def greenOn(): blink(greenPin) def blueOn(): blink(bluePin)
Recordar que cuando se trata con luz, amarillo es hecho mezclando el rojo con verde, cian con verde y azul, magenta con rojo, azul y blanco por la combinación de los tres.
def yellowOn(): blink(redPin) blink(greenPin) def cyanOn(): blink(greenPin) blink(bluePin) def magentaOn(): blink(redPin) blink(bluePin) def whiteOn(): blink(redPin) blink(greenPin) blink(bluePin)
Por último, escribiremos las funciones para apagar las luces. Otra vez, la sintaxis será similar a las funciones anteriores.
def redOff(): turnOff(redPin) def greenOff(): turnOff(greenPin) def blueOff(): turnOff(bluePin) def yellowOff(): turnOff(redPin) turnOff(greenPin) def cyanOff(): turnOff(greenPin) turnOff(bluePin) def magentaOff(): turnOff(redPin) turnOff(bluePin) def whiteOff(): turnOff(redPin) turnOff(greenPin) turnOff(bluePin)
Ahora estamos listos para definir nuestra función principal; un bucle que constantemente piden la entrada del usuario y reacciona llamando a varias funciones. En este caso, el usuario podrá activar o desactivar colores. Este programa está escrito para que solo aceptará algunas entradas predefinidas. De lo contrario, no hará nada y mostrar un mensaje a tal efecto.
Una vez más, no pedimos para las variables de esta función, así que los soportes permanecen vacíos. esencialmente "mientras que el verdadero" dice "mientras se ejecuta el programa, hacer esto", para que corra constantemente hasta que nos salga.
def main(): while True: cmd = raw_input("Choose an option:")
Definimos una nueva variable "cmd" para utilizar más adelante y ponerlo igual a la entrada del usuario. También constantemente se pedirá al usuario que elija una opción.
Ahora una declaración "si" que se ejecutará sólo si el usuario de entrada exactamente coincide con el texto dentro de las comillas. Tenga en cuenta que aquí utilizamos dos símbolos "igual a". En Python y de hecho la mayoría de las idiomas, un solo "igual a" se utiliza para cambiar el valor de una variable mientras que los dobles se utilizan para comparar valores variable coinciden entre sí o no.
if cmd == "red on": redOn()
"elif" está parado para "else, if". Esto tachuelas en la instrucción "if" anterior y agrega nuevos parámetros, lo que nos permite crear fácilmente una cadena de sentencias "else, if".
elif cmd == "red off": redOff() elif cmd == "green on": greenOn() elif cmd == "green off" greenOff() elif cmd == "blue on": blueOn() elif cmd == "blue off": blueOff() elif cmd == "yellow on": yellowOn() elif cmd == "yellow off": yellowOff() elif cmd == "cyan on": cyanOn() elif cmd == "cyan off": cyanOff() elif cmd == "magenta on": magentaOn() elif cmd == "magenta off": magentaOff() elif cmd == "white on": whiteOn() elif cmd == "white off": whiteOff() else: print("Not a valid command.") return
Con nuestra última declaración "else", si el usuario intenta introducir nada que no sea uno de los comandos especificados anteriormente, le dirá al usuario que es un comando no válido. Lo último que necesita la función es esa "vuelta" para que el programa sepa cuando a lazo.
main()
Esta es la última línea de nuestro código. Cuando se ejecuta el programa, esta línea llame a la función principal que acaba de definir y se establecerá el bucle.