pinMode() und digitalWrite()

Hallo zusammen,

ich habe eine Frage zu den Befehlen pinMode() und digitalWrite().

Genutzt habe ich:

Relayboard: https://www.amazon.de/Elegoo-Relaismodul-Optokoppler-Arduino-Raspberry/dp/B01M8G4Y7Z/ref=sr_1_5?crid=FPHJBFE9VZ0M&keywords=arduino+relay&qid=1649703197&sprefix=arduino+relay%2Caps%2C234&sr=8-5

Beispiel1:

pinMode(pin, OUTPUT);

digitalWrite(pin, LOW); //Relay an

digitalWrite(pin, HIGH); //Relay aus

Beispiel2:

pinMode(pin, OUTPUT);

pinMode(pin, LOW); //Relay aus

pinMode(pin, HIGH); //Relay an

Jetzt ist meine frage was macht der Befehl pinMode(pin,HIGH); ? Hier ist keine Spannung zur Masse messbar nicht negative und auch nicht positive aber das Relay schaltet.

Vermutlich Unsinn!

Schau bitte mal was pinMode() erwartet!

Syntax

pinMode(pin, mode)

Parameters

pin: the Arduino pin number to set the mode of.
mode: INPUT, OUTPUT, or INPUT_PULLUP. See the Digital Pins page for a more complete description of the functionality.

HIGH sehe ich da nicht.

HIGH ist gleichbedeutend 1
LOW ist gleichbedeutend 0

INPUT ist gleichbedeutend 0
OUTPUT ist gleichbedeutend 1
INPUT_PULLUP ist gleichbedeutend 2

pinMode(pin, LOW);

ist das gleiche wie

pinMode(pin, INPUT);

und

pinMode(pin, HIGH);

ist das gleiche wie

pinMode(pin, OUTPUT);

Ich hatte mich da im program eigendlich vertippt, aber der befehl pinMode(pin, HIGH); schaltet das Relay an. digitalWrite(pin, HIGH); macht das Relay wieder aus.

ok danke:) jetzt weiß ich was ich da gemacht habe

Das ist wohl so...
Aber danach kannst du das Relais mit pinMode(pin, HIGH) nicht wieder einschalten.
Was auch logisch ist.

Das davor stehende

pinMode(pin, LOW);

Macht den Pin als Input. dadurch geht das Relay aus. Der Zustand, während der Pin aber als Output definiert ist, also ob HIGH oder LOW, bleibt aber im Register geschrieben. Sobald man den Pin wieder als Output definiert, liefert er wieder das, was im Register als Output steht. Dadurch schaltet das folgende

pinMode(pin, HIGH);

das Relay wieder an.

Mein Tipp, um ein Relaisklappern bei Reset zu verhindern:

digitalWrite(pin, HIGH); //Relay aus
pinMode(pin, OUTPUT);

Das ist ja mal eine klare Ansage!

Das vorherige kommt mir so vor als wie, wahlweise:

  1. Warum geht das Ei kaputt, wenn ich da mit dem Hammer drauf haue?
  2. Warum bleibt das Ei heile, wenn ich mit dem Hammer daneben haue?
  3. Warum geht das Ei kaputt, wenn ich mit dem Hammer daneben haue?

Ok, vielen dank für die schnelle Hilfe:)

Grundsetzliches:
C bzw C++ hat keine Befehle sondern Funktionen.
Dabei sind Funktionen von C/C++, solche von Bibliotheken von C/C++, Funktionen die arduinospezifisch sind und Funktionen die Du in einem Sketch oder einer Bibliothek definierst gleich.
Es existieren noch Kontrollstrukturen wie if ecc.

Schlüsselworte wie OUTPUT, INPUT, INPUT_PULLDOWN ecc sind irgendwo in Arduino mittels #define als Zahlen definiert.

Grüße Uwe

Grüße Uwe

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.