digitalRead wechelt von HIGH auf LOW

Hallo zusammen,

ich lese per digitalRead(40) den Pin 40 aus der HIGH ist.

Soweit so gut, doch wenn ich den Pin auf LOW setzte und ich wieder mit digitalRead(40) den Pin auslesen will, wechselt der ständig von HIGH zu LOW. pinMode(40, OUTPUT); ist richtig gesetzt.

An Pin 40 hängt eine Led die aber immer aus ist, obwohl HIGH oderLOW nach verändern des Status.

Ideen?

Grüße speedy

ich lese per digitalRead(40)

pinMode(40, OUTPUT); ist richtig gesetzt.

Entweder Du willst etwas lesen, dann ist es INPUT. Oder etwas auf der LED ausgeben, dann ist es OUTPUT. Wähle einen Pin als Input für das Signal und wähle einen anderen Pin als Output für die LED.

Hallo Realizer,

ähm, das heisst ich kann mit HIlfe von digitalRead() nicht herrausfinden ob Pin 40 HIGH oder LOW ist?

Mein Vorhaben ist, wenn Pin 40 und 41 gleich HIGH dann setzte Pin 42 auf LOW.

Grüße speedy

Na klar kannst Du das mit dem Pin 40 herausfinden. :)

Aber in Deinem Eingangspost schriebst Du ja nichts von Pin 41 und 42 ;)

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);    
}

Du hast sichergestellt, daß der Inputpin auch wirklich Low oder High ist ? Wenn es ein Taster ist, dann benutze die Pullup oder Pulldownmöglichkeiten. Entweder mit internem Pullup oder externem Pulldown oder externem Pullup.

HI,

es gibt nur Output Pins 40,41,42 also keine Inputs, dachte es geht einfach mit digitalRead(), aber Pustekuchen grins.

Grüße speedy

Klar solltest du mit digitalRead auch den Status von Outputs einlesen können. So kann man ja auch mit

digitalWrite(pin,!digitalRead(pin)) einen Ausgang togglen.

Benutzt du ein Mega oder ein Due?

Realizer: Na klar kannst Du das mit dem Pin 40 herausfinden. :)

Aber in Deinem Eingangspost schriebst Du ja nichts von Pin 41 und 42 ;)

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);    
}

Du hast sichergestellt, daß der Inputpin auch wirklich Low oder High ist ? Wenn es ein Taster ist, dann benutze die Pullup oder Pulldownmöglichkeiten. Entweder mit internem Pullup oder externem Pulldown oder externem Pullup.

Danke so funktioniert es perfekt :-)

Grüße Stefan

MGOS: Klar solltest du mit digitalRead auch den Status von Outputs einlesen können. So kann man ja auch mit

digitalWrite(pin,!digitalRead(pin)) einen Ausgang togglen.

Benutzt du ein Mega oder ein Due?

Das Mega 2560, was genau ist togglen?

Gruß Stefan

"Togglen" heißt so viel wie wechseln, d. h. aus "High" wird "Low" und aus "Low" wird "High" (bzw. "true" oder "false")

var = !var;  //war "var" vorher "true", dann ist es jetzt "false" und umgekehrt

Funktioniert folgender Code bei dir und gibt "1 0" aus??

pinMode(40,OUTPUT);

digitalWrite(40,HIGH);
Serial.println(digitalRead(40),DEC);

digitalWrite(40,LOW);
Serial.println(digitalRead(40),DEC);

Hi,

ja das funkt es wird 1 und 0 ausgegeben.

Das komische ist ja das die LED leuchtet obwohl digitalRead(); LOW zurück gibt.

Anschlussfehler der LED? Störungen? ......

Noch jemand Ideen?

Danke schon einmal im vorraus.

Gruß speedy

HI zusammen,

wie es aussieht habe ich den Fehler gefunden, hatte einen Widerstand in der Schaltung falsch.

Jetzt geht wie gewollt :) :) :)

Grüße und schönen Abend speedy