leider habe ich folgendes Problem. Mein Arduino Uno soll über ein Relais eine 230V LED schalten. Das Relais soll durch einen Industrie Tasterelement (Schließer) aktiviert werden. Ich verwende dabei einen Internen Pull Up Widerstand.
Der Arduino zeigt mir im Seriellen Monitor auch das Durchschalten an. (Durch den Pull Up Widerstand hat der Taster die Logik eines Öffners.)
Manche Relais schalten bei LOW, dann mußt Du denen im setup erst ein HIGH geben und dann auf OUTPUT schalten. De Logik in loop mußt Du dann auch drehen.
Das kommt vom Bootloader, der das Booten verzögert.
Macht aber nix, ein pullup/down Widerstand am Eingang des Relais-Treibers sorgt für den gewünschten Signalpegel, bis der Arduino seinen Ausgang aktiviert hat.
Das Invertieren des Relais bringt nichts. Klar es schaltet nicht mehr direkt durch. Nun schaltet es gar nicht mehr...Obwohl der Taster seinen Zustand in LOW Ändert.
Du hast Dir selbst ein Ei gelegt und ich habe es nur weiterverwendet.
Schau Deinen Code an und schau meinen Code an.
Du wirst die entsprechende Stelle finden, die NOCH geändert werden muss.
Weshalb muss im schon Setup der Ausgang durchgeschaltet werden? Das ergibt für mich keinen Sinn. Ich bin eh noch Arduino Neuling.
(Es funktioniert auch nicht.)
Im setup muss der PIN HIGH gezogen werden, weil das Relais auf LOW reagiert.
Wenn Du im setup meine Änderung drin hast und das relais nicht schaltet, hast Du das digitalWrite im loop() nicht angefasst und damit ändert sich der Pinzustand nicht.
Mach den mal und drücke die taste - und las sie wieder los.
schaltet das relais?
was gibt es für eine Ausgabe auf dem serMon, wennd as relais EIN ist und was, wenn das Relais AUS ist?
int taster = 4;
int Relais = 7;
void setup()
{
pinMode(taster, INPUT_PULLUP);
pinMode(Relais, OUTPUT);
digitalWrite(Relais, HIGH);
Serial.begin(9600);
// put your setup code here, to run once:
}
void loop()
{
digitalWrite(Relais, digitalRead(taster) );
Serial.println(digitalRead(Relais));
delay(50);
}