3 Stufen Intervallscheibenwischer im Saporoshez

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);}

Gerne doch!

Wobei du mir sagen könntest, wo du die Modulo Methode bei mir gefunden hast, damit ich das löschen/entfernen/markieren kann.
Das muss mindestens 8 Jahre alt sein.
(schon gefunden)

Hier meine Argumentation, warum Modulo in der Sache falsch ist.

An dieser Stelle gibst du eine Rechtsberatung.
Öffentlich.
Dafür muss man im Zweifel eine Qualifikation nachweisen können. z.B. Jura studiert haben.

Im Schadensfall wird ein Gutachter Stellung beziehen, und sagen, in wie weit dein Umbau verursachend war.
Der Richter wird ein Urteil fällen.
Was die Versicherung und das Straßenverkehrsamt tut, wird ganz sicher an dem Urteil hängen.

Hallo combie,
vielen Dank für deinen Hinweis.
Ich habe jetzt meinen Post versucht so zu ändern, dass er keine Probleme bereitet.

Und nochmal combie:
Mit deinem Hinweis, die Modulo Methode nicht mehr zu verwenden, bringst du mich ins Schwitzen.
Kannst du mir ein Beispiel geben, wie mein Sketch an dieser Stelle besser werden kann?

Es gibt ca. 1/2 Dutzend Threads, alleine von mir, die das Thema auf verschiedenste Art abhandeln.
Zusätzlich viele von anderen Mitstreitern, z.B. die Nachtwächter Erklärung.
Allen gemeinsam ist, dass die Subtraktionsmethode das einzig Wahre ist.

1 Like

OK, Danke, dann werde ich mal die Suchfunktion im Forum bemühen.

Wenn du meinen Kram verwenden möchtest, würde dir hier die TaskMakros empfehlen.
Damit lassen sich zeitabhängige endliche Automaten relativ einfach bauen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.