Ein digitaler E / A-Pin als Masse

9

Ich möchte, dass ein E / A-Pin Strom in einem Stromkreis zurückgibt, ähnlich wie bei der Erdung.

Welche davon erreichen das, was ich brauche?

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

oder

pinMode(pinnumber, input)
Rajat
quelle
Ihre zweite Option pinMode(pinnumber,input)besteht darin, den Pin in den "dritten Zustand" des Pins zu versetzen, der auch als "hochohmig" bezeichnet wird. Im Grunde ist es so, als ob der Pin nicht mit dem Stromkreis verbunden wäre, wie es ein Ohmmeter tut.
Zmo
"digitWrite"? Meinst du nicht " digitalWrite "?
Peter Mortensen

Antworten:

9

Ihr erstes Snippet ist die richtige Lösung.

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

Seien Sie jedoch vorsichtig, Sie können nur bis zu 6 mA oder 9 mA pro Pin versenken (gemäß der Dokumentation [Abschnitt "Eingabe und Ausgabe"] habe ich nie mehr versucht). Wenn Sie mehr Strom benötigen, verwenden Sie einen Transistor ( dies scheint ein gutes Beispiel zu sein, Sie müssen nur den Ausgangspin invertieren HIGH).

Wenn der Pin als Eingang konfiguriert ist, soll er hochohmig sein, nicht das, was Sie wollen.

FredP
quelle
Danke, der Strom kommt auch von den IO-Pins von Arduino. Daher denke ich nicht, dass 40mA Limit ein Problem sein wird.
Rajat
@rajat Machst du eine Art LED-Matrix? Seien Sie vorsichtig, vorausgesetzt, Sie stecken (zum Beispiel) eine Hochstrom-LED zwischen zwei Pins (zumindest ohne einen geeigneten Strombegrenzungswiderstand), könnten Sie den Chip trotzdem beschädigen. Nicht einmal der Fall, in dem Sie einen Kurzschluss verursachen.
FredP
Es ist eine Drucksensormatrix mit 10 16: 1-Multiplexern. Der Strom kommt nur vom Arduino USB-Kabel und ohne externe Stromversorgung. Daher denke ich nicht, dass hoher Strom ein Problem sein wird. Können Sie etwas Licht ins Dunkel bringen, was möglicherweise einen Kurzschluss verursachen kann?
Rajat
@rajat so etwas würde einen Kurzschluss erzeugen, wenn Pin "1" und "2" verbunden sind: pinMode(pinnumber1,OUTPUT); pinMode(pinnumber2,OUTPUT); digitalWrite(pinnumber1,LOW); digitalWrite(pinnumber2,HIGH); PS: Versuchen Sie dies nicht zu Hause, schaden Sie unschuldigen Arduini nicht, verklagen Sie mich nicht, etc ...
FredP
2
Ich war ein bisschen überrascht von der 6 / 9mA Nummer. Es stellt sich heraus, dass Sie für das Arduino Due richtig sind, aber für die AVR-basierten Arduinos (Uno usw.), von denen ich vermute, dass sie immer noch in der überwiegenden Mehrheit sind, liegt diese Zahl eher bei 40 mA.
Microtherion