Liebe Gemeinde, ich bin neu hier und wünsche allen erstmal schöne Weihnachten.
Ich möchte folgendes Projekt realisieren und finde nicht den passenden Einstieg:
Es sollen 8 LED-Leuchten(Deckenlampen) nacheinander in einem zeitlichen Versatz von einer halben Sekunde eingeschalten werden durch einen Schalter oder Taster.
Gleiches soll bei erneutem Tasten/Schalten in umgekehrter Reihenfolge wieder ausschalten.
Also Licht ein: - Lampe 1, 2, 3 usw. ein - Licht aus: Lampe 8, 7, 6 usw. aus.
Zur Verfügung habe ich als Einstieg einen Arduino UNO und ein 8- Kanal-SSR-Relais-Baugruppe mit Low-Level-Input.
Leider konnte ich noch keinen auch nur ansatzweise passenden Sketch finden und ich bin noch extremer Programmieranfänger, der elektrische/elektronische Teil ist kein Problem.
Hat hier jemand eine Idee zur Umsetzung des Programmes oder kennt ein passendes Beispielprojekt?
Würde mich riesig über Antworten freuen.
Wünsche weiterhin frohe Festtage.
Ok, das konnte ich nicht daraus entnehmen.
Was der Sketch betrifft, vermute ich, da musst du selbst etwas programmieren.
Mir ist da nichts passendes bekannt.
Mein Tipp:
Übe mit den in der IDE vorhandenen Beispielen und zeige uns dein Ergebnis mit Infos was geht und was geht nicht. Dann können wir mit weiteren Infos und Tipps helfen.
Die meisten SSR funktionieren nur mit Wechselspannung.
Ich bevorzuge Baulösungen mit Kleinspannung (12V oder 24V) wenn dies eine Alternative zu 230VAC gibt.
Die wenigsten Platinen mit SSR sind wirklich für 230VAC geeignet. Es sind weder Sicherabstände noch Leiterbahnenquerschnitten geeignet um fur 230V AC sicher zu sein.
Welche Relaiskarte hast Du? Einfach link auf Angebot.
Bei 12 oder 24VDC kann man auch MOSFET als Schalter verwenden. Dadurch kann man die LED-Streifen über PWM auch dimmen oder faden.
Platine zB
Da mußt Du aber auf die Polarität achten.
Grüße Uwe
Das ist aber auch erstmal egal. Im Prinzip benötige ich nur folgende Steuerung am Arduino:
ich betätige einen Taster (oder Schalter) , um an einem Eingang des UNO einen Programmstart (Low/High) zu initiieren.
Diese soll nun an den Ausgängen (z.Bsp. 2 bis 9) den Ausgang von High auf Low schalten, der Reihe nach im Abstand von 0,5 Sekunden. Dann bleibt der Zustand erhalten bis am Eingang (Taster) der nächste Befehl Low/High kommt und die Ausgänge 9 bis 2 schalten der Reihe nach wieder von Low auf High. Fertig. Die Relais-BG spielt da erstmal keine Rolle, es könnten ja auch LEDs sein, welche an und wieder ausschalten.
Ich dachte die Umsetzung wäre leichter und gab es vielleicht schon. Ist aber nicht.
Natürlich ist das leicht!
Schalter auswerten (die erste Zustandsmaschine)
Alle Relais(ihre Ansteuerungspins) in ein Array stopfen, und bei Bedarf darüber iterieren (die zweite Zustandsmaschine).
const uint8_t inpputPin {2}; // a switch connected to GND - LOW active
const uint8_t output[] {5, 6, 7, 8}; // output pins
const uint8_t noOfOutput = sizeof(output) / sizeof(output[0]); // let the compiler calculate the size of the array
const uint16_t wait = 500; // wait time between each output activation
void on() {
Serial.println("change to on");
for (size_t i = 0; i < noOfOutput; i++) {
digitalWrite(output[i], HIGH);
Serial.println(output[i]);
delay(wait);
}
}
void off() {
Serial.println("change to off");
for (size_t i = 0; i < noOfOutput; i++) {
digitalWrite(output[noOfOutput - i - 1], LOW);
Serial.println(output[noOfOutput - i - 1]);
delay(wait);
}
}
void setup() {
Serial.begin(115200);
pinMode(inpputPin, INPUT_PULLUP);
for (size_t i = 0; i < noOfOutput; i++) {
pinMode(output[i], OUTPUT);
}
}
void loop() {
static int previousVal = 0; // previous value (from last loop iteration)
int val = digitalRead(inpputPin); // current state of input pin
if (val != previousVal) { // when something has changed
if (val == LOW)
on();
else
off();
}
previousVal = val;
delay(100); // dirty delay
}
//