Cyfrowy pin we / wy jako uziemienie

9

Chcę, aby pin we / wy zwracał prąd w obwodzie, podobnie jak funkcja uziemienia.

Który z nich osiągnie to, czego potrzebuję?

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

lub

pinMode(pinnumber, input)
rajat
źródło
drugą opcją pinMode(pinnumber,input)jest umieszczenie pinu w „trzecim stanie” pinu, który jest również nazywany „wysoką impedancją”. Zasadniczo jest tak, jakby szpilka nie była podłączona do obwodu, podobnie jak omomierz.
zmo
„digitWrite”? Nie masz na myśli „ digitalWrite ”?
Peter Mortensen

Odpowiedzi:

9

Twój pierwszy fragment jest poprawnym rozwiązaniem.

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

Uważaj jednak, możesz zatopić tylko do 6 mA lub 9 mA na styk (zgodnie z dokumentacją [sekcja „Wejścia i wyjścia”], nigdy więcej nie próbowałem). Jeśli potrzebujesz więcej prądu, użyć tranzystora ( to wygląda na przykład dobry, wystarczy odwrócić pin wyjściowy do HIGH).

Gdy pin jest skonfigurowany jako wejście, powinien mieć wysoką impedancję, a nie to, czego chcesz.

FredP
źródło
Dzięki, prąd również pochodzi z pinów IO Arduino. Dlatego nie sądzę, że limit 40mA będzie problemem.
rajat
@rajat Robisz jakąś matrycę LED? Uważaj, zakładając, że podłączysz (na przykład) diodę wysokoprądową między dwoma pinami (przynajmniej bez odpowiedniego opornika ograniczającego prąd), możesz nadal uszkodzić układ. Nie wspominając nawet o przypadku, w którym powstaje zwarcie.
FredP,
Jest to matryca czujnika ciśnienia, ma 10 multiplekserów 16: 1. Prąd pochodzi tylko z kabla USB Arduino i nie ma zewnętrznego źródła zasilania, dlatego nie sądzę, aby wysoki prąd był problemem. Czy możesz rzucić nieco światła na to, co może spowodować zwarcie?
rajat
@rajat coś takiego stworzyłoby zwarcie, jeśli pin „1” i „2” są połączone: pinMode(pinnumber1,OUTPUT); pinMode(pinnumber2,OUTPUT); digitalWrite(pinnumber1,LOW); digitalWrite(pinnumber2,HIGH); PS: nie próbuj tego w domu, nie krzywdź niewinnych arduini, nie pozywaj mnie itp.
FredP
2
Byłem trochę zaskoczony liczbą 6 / 9mA. Okazuje się, że masz rację w przypadku Arduino Due, ale w przypadku Arduinos opartych na AVR (Uno itp.), Które, jak podejrzewam, nadal są w zdecydowanej większości, liczba ta jest bardziej jak 40mA.
microtherion