Como controlar pinos GPIO em seu Raspberry Pi
A fim de ter o acesso ganho Raspberry Pi aos pinos GPIO, você deve instalar um módulo Python que age como uma interface entre a língua e os pinos. Isso permite que um programa para ler no que está acontecendo com os sinais nas linhas de GPIO.
Existem algumas opções diferentes, mas talvez o mais fácil de instalar é RPi.GPIO. Talvez a maneira mais fácil de instalar, é a partir de uma janela do terminal com o comando
sudo apt-get install python3-rpi.gpio
Se você tiver uma versão anterior deste módulo, você tem que primeiro desinstalar o antigo apagando os arquivos manualmente. Encontrá-los com este comando em uma janela de linha de comando
find / usr | grep python | grep -i GPIO
e excluir os que você encontrar.
Qualquer programa Python que precisa acessar os pinos GPIO deve fazer as seguintes operações:
Importar o módulo para conversar com os pinos.
Configurar como você deseja se referir aos pinos.
Inicializar os pinos GPIO que deseja usar.
Ler ou escrever para os pinos.
Isso simplesmente define todos os pinos GPIO ser entradas e depois constantemente lê-los de volta para o Raspberry Pi. Ela mostra o novo estado quando qualquer das entradas mudar.
#! / Usr / / python # GPIO monitor de estado de entrada env bin sobre o estado Raspberry Pi # GPIO - mostra o estado de todas as entradas GPIO no P1 # pinos não GPIO como ximport RPi.GPIO como GPIOprint "Mostrar a entrada pino GPIO estados "print" Ctrl C para parar "boardRevision = GPIO.RPI_REVISION # definir os pinos para useif boardRevision == 1: pinagem = [-1, -1,0, -1,1, -1,4,14, -1 , 15,17,18,21, -1,22,23, -1,24,10, -1,9,25,11,8, -1,7] se boardRevision == 2: pinagem = [-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) # usar verdadeira GPIO numberinginputState = [5 para temperatura no intervalo (0,26)] # lista em branco para a entrada levelsfor pin in range (0,26): # definir todos os pinos para inputsif pinagem [pin] = -1: GPIO.setup (pinagem [pin], GPIO.IN, pull_up_down = GPIO.PUD_UP) # substitua a linha acima com a linha abaixo para ver o efeito de factores de produção flutuante # GPIO.setup (pinagem [pin], GPIO.IN, pull_up_down = GPIO.PUD_OFF) while True: # fazer foreverneedUpdate = Falsefor check-in range (0,26): # olhada em cada entrada na turnif pinagem [seleção] = -! 1: se GPIO.input (pinagem [seleção]): latestState = 1else: latestState = 0if (latestState = inputState [seleção]!): needUpdate = Trueprint "GPIO", pinagem [seleção] ", alterado para uma lógica", latestStateinputState [seleção] = latestStateif needUpdate: # visor todos pin statesprint "estado atual" para a linha no intervalo (1, -1, -1): para o show na faixa (linha, 26,2): se inputState [show] = 5 : imprimir inputState [show], else: print "x", print "" #end de loop principal
Dê uma olhada no código e ver o que está acontecendo. Depois de importar o módulo RPi.GPIO, o código encontra a revisão da placa e inicializa uma lista com base no que a revisão da placa é. A lista tem um valor de -1 nas posições dos pinos em que não existe pino GPIO (isto é, onde há um pino de alimentação ou do solo).
Caso contrário, ela tem o número GPIO na posição do pino correspondente da lista. Em seguida, o código cria uma lista que contém os valores de entrada para cada pino.
Este código é preenchido com um valor arbitrário de 5, sabendo que qualquer valor real de entrada será apenas um zero ou um. Em seguida, todos os pinos são ajustados para ser entradas com as resistências de pull-up internas ativado. Isso termina a parte de instalação do programa.
O resto do código é um ciclo que é executado para sempre. Ele verifica cada entrada, olhando para o pinagem lista e chamar a GPIOinput (pin) para retornar o valor de cada entrada. Isto é comparado com o valor da última vez. Se for diferente, ela mostra o estado atual de entrada que, juntamente com todos os valores de entrada dispostas na mesma ordem que os pinos do conector P1.
Para executar o programa, abrir uma janela de terminal, navegue até o diretório que contém o programa e tipo
sudo python GPIOstate.py
Você precisa do sudo prefixo porque o sistema operacional restringe o acesso aos pinos GPIO e você precisa de privilégios de root para ser capaz de usá-los.
Para testar isto, basta ligar uma extremidade de um fio a uma das ligações à terra e circundar, por sua vez, ligar a outra extremidade do fio para cada entrada. Todas as entradas mostram inicialmente como os lógicos na tela e mudar para zeros lógicos quando você aterrar a entrada.
Tenha cuidado para não ligar o fio de terra a qualquer uma das saídas de potência: Este será curto para fora o poder do seu Raspberry Pi. Para evitar isso, colocar um pequeno pedaço de plasticina (Play-Doh, massa de modelar, ou tack azul) nas tampas de rosca dos conectores de alimentação.