Eu me considerei fora desse tipo de coisa de nível iniciante há muito tempo, mas acho que não sou tão inteligente quanto pensei que era porque parece que estou tendo um nível excepcional de problemas com isso!
Então, finalmente terminei os exames e posso brincar com meu novo brinquedo, então a primeira coisa que fiz foi colocar uma tela de caracteres em LCD montada sobre o UART. Como eu não consegui resolver esse problema, estou tendo muita dificuldade para descobrir por que estou tendo tanta dificuldade com este botão!
Então, eu configurei um botão semelhante ao que se faria com um arduino; com um resistor de 1k conectado ao terra. Usei meu multímetro para garantir que o botão estivesse funcionando e produzindo a quantidade certa de energia. Eu SSH no meu shell, conecte o botão no pino GPIO 7 e entrei em python. Aqui está o que eu tentei:
GPIO.pinout(GPIO.BOARD)
GPIO.setup(7,GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
while 1==1:
inputval = GPIO.input(7)
print inputval
Isso me dá um loop infinito, False
independentemente de como eu pressiono o botão. Eu tentei com isso GPIO.PUD_UP
também e recebi um loop infinito True
. Eu também tentei GPIO.PUD_OFF
e consegui mais False
.
Estou faltando alguma coisa aqui?
GPIO.PUD_UP
. Com que voltagem você vêGPIO.PUD_UP
o botão pressionado?Respostas:
Meu GPIO não tem
pinout
, tive que mudar parasetmode
Desde que você está usando o
GPIO.BOARD
pino 7 é o rotuladoGPIO 4(GPCLK0)
. Se você quis usarGPIO 7(CE1)
, você deve usarGPIO.setmode(GPIO.BCM)
em vezTestei o código tocando em um resistor de 1k de
3V3 Power
aGPIO 4(GPCLK0)
fonte
GPIO.BOARD
era para a pinagem do próprio quadro, como mostrado nas figuras, não para o esquema físico de numeração de pinos. Quando chegar em casa do trabalho, testarei e tenho certeza de que funcionará.Eu nunca uso "pull_up_down = GPIO.PUD_DOWN" na configuração do pino. Tente o seguinte:
Como o gnibbler disse, verifique se o PinNum é para o BCM GPIO.
fonte