- Ordenadores
- Pieza de frambuesa
- Cómo controlar los pines GPIO en su frambuesa Pi
Libro Relacionado
Por Sean McManus, Mike Cook
Para que el frambuesa Pi tenga acceso a los pines GPIO, debe instalar un módulo Python que actúe como interfaz entre el idioma y los pines. Esto permite que un programa lea lo que está sucediendo con las señales en las líneas GPIO.
Existen algunas opciones diferentes, pero quizás la más fácil de instalar es RPi.GPIO. Quizás la forma más fácil de instalarlo es desde una ventana de terminal con el comando
sudo apt-get install python3-rpi.gpio
Si tiene una versión anterior de este módulo, primero debe desinstalar la anterior eliminando manualmente los archivos. Encuéntrelos con este comando en una ventana de línea de comandos
find /usr | grep python | grep -i gpio
y borra las que encuentres.
Cualquier programa Python que necesite acceder a los pines GPIO debe realizar las siguientes operaciones:
- Importar el módulo para hablar con los pines.
- Configure cómo desea referirse a las clavijas.
- Inicialice los pines GPIO que desee utilizar.
- Lea o escriba en los alfileres.
Esto simplemente ajusta todos los pines GPIO para que sean entradas y luego los lee constantemente de nuevo en el Pi de frambuesa. Imprime el nuevo estado cuando cambia cualquiera de las entradas.
#!/usr/bin/env python#GPIO input state monitor on the Raspberry Pi#GPIO state - mostrar el estado de todas las entradas GPIO en los pines P1#non GPIO mostrados como ximport RPi.GPIO como GPIOprint "Display the GPIO input pin states"print "Ctrl C to stop"boardRevision = GPIO.RPI_REVISION #define los pines a utilizar si boardRevision == 1: pinout =[-1,-1,0,-1,1,1,-1,4,14,-1,15,17,18,21,-1,22,23,-1,24,10,-1,9,25,11,8,-1,7]if boardRevision == 2: pinout =[-1,-1,-1,2,-1,3,-1,4,14,-1,15,17,18,27,-1,22,23,-1,24,10,-1,9,25,11,8,-1,7]GPIO.setmode(GPIO.BCM) # use la numeración real GPIOinputState = [ 5 para temp in range (0,26)] # lista en blanco para los niveles de entrada para pin in range(0,26): # ajuste todos los pines a entradas si pinout[pin] != -1: GPIO.setup(pinout[pin],GPIO.IN, pull_up_down=GPIO.PUD_UP) # reemplace la línea de arriba con la línea de abajo para ver el efecto de las entradas flotantes # GPIO.setup(pinout[pin],GPIO.IN, pull_up_down=GPIO.PUD_OFF)mientras True: # do forever needUpdate = Falso para el check in range(0,26): # mirar cada entrada por turno si pinout[check] != -1: si GPIO.input(pinout[check]) : latestState = 1 else: latestState = 0 if(latestState != inputState[check]): needUpdate = True print "GPIO ",pinout[check], "changed to a logic", latestState inputState[check] = latestState if needUpdate: # mostrar todos los estados de las clavijas imprimir "Current state" para la fila en el rango (1,-1, -1): para mostrar en el rango (fila, 26,2) : si inputState[show] != 5: imprimir inputState[show], si no: imprimir "x", imprimir " " " #final del bucle principal
Echa un vistazo al código y mira lo que está pasando. Después de importar el módulo RPi.GPIO, el código encuentra la revisión de la placa e inicializa una lista basada en lo que es la revisión de la placa. La lista tiene un valor de -1 en las posiciones de las clavijas donde no hay clavijas GPIO (es decir, donde hay una clavija de alimentación o de tierra).
De lo contrario, tiene el número GPIO en la posición del pin correspondiente de la lista. Luego el código crea una lista que contiene los valores de entrada para cada pin.
Este código se rellena con un valor arbitrario de 5, sabiendo que cualquier valor de entrada real será sólo un cero o uno. A continuación, todos los pines se configuran para ser entradas con las resistencias internas de pull-up activadas. Esto termina la parte de configuración del programa.
El resto del código es un bucle que se ejecuta para siempre. Comprueba cada entrada mirando la lista de pinout y llamando al GPIOinput(pin) para devolver el valor de cada entrada. Esto se compara con el valor de la última vez. Si es diferente, imprime el estado actual de esa entrada junto con todos los valores de entrada dispuestos en el mismo orden que los pines del conector P1.
Para ejecutar el programa, abra una ventana de terminal, navegue hasta el directorio que contiene el programa y escriba
sudo python GPIOstate.piquero
Necesitas el prefijo sudo porque el sistema operativo restringe el acceso a los pines GPIO y necesitas privilegios de root para poder usarlos.
Para probar esto, simplemente conecte un extremo de un cable a una de las conexiones a tierra y, a su vez, conecte el otro extremo del cable a cada entrada. Todas las entradas se muestran inicialmente como lógicas en la pantalla y cambian a ceros lógicos cuando se pone a tierra la entrada.
Tenga cuidado de no conectar este cable a tierra a ninguna de las salidas de potencia: Esto cortará el poder de tu frambuesa Pi. Para evitar esto, coloque una pequeña pieza de plastilina (Play-Doh, arcilla de modelar o tachuelas azules) en la parte superior de los conectores de alimentación.