pinMode(OUTPUT/INPUT);

OP #4112974
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
}
Persönliche Seite #4112978
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.
Gast #4112989
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;
}
Gast #4112991
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.