Forum: Mikrocontroller und Digitale Elektronik pinMode(OUTPUT/INPUT);


von Daniel .. (daniel_boers)


Lesenswert?

Hallo zusammen, ich versteh den Zusammenhang zwischen pinMode(); und 
digitalWrite(); nicht, genauer gesagt wie verhält sich das Programm, 
wenn ich pinMode(pin 2, OUTPUT); im void setup definiere und 
anschließend in der loop dann die Funktion digitalWrite(pin 2, HIGH oder 
LOW); schreibe und genau das gleiche mit pinMode(pin 2, INPUT); wie 
verhalten sich HIGH und LOW jeweils zu INPUT oder OUTPUT ?
Hier ein Programmabschnitt den ich nicht mehr versteh
1
void setup() {
2
  pinMode (HCSR04_SchallPin, OUTPUT);
3
  pinMode (HCSR04_EchoPin, INPUT);
4
...
5
6
{
7
  Robot.digitalWrite(HCSR04_SchallPin, HIGH);
8
  delayMicroseconds(10);   
9
  Robot.digitalWrite(HCSR04_SchallPin, LOW);      
10
  Dauer = pulseIn(HCSR04_EchoPin, HIGH);
11
  Dauer = Dauer/2;
12
  Entfernung = Dauer / 29;          
13
}

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Soweit ich mich erinnern kann, bedeutet INPUT übersetzt "Eingang". An 
einem Eingang kann man keinen Ausgangszustand setzen.

Ich kenne Arduino nicht, und weiß daher nicht, ob das Schreiben an einen 
Eingang trotzdem funktioniert - in diesem Fall würde aber nur der Pullup 
ein- bzw ausgeschaltet. Das kann man für einige Anwendungsgebiete aber 
auch gebrauchen.

Es kann aber auch sein, dass ich Deine Frage nicht ganz verstehe.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Mit pinmode konfigurierst du den Pin als Ausgang OUTPUT oder als Eingang 
INPUT.

digital Write:
- OUTPUT: 5V HIGH / 0V LOW
- INPUT: Pullup HIGH / Hochogmig LOW

Nachzulesen hier:
http://www.arduino.cc/en/Reference/DigitalWrite
http://www.arduino.cc/en/Reference/pinMode

von Daniel .. (daniel_boers)


Lesenswert?

Ok danke für die schnellen Antworten, aber was passiert bei INPUT: 
Pullup HIGH, bei der Arduino Homepage hab ich schon vorbei geschaut aber 
da werd ich nicht wirklich schlau draus.

von Joe (Gast)


Lesenswert?

void setup() {
  pinMode (HCSR04_SchallPin, OUTPUT);   Dieser PIN ist ein Ausgang
  pinMode (HCSR04_EchoPin, INPUT);      Dieser PIN ist ein Eingang
...

{
  Robot.digitalWrite(HCSR04_SchallPin, HIGH);  Ausgang=1 setzten
  delayMicroseconds(10);                       10us warten
  Robot.digitalWrite(HCSR04_SchallPin, LOW);   Ausgang=0 setzen
  Dauer = pulseIn(HCSR04_EchoPin, HIGH);       Am Eingangspin Pulsdauer 
messen

  Dauer = Dauer/2;
  Entfernung = Dauer / 29;
}

von Sam (Gast)


Lesenswert?

Hallo Daniel,

ich gehe mal davon aus, dass du von einem Arduino redest...

Mit pinMode() legst du fest, ob der Pin als Eingang oder Ausgang 
verwendet werden soll, also ob er z.B. eine LED schalten soll (-> 
Ausgang, OUTPUT) oder ob du z.B. abfragen möchtest, ob eine LED (welche 
über einen Taster o.ä. geschalten wird) an ist oder nicht (-> Eingang, 
INPUT).

digitalWrite() brauchst du i.d.R. wenn du den Pin als Ausgang definierst 
und seinen Zustand ändern möchtest (HIGH = 5V bzw. LOW = 0V).

Wenn du den Pin als Eingang festgelegt hast, kannst du mit digitalRead() 
den Zustand abfragen (Rückgabewert 1 bedeutet HIGH, 0 heißt LOW).

In deinem Codebeispiel wird der HCSR04_SchallPin auf 5V Ausgangsspannung 
gesetzt und nach 10 Mikrosekunden wieder auf 0V ("ausgeschaltet").

Ich hoffe, dass es etwas weiter hilft :)

Gruß,
Sam

von Daniel .. (daniel_boers)


Lesenswert?

Danke jetzt hab ich verstanden :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.