Hallo zusammen,
zunächst einmal möchte ich dem Mitglied combie für seinen Vorschlag danken, einen Sketch „blink without delay“ schön kurz zu fassen.
Vorstellen möchte ich hier eine Intervallscheibenwischersteuerung mit 3 Stufen auf Basis eines Arduino Uno. Das Projekt ist nicht sehr spektakulär, weshalb ich es nicht im Bereich „Zeigt her eure geilen Projekte“ vorstelle.
Auf dieser Seite gibt es Bilder und eine technische Erklärung:
https://saporoshez-968.de/2023technik/intervallsapo.html
Warnung:
Selbstgebaute Intervallscheibenwischer, Warnblinkgeber, Lichtmaschinenregler und so weiter können zu einem Verlust der allgemeinen Betriebserlaubnis und zum Verlust der Versicherung führen, da hier möglicherweise gemäß StVZO §19 (2) Satz 2 eine Gefährdung von Verkehrsteilnehmern zu erwarten ist. Genaues können dazu nur Juristen und Gutachter mitteilen, ich selbst habe keine Ahnung. § 19 StVZO - Einzelnorm
Und hier ist der Sketch:
//3stufen_intervallscheibenwischer_im_sapo
//Fuer Arduino UNO Stand 23.12.2022
//Den Code zum Blinken hat der Nutzer combie vorgestellt, vielen Dank
const unsigned long onzeit = 1000; // ms Einschaltzeit Schalterposition 2, 3 und 4
const unsigned long offzeit1 = 4000; // ms kurze Ausschaltzeit Schalterposition 2
const unsigned long offzeit2 = 6000; // ms mittlere Ausschaltzeit Schalterposition 3
const unsigned long offzeit3 = 8000; // ms lange Ausschaltzeit Schalterposition 4
const int relais1 = 2; //Signal zum Ansteuern Relais 1 am Digitalpin 2 Kabel grüngelb
const int relais2 = 3; //Signal zum Ansteuern Relais 2 am Digitalpin 3 Kabel hellblau
int schapo0 = HIGH; //Variable für Schalterposition 0 am Digitalpin 4 Kabel weiß
int schapo1 = HIGH; //Variable für Schalterposition 1 am Digitalpin 5 Kabel orange
int schapo2 = HIGH; //Variable für Schalterposition 2 am Digitalpin 6 Kabel lila
int schapo3 = HIGH; //Variable für Schalterposition 3 am Digitalpin 7 Kabel gelb
int schapo4 = HIGH; //Variable für Schalterposition 4 am Digitalpin 8 Kabel grau
int schapo5 = HIGH; //Variable für Schalterposition 5 am Digitalpin 9 Kabel grün
void setup()
{
pinMode(relais1, OUTPUT);
pinMode(relais2, OUTPUT);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
digitalWrite(relais1, HIGH); // beim Einschalten der Autobatterie erst einmal alles ausschalten
digitalWrite(relais2, HIGH); // beim Einschalten der Autobatterie erst einmal alles ausschalten
int schapo0 = HIGH; //Variable für Schalterposition 0 am Digitalpin 4 Kabel weiß
int schapo1 = HIGH; //Variable für Schalterposition 1 am Digitalpin 5 Kabel orange
int schapo2 = HIGH; //Variable für Schalterposition 2 am Digitalpin 6 Kabel lila
int schapo3 = HIGH; //Variable für Schalterposition 3 am Digitalpin 7 Kabel gelb
int schapo4 = HIGH; //Variable für Schalterposition 4 am Digitalpin 8 Kabel grau
int schapo5 = HIGH; //Variable für Schalterposition 5 am Digitalpin 9 Kabel grün
}
void loop()
{
schapo0 = digitalRead(4);
schapo1 = digitalRead(5);
schapo2 = digitalRead(6);
schapo3 = digitalRead(7);
schapo4 = digitalRead(8);
schapo5 = digitalRead(9);
if (schapo0 == LOW)
{
digitalWrite(relais1, LOW);
digitalWrite(relais2, LOW);
}
if (schapo1 == LOW)
{
digitalWrite(relais1, HIGH);
digitalWrite(relais2, HIGH);
}
if (schapo2 == LOW)
{
digitalWrite(relais1, (millis()%(onzeit+offzeit1))>offzeit1); //Vom Nutzer combie vorgestellt
digitalWrite(relais2, (millis()%(onzeit+offzeit1))>offzeit1);
}
if (schapo3 == LOW)
{
digitalWrite(relais1, (millis()%(onzeit+offzeit2))>offzeit2);
digitalWrite(relais2, (millis()%(onzeit+offzeit2))>offzeit2);
}
if (schapo4 == LOW)
{
digitalWrite(relais1, (millis()%(onzeit+offzeit3))>offzeit3);
digitalWrite(relais2, (millis()%(onzeit+offzeit3))>offzeit3);
}
if (schapo5 == LOW)
{
digitalWrite(relais1, HIGH);
digitalWrite(relais2, LOW);
}
delay(30);}