Ultimamente, tenho tocado muito com o Raspberry Pi. Mas eu tenho um problema.
Quando configuro um pino de entrada para verificar se a eletricidade é enviada para ele ou não, isso me dá respostas bastante instáveis.
Algumas observações que fiz para esclarecer meu problema:
Quando conecto o circuito, e a eletricidade flui para o pino de entrada, o valor que ele fornece é sempre VERDADEIRO ou 1.
Quando quebro o circuito removendo um LED que faz parte dele (quando o valor de entrada deve ser 0), obtém-me valores aleatórios, alternando entre 0 e 1.
Quando removo todos os cabos do meu Pi, obtive o valor consistente de 0
Se eu tiver todos os cabos GPIO removidos, ele me dará o valor 0, mas se eu simplesmente tocar no pino de entrada com um pedaço de metal condutor de eletricidade (levando a nada na outra extremidade), ele começará com os valores aleatórios novamente. Ele não me fornece valores aleatórios, a menos que eu também tenha algo conectado ao pino de saída. Ele não precisa levar a lugar nenhum, apenas precisa tocar no pino de saída. E algum outro pedaço de metal precisa tocar no pino de entrada. Nenhuma conexão entre eles.
Eu me pergunto por que ele começa a me fornecer valores aleatórios quando o pino GPIO de entrada toca qualquer metal.
E ainda mais interessante, por que isso me dá 1s ou TRUEs consistentes quando realmente envio eletricidade a ele?
Respostas:
O problema
É verdade, mas o que acontece quando o terra está conectado ao pino de entrada GPIO? O valor que daria sempre seria falso .
Quando nada está conectado, o pino está no estado "flutuante" e a saída não é previsível. está em um estado indefinido, não é 0 nem 1, e o valor detectado pode mudar estranhamente, daí os resultados aleatórios. Na eletrônica, isso é conhecido como terceiro estado .
Mais alguns detalhes de um artigo da Wikipedia :
A solução geral
A solução é um resistor pull-down . Pense nisso como um componente extra que não faz nada quando a linha está recebendo um 0 ou 1. Mas quando a linha está ociosa, ela de repente entra em ação e dá um 0.
A solução Raspberry Pi
Felizmente para você, o Rpi possui um menu suspenso, é necessário ativá-lo programaticamente. Aqui está um script python para isso:
Nota
Não conecte a energia diretamente ao pino, pois isso seria perigoso! Verifique se há resistência suficiente no circuito. Além disso, nunca conecte a energia de 5V diretamente ao GPIO, pois ela aceita apenas 3,3V.
fonte