Um pino de E / S digital como terra

9

Quero que um pino de E / S retorne corrente em um circuito, de forma semelhante à função de terra.

Qual deles alcançará o que eu preciso?

pinMode(pinnumber, OUTPUT)
digitalWrite(pinnumber, LOW)

ou

pinMode(pinnumber, input)
rajat
fonte
sua segunda opção pinMode(pinnumber,input)é colocar o pino no "terceiro estado" do pino, também chamado de "alta impedância". É basicamente como se o pino não estivesse conectado ao circuito, como um ohmímetro.
Zmo
"digitWrite"? Você não quer dizer " digitalWrite "?
Peter Mortensen

Respostas:

9

Seu primeiro trecho é a solução correta.

pinMode(pinnumber,OUTPUT)
digitalWrite(pinnumber,LOW)

Tenha cuidado, porém, você só pode absorver até 6mA ou 9mA por pino (conforme a documentação [seção "Entrada e saída"], nunca tentei mais). Se você precisar de mais corrente, use um transistor ( isso parece um bom exemplo, basta inverter o pino de saída HIGH).

Quando o pino é configurado como entrada, é suposto ser alta impedância, não o que você deseja.

FredP
fonte
Obrigado, a corrente também vem dos pinos de IO do Arduino. Portanto, não acho que o limite de 40mA seja um problema.
rajat
@rajat Fazendo algum tipo de matriz de LED? Cuidado, supondo que você conecte (por exemplo) um LED de alta corrente entre dois pinos (pelo menos sem um resistor limitador de corrente), você ainda poderá danificar o chip. Nem mesmo mencionando o caso em que você cria um curto-circuito.
5114 FredP
É uma matriz de sensores de pressão, possui 10 multiplexadores 16: 1. A corrente só vem do cabo USB do Arduino e nenhuma fonte de alimentação externa. Portanto, não acho que a alta corrente seja um problema. Você pode esclarecer o que pode causar um curto-circuito?
rajat
@rajat algo assim criaria um curto se os pinos "1" e "2" estiverem conectados: pinMode(pinnumber1,OUTPUT); pinMode(pinnumber2,OUTPUT); digitalWrite(pinnumber1,LOW); digitalWrite(pinnumber2,HIGH); PS: não tente fazer isso em casa, não prejudique o arduini inocente, não me processe, etc ...
FredP
2
Fiquei um pouco surpreso com o número 6 / 9mA. Acontece que você está correto para o Arduino Due, mas para os Arduinos baseados em AVR (Uno, etc), que eu suspeito que ainda estejam na grande maioria, esse número é mais parecido com 40mA.
microtherion