Hallo ein Freund ist dabei einen Monitor lift mittels Arduino und Rolladenmotor zu bauen wie in diesem Video klick.
Ich versuche jetzt die Verkabelung etc. zu bewerkstelligen da so gut wie keine Dokumentation vorhanden ist.
Ich verwende einen Arduino Nano V3 sowie dieses Relais klick also die gleichen Sachen wie im Video.
Das Programm soll in etwas so funktionieren:
Am Anfang gucken in welchen Position sich der Monitor befindet (welcher der beiden Endschalter gedrückt ist) und dann wenn der Schalter betätigt wird einen Relais Ausgang schalten bis der andere Endschalter betätigt wird. Wenn der Schalter wieder betätigt wird soll wieder den anderen Relais Ausgang schalten bis die Endposition erreicht ist.
Leider funktioniert das ganze nicht so wie es soll und macht teilweise extrem komische Dinge manchmal wenn ich mit meinem Finger in die Nähe der Kabel komme schaltet er einfach die Relais etc. (aber kein Kabelbruch oder Wackelkontakt hab ich so noch nie erlebt).
Wenn ich den den Arduino am PC anschließe funktioniert das Programm zumindest teilweise wenn ich allerdings kurz warte passieren wieder komische Dinge und generell kriege ich es nicht wirklich hin Fehler konkret zu reproduzieren oder einzuordnen.
Wenn ich den Arduino nur am Strom anschließe z.B über Steckdose Schalten die Ausgänge für das Relais in einer Endlosschleife die ganze Zeit hin und her also gar nichts funktioniert.
An den Ausgängen des Relais hab ich bisher noch nichts angeschlossen solange es noch nicht läuft.
So hab ich mir die Verkabelung überlegt (Der Fehler muss ja eigentlich irgendwo hier liegen):
Das ist der Programmcode welcher auch im Video verwendet wurde:
//You need to download the JLed library! / JLED Library muss insatlliert sein!
#include <jled.h>
String LiftStatus;
auto ledSchalter = JLed(11).Breathe(4000).Forever().DelayAfter(0);
auto ledSchalterFast = JLed(11).Breathe(1000).Forever().DelayAfter(0);
void setup() {
pinMode(7, INPUT); // Endschalter oben / Limitswitch TOP
pinMode(5, INPUT); // Schalter / Taster / Main Button
pinMode(9, INPUT); // Endschalter unten / Limitswitch Bottom
pinMode(3, OUTPUT); // Lift nach oben / Relais 1 / Relay 1
pinMode(4, OUTPUT); // Lift nach unten / Relais 2 / Relay 2
//An Pin 11 = Schalter LED / Pin 11 = LED of the switch
if (digitalRead(7) == HIGH) {
LiftStatus = "oben";
} else {
LiftStatus = "unten";
}
}
void loop() {
ledSchalter.Update();
{
if (digitalRead(5) == HIGH) {
if (LiftStatus == "unten") {
while (!(digitalRead(7) == HIGH)) {
digitalWrite(3, HIGH);
ledSchalterFast.Update();
}
LiftStatus = "oben";
}
} else {
digitalWrite(3, LOW);
}
if (digitalRead(5) == HIGH) {
if (LiftStatus == "oben") {
while (!(digitalRead(9) == HIGH)) {
digitalWrite(4, HIGH);
ledSchalterFast.Update();
}
LiftStatus = "unten";
}
} else {
digitalWrite(4, LOW);
}
}
}
Ist wahrscheinlich alles etwas schwer verständlich aber vielleich hat ja jemand etwas Ahnung und kann mich vielleicht ein wenig durch die Fehlerbehebung führen.