Kommen wir nun zu einem weiteren Sketch.
Beschreibung:
Mit diesem Sketch könnt Ihr euch eure eigenen dynamischen Blinker bauen, wie man sie ja von Peugeot, Audi & Co. kennt.
Welchen LED Strip Ihr nehmt und wie viel LED's, ist Euch überlassen.
Es müssen allerdings programmierbare LED's sein, keine normalen 5050 LED Strips.
Der Sketch ist für SK9822 vorbereitet, kann aber beliebig für andere LED Strips (z.B. APA102 oder WS2812B) umgeschrieben werden.
Ich habe außerdem eine Funktion geschrieben, die die Verzögerung zwischen den einzelnen Impulsen automatisch berechnet, so dass die Animation nie länger als 200ms benötigt, auch wenn man mehr LED's verwendet.
Diese kann aber auch deaktiviert werden, so dass Ihr eine eigene Verzögerung nutzen könnt.
Wie das geht, steht alles im Sketch.
Das Programm ist Plug&Play Ready und kann so wie es ist übernommen werden.
Es müssen lediglich die verwendeten Pins und die Anzahl der verwendeten LED's eingestellt werden sein.
Warnung: Nicht für den deutschen Straßenverkehr zugelassen! Dieser Sketch dient zur als Spielerei.
Features:
- Automatische Berechnung des Impuls Delay's
- Hell- & Dunkelzeit können eingestellt werden (Dauer für volle Leuchtkraft & Aus-Zeit)
- Lichtfarbe kann eingestellt werden
Benötigte Library's:
- FastLED.h
Benötigtes Material:
- 1x Arduino (mehrere Versionen kompatibel) oder ESP32
- LED Strip (z.B. SK9822)
Schema:
Bilder:
Beispiel Verdrahtung mit einem Arduino Nano:
Arduino Nano Pin | LED Strip | Spannungsversorgung |
---|---|---|
5V | 5V | - |
GND | GND | - |
D2 | Daten Pin (DI) | - |
D3 | Clock Pin (CI) | - |
VIN | - | 6-20V (Optional) |
GND | - | GND (Optional) |
USB Anschluss | - | USB Port |
USB Anschluss | - | USB Port |
/*
Copyright ©2021 by Mittns <http://www.mittns.de>
Program Version: 1.0
Last modified: 2021-07-23
EN
### Dynamic turn signals ###
With this sketch you can create your own dynamic turn signals.
DE
### Dynamische Blinker ###
Mit diesem Sketch kannst Deinen eigenen dynamischen Blinker erstellen.
*/
const float Sketch_Version = 1.0;
const String Sketch_Datum = "2021-07-23";
//##############################################################################
//################################### INFO ###################################
//##############################################################################
// ACHTUNG: In Deutschland sind selbstgebaute LED Lauflichter nicht zugelassen!
// Dieser Sketch dient nur zu Bastelzwecken für beispielsweise
// nicht im Straßenverkehr zugelassenen Fahrzeugen.
//
// In Anlehnung an §54 StVZO bzw. ECE-R 48 & ECE-R 6.
// Die Fahrtrichtungsanzeiger müssen mit einer Frequenz von 1,5 Hz (± 0,5 Hz)
// zwischen hell und dunkel in gleicher Phase blinken
//
// Umgerechnet: 1,5Hz = ~666,66ms
//
// Die volle Leuchtkraft muss nach spätestens 200ms erreicht sein.
// Nach ECE-R 6 soll mindestens 95% der maximalen Helligkeit mehr als 300ms lang leuchten.
//##############################################################################
//############################## Konfiguration ###############################
//##############################################################################
#include <FastLED.h>
#define Anzahl_Leds 10 // Anzahl der verwendeten LED'S einstellen
#define LED_DATEN_PIN 2 // DI Pin am LED Strip auf Pin 2 am Arduino oder ESP
#define LED_CLOCK_PIN 3 // CI Pin am LED Strip auf Pin 3 am Arduino oder ESP
CRGB LED[Anzahl_Leds]; // LED Deklaration
bool Auto_Umrechnung = true; // Delay zwischen einzelner LED's automatisch einstellen
const int Maximum_Zeit = 200; // Volle Leuchtkraft nach 0,2 Sek
const int Delay_Hell = 310; // Minimum 300ms
const int Delay_Dunkel = 156; // 200 + 310 + 156 = 666ms
int Delay_Impuls = 100; // Stellt sich selbst ein
// oder Auto_Umrechnung auf false setzen und eigenen Wert eintragen
const uint8_t R = 255; // Blinker Farbe (R) einstellen
const uint8_t G = 110; // Blinker Farbe (G) einstellen
const uint8_t B = 0; // Blinker Farbe (B) einstellen
//##############################################################################
//################################## Setup ###################################
//##############################################################################
void setup() {
delay(1000); // Sicherheit
FastLED.addLeds<SK9822, LED_DATEN_PIN, LED_CLOCK_PIN, BGR>(LED, Anzahl_Leds); // Setup des LED Strips
Serial.begin(9600); // Serielle Schnittstelle öffnen
Serial.print("Sketch Version: " + String(Sketch_Version));
Serial.println(" (" + Sketch_Datum + ") by Mittns <https://www.mittns.de>");
Serial.println("Delay Konfiguriert auf: " + String(Delay_Impuls) + "ms");
if (Auto_Umrechnung == true) {
Serial.println("Berechne Impuls Delay...");
Auto_Delay_Umrechnung();
} else {
Serial.println("Automatische Berechnung des Impuls Delay's deaktiviert");
}
}
//##############################################################################
//################################## Loop ####################################
//##############################################################################
void loop() {
for (int i = 0; i < Anzahl_Leds; i++) {
LED[i] = CRGB(R, G, B);
FastLED.show();
delay(Delay_Impuls);
}
delay(Delay_Hell);
fill_solid(LED, Anzahl_Leds, CRGB(0, 0, 0));
FastLED.show();
delay(Delay_Dunkel);
}
//////////////////////////////////////////////////////////////////////////////////
//##############################################################################//
//############################## FUNKTIONEN ##################################//
//##############################################################################//
//////////////////////////////////////////////////////////////////////////////////
void Auto_Delay_Umrechnung() {
//Serial.print("Gesamtdauer: ");
int Insgesamt = (Delay_Impuls * Anzahl_Leds);
for (int i = Insgesamt; i > Maximum_Zeit; Delay_Impuls--)
{
Insgesamt = (Delay_Impuls * Anzahl_Leds);
if (Delay_Impuls > 2) {
i = Insgesamt;
} else {
break;
}
}
Serial.println("Neuer Impuls Delay: " + String(Delay_Impuls) + "ms");
}
Alles anzeigen