Hallsensoren sollen Relais steuern

Hallo Freunde,
nach längerer Pause ich wieder. Ich möchte mit zwei Hallsensoren Relais steuern, kurzer Impuls. Das funktioniert auch auf Status HIGH. Ich wollte das ganze Prinzip umstellen auf Status LOW. Hier der Schaltplan


Hier der Sketch mit HIGH-Abfrage

/*
  Weichenschaltung 1 Weiche mit 2 Hallsensoren
  mit Gleichspannung 9V
  das geht, weil nur für die Dauer des Querens des Magneten der Kontakt schließt >= kurzer Impuls
  von Schorsch für ZFI
14.05.21
*/

// Definition der PINs für Hall und Relais
const int hallSensorPin = 2;
const int hallSensorPin2 = 3;
#define PIN_RELAY1 11
#define PIN_RELAY2 12
int hallStatus = 0;   // Ausgangswert für die Hallsensoren
int hallStatus2 = 0; 

void setup()
{
  pinMode(PIN_RELAY1, OUTPUT);  //Definition der Pins als Aus-/eingabe
  pinMode(PIN_RELAY2, OUTPUT);
  pinMode(hallSensorPin, INPUT);
  pinMode(hallSensorPin2, INPUT);
}
//=============================
void loop(){
    hallStatus=digitalRead(hallSensorPin); //Status der Halls lesen
    hallStatus2=digitalRead(hallSensorPin2);
  if (hallStatus ==HIGH) {  //wenn 1. Hallsensor aktiviert
digitalWrite(PIN_RELAY1, HIGH); // Relaiskontakt 1 schließen
  } else{                       // sonst öffnen
digitalWrite(PIN_RELAY1, LOW);
  }
if (hallStatus2 ==HIGH) { //Wenn 2. Hallsensor aktiv, schließen Kontakt 2
digitalWrite(PIN_RELAY2, HIGH);
  } else{
digitalWrite(PIN_RELAY2, LOW);
  }  
    
  }
  

Hier mit LOW. Das Problem dabei: nach dem Start sind beide Relais an, erst das Auslösen der Halls schaltet diese ab, danach funktioniert es, wie es soll: Hall mit Magnet auslösen, kurzes An- und wieder Ausschalten der Relais. Wo ist mein Denkfehler???

/*
  Weichenschaltung 2 Weichen mit 2 Hallsensoren
  mit Gleichspannung 9V
  das geht, weil nur für die Dauer des Querens des Magneten der Kontakt schließt >= kurzer Impuls
  von Schorsch für ZFI
  14.05.21
*/

// Definition der PINs für Hall und Relais
const int hallSensorPin = 2;
const int hallSensorPin2 = 3;
#define PIN_RELAY1 11
#define PIN_RELAY2 12
int hallStatus = 0;   // Ausgangswert für die Hallsensoren
int hallStatus2 = 0;

void setup()
{
  pinMode(PIN_RELAY1, OUTPUT);  //Definition der Pins als Aus-/eingabe
  pinMode(PIN_RELAY2, OUTPUT);
  pinMode(hallSensorPin, INPUT);
  pinMode(hallSensorPin2, INPUT);
}
//=============================
void loop() {
  hallStatus = digitalRead(hallSensorPin); //Status der Halls lesen
  hallStatus2 = digitalRead(hallSensorPin2);
  if (hallStatus == LOW) { //wenn 1. Hallsensor deaktiviert
    digitalWrite(PIN_RELAY1, LOW); // Relaiskontakt 1 öffnen
    digitalWrite(PIN_RELAY1, HIGH); // sonst schließen
  }
  if (hallStatus2 == LOW) { //Wenn 2. Hallsensor deaktiv
    digitalWrite(PIN_RELAY2, LOW); //Relaiskontakt 2 öffnen
    digitalWrite(PIN_RELAY2, HIGH);
  }
}

Danke

:warning:
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
mfg ein Moderator.

Danke

In den if-Abfragen fehlt das "else".

void setup()
{
  digitalWrite(PIN_RELAY1, LOW);
  digitalWrite(PIN_RELAY2, LOW);
  pinMode(PIN_RELAY1, OUTPUT);  //Definition der Pins als Aus-/eingabe
  pinMode(PIN_RELAY2, OUTPUT);
  pinMode(hallSensorPin, INPUT);
  pinMode(hallSensorPin2, INPUT);
}
//=============================

Danke, so ein blöder Fehler, im HIGH Script hatte ich es noch richtig, grrrrrh

Hallo Finn,
das ändert nichts, trotzdem Danke

Geiz ist geil (Wenigstens manchmal beim Programmieren bin ich dieser Meinung):

digitalWrite(PIN_RELAY1, digitalRead(hallSensorPin)));

bzw bei LOW

digitalWrite(PIN_RELAY1, !digitalRead(hallSensorPin)));

Bei solchen sachen braucht es kein if.
Grüße Uwe

Das ist kein Schaltplan
das ist ein igittsy bitsy fritzy Bild.
zuviel Info weil nicht auf das wesentliche beschränkt
Die zu kleine Beschriftung auf den Bildern macht extra Kennzeichnung
erforderlich.

Einfach gleich von Hand etwas zeichnen
vgs

Noch fehlt allerdings eine Info von dir, ob es jetzt funktioniert.
Zum Schaltbild noch die ergänzende Angabe, mit den div. Kurzschlüssen bzw. falsch gelegten Leitungen / Bauteilen kann es nicht funktionieren.

Ganz oben steht "gelöst". Wo sind Kurzschlüsse? Bild zu klein? Man kann zoomen, wenn man kann. Und die Schaltung funktioniert, trotz der Kurzschlüsse. Komisch,oder? Aber danke für deine Hilfe.

Ok, hatte das nur als beseitigter Fehler verstanden, nicht dass es jetzt funktioniert.
Deinen tatsächlichen Aufbau kenne ich nicht, aber in dem Schaltbild sind die Fehler:

Und hier (links) sind die beiden Widerstände kurzgeschlossen.
image

Und das (Vin) geht ins leere.
image

Sind die grünen Leitungen nicht einfach die Anschlüsse für Vs am Hallsensor und die Widerstände zweigen ab, als Pull up für die Datenleitung? Dann passt es doch.

Das am Vin ist wahrscheinlich ein versehentliches Überbleibsel vom "Malen" ... würde aber auch nichts anrichten. 5V ist ja angeschlossen.

Diese Fritzing-Bildausschnitte sind ja zum :face_vomiting:

Da kann man noch nicht einmal erkennen wie rum die internen Verbindungen im Breadboard laufen. Da muss man dann schon ein anderes fritzing-Bild dazunehmen.

Das ist doch Mist

Ok, ich kann nicht die Gedanken des TO lesen, daher weiß ich nicht was übrig ist und was richtig ist.
Bei den Widerständen sind beide linken Anschlüsse (gelbe Leitungen) miteinander verbunden. Auch ein übrigbleibsel ?

kurzer

OK .. du hast ohne Frage recht, das ist wirklich ein "Problem" bei diesen Fritzing Bildchen.
Ich hatte das einfach so interpretiert, dass die Widerstände dort an der Leitung angeschlossen sind aber nicht im Breadboard stecken, weil, das wär ja doof :wink: . Aber ich kann Dir da nicht widersprechen, man kann es nicht wissen.

Hallo Stefan,
ich finde es auch zum :face_vomiting:, den qualifizierten Kommentar. Kritik ist gut und erwünscht, aber nur wenn sie auch etwas bringt. Es gibt hier viele Mitglieder, die qualifiziert kritisieren und aber auch helfen. Nobody is perfect, du etwa? Schade, das macht das Forum nicht beliebt, insbesondere für Anfänger. Aber das soll wohl so sein??? Ich hoffe auch weiterhin auf Hilfe und die entsprechende Kritik.
Bis denne
Schorsch

Sehr gut, dass du auf deine "nicht" Fehler eingehst, dafür andere kritisierst.

Und danke für deine überhebliche Antwort, die kannst du dir zukünftig auch sparen, wenn jemand dich auf Fehler aufmerksam macht.

Wir können nur auf die Infos die Du uns gibst reagieren. Das Verdrahtungs-Bild wirft Fragen auf, sodaß man sich fragen muß ob das Bild der Schaltung entspricht und somit die Schaltung falsch ist oder nur das Bild nicht der Schaltung entspricht und somit das Bild falsch ist , die Schaltung aber unter Umständen richtig sein könnte. Das erweckt den Eindruck eines schlanpig gezeichneten Verdrehtungsbild. (Was keine konstruktive Kritik ist, oder doch daß Du besser beim Zeichnen aufpassen solltest??);
Grüße Uwe

Also ich versuche mal wieder Ruhe reinzubringen. Ich habe bisher hier nur Gutes und Hilfreiches erfahren. Fehler werden gemacht, ich bin da weit vorn auf der Liste. Ich habe das Fritzing nochmal etwas überarbeitet.

"Sind die grünen Leitungen nicht einfach die Anschlüsse für Vs am Hallsensor und die Widerstände zweigen ab, als Pull up für die Datenleitung? Dann passt es doch."

"Das am Vin ist wahrscheinlich ein versehentliches Überbleibsel vom "Malen" ... würde aber auch nichts anrichten. 5V ist ja angeschlossen." Genau. Und ich bitte um Entschuldigung für evt. falsch verstandene Überheblichkeit. Keinesfalls so gewollt.
Und um es abzurunden, das Ganze wird noch eingebunden in einen Sketch mit Motorsteuerung. Da bin ich noch dran. Ich würde es bei Interesse gern vorstellen.