Eu configurei o meu Arduino UNO com 4 fios de entrada, eles se conectam às portas 10, 11, 12, 13, eles são conectados à minha placa de ensaio com nada, exceto o fio.
Meu código seria simplesmente:
Serial.println(digitalRead(13));
Serial.println(digitalRead(12));
Serial.println(digitalRead(11));
Serial.println(digitalRead(10));
O problema é que, depois de conectar brevemente um pino a 5V ou 3V3, a leitura começaria a ficar louca, como: 1 0 0 1 0 1 1 1 0 1 0 1 1 0 Sem nenhum sentido! Sem ter nenhum fio conectado diretamente ao meu VCC (5V ou 3V3), a leitura muda constantemente, quando deve ser zero!
Meu Arduino está morto? Como posso consertar isso?
arduino
floating-pin
Guilherme Garcia da Rosa
fonte
fonte
Respostas:
O que você tem é chamado de
Floating
alfinete. Os pinos de entrada digital são muito sensíveis à mudança e, a menos que sejam direcionados positivamente para um estado ou outro (Alto ou Baixo), captarão a capacitância perdida de fontes próximas, como tábuas de pão, dedos humanos ou até o ar. Qualquer fio conectado a ele funcionará como uma pequena antena e fará com que o estado de entrada mude. E quero dizer qualquer fio, o traço na placa, o fio na placa de ensaio, o pino da placa de ensaio, até o pino de metal do próprio CI.Isso é consultado na página de referência do Arduino:
Se você olhar para o Tutorial do Arduino Digital Pin :
Esses resistores de tração fracos forçam o estado do pino de entrada a um estado conhecido e são facilmente substituídos por tensões de entrada mais fortes, como uma conexão direta ao terra ou + 5v.
fonte
pinMode(pin, INPUT_PULLUP)
? É fácil de lembrar e muito difícil de estragar.Isto é normal. A menos que uma entrada esteja conectada a algo, ela será exibida ALTA ou BAIXA ou mudando constantemente. Isso é descrito na página de referência digitalRead no site do Arduino.
O pino de entrada se comporta com alguma pequena capacitância, portanto, conectar brevemente a 3V3 ou 5V carregará a capacitância. Você pode encontrar um efeito semelhante usando um dedo nu.
Você pode evitar o problema adicionando um resistor de grande valor entre o pino e o GND.
Pergunte a si mesmo por que você espera zero?
fonte