Hallo,
könnte mir jemand bei diesem Code behilflich sein.
Ich hätte gerne ein sich Aufbauendes Lauflicht das dann ca 1sek steht dann aus geht und wieder von vorne beginnt.
Und ausgelöst durch ein Knopfdruck.
Habe mir das was aus anderen Zusammengebastelt aber will nicht ganz so.
Muß auch nicht mit FastLED sein, Neopixel oder Adafruit.. geht auch
PS: bin kein Programmierer, nur learning by doing.
Danke
#include <FastLED.h>
#define NUM_LEDS 46
#define DATA_PIN 2
int buttonPin = 4; // the number of the pushbutton pin
CRGB leds[NUM_LEDS];
void setup() {
LEDS.addLeds<WS2812,DATA_PIN,GRB>(leds,NUM_LEDS);
LEDS.setBrightness(100);
pinMode(buttonPin, INPUT);
}
void fadeall() { for(int i = 0; i < NUM_LEDS; i++) { leds[i].nscale8(250); } }
void loop() {
int buttonState = digitalRead(buttonPin);
static uint8_t hue = 0;
if(buttonState == HIGH)
for(int i = 0; i < NUM_LEDS; i++)
{
leds[i] = CRGB(255, 102, 0);
FastLED.show();
fadeall();
delay(10);
}
for(int i = 0; i < NUM_LEDS; i++)
{
leds[i] = CRGB(0, 0, 0);
FastLED.show();
fadeall();
delay(10);
}
if(buttonState == LOW)
{
for(int i = 0; i < NUM_LEDS; i++)
leds[i] = CRGB(0, 0, 0);
FastLED.show();
}
}
das geht so nicht. D2 ist der DatenPin für die LED-Leiste. D4 wäre dein Eingang für den Button. #define DATA_PIN 2
int buttonPin = 4; // the number of the pushbutton pin
Wenn du dir da unsicher bist, schau im Code, was mit den Pins gemacht wird.
pinMode(buttonPin, INPUT);
Bevor du was ausprobierst, gehe das Sketch/die Befehle mal durch ob du alles verstanden hast. Eventuell musst du auch mal was nachlesen (dazulernen )
Schau mal im Code. Da ist ein Kommentar "// der Reihe nach ausmachen...". Wenn du die nachfolgende Schleife einkommentiert (aufrufst), werden die LEDs der Reihe nach, mit 10 ms Verzögerung, ausgemacht.
(Der auskommentierte Aufruf von fade() mach hier keinen Sinn. Habe ihn drin gelassen weil er in deinem Code schon drin war).
Wenn Du das machst ist die Schleife nach dem Kommentar "// ... oder ausblenden" natürlich sinnlos, da die LEDs ja schon aus sind. Also kannst du dafür diese Schleife auskommentieren.
Mach dir mit Serial.begin(9600) die Schnittstelle auf und füge einige Ausgaben in den Ablauf ein.
z.B Serial.println("Taster betätigt");
Dann kannst du im Terminal sehen was dein Sketch gerade macht, bzw. wo es hängt.
Hab das Ganze übrigens mit dem ESP32 getestet und die PROG-Taste benutzt (die ich negieren musste). Aber das spielt keine Rolle. Das sollte schon so laufen.
Edit: Du solltest nicht unter Spannung umverdrahten! Hast du einen Widerstand ( 300 bis 500 Ohm) in der Datenleitung deines LED-Streifens?
Da Du damit dann nicht mehr auf die Straße darfst (Eingriff in die Beleuchtungsanlage), blinkt die Vespa halt auf dem Hof - auch gut.
Ganz nebenbei muß der Balken binnen 200ms komplett gefüllt sein, darf aber nur am Stück aus gehen - auch wissen die Sheriffs, welches Vespa-Modell einen solchen Blinker 'von Haus aus' hat - Die kommen dann 'Mal Gucken'.
Wartezeit zwischen den einzelnen LEDs <=200ms/(Anzahl_LEDs-1)
Dann nur noch prüfen, ob der Knopf gedrückt ist, wenn ja, mit dem Aufbau beginnen, wenn alle An sind, Wartezeit, dann Alles aus, erneute Wartezeit.
Dann wieder Vorne anfangen.
Vll. noch was einbauen, daß man Links und Rechts blinken kann - kann elektrisch der gleiche Stripe sein, Du musst dann nur andere LEDs ansprechen.
Auch wirst Du wohl vorne und hinten einen Stripe vorsehen.
Ja, das mit StVO ist mir bekannt. Diese wird in Kroatien auf einer Insel gefahren. Da geht das in Ordnung
Habe das jetzt mal soweit am laufen. Auf Knopfdruck tut es soweit.
Grundgerüst steht
Jetzt muss ich es nur noch so Umsetzen wie du es geschrieben hast.
#include <FastLED.h>
#define NUM_LEDS 46
#define DATA_PIN 2
int buttonPin = 4; // the number of the pushbutton pin
CRGB leds[NUM_LEDS];
void setup() {
LEDS.addLeds<WS2812,DATA_PIN,GRB>(leds,NUM_LEDS);
LEDS.setBrightness(100);
pinMode(buttonPin, INPUT_PULLUP);
}
void fadeall() {
for(int i = 0; i < NUM_LEDS; i++) {
leds[i].nscale8(250);
}
}
void loop() {
int buttonState = digitalRead(buttonPin);
// static uint8_t hue = 0; // <-- does not seem to be used anywhere
if(buttonState == LOW) { // <-- missing "{" here
for(int i = 0; i < NUM_LEDS; i++)
{
leds[i] = CRGB(255, 102, 0);
FastLED.show();
fadeall();
delay(10);
}
for(int i = 0; i < NUM_LEDS; i++)
{
leds[i] = CRGB(0, 0, 0);
FastLED.show();
fadeall();
delay(10);
}
} // <-- missing "{" here
else // <-- you can use "else" here (since a button is either LOW or HIGH ;-)
if(buttonState == HIGH)
{
for(int i = 0; i < NUM_LEDS; i++) { // <-- missing "{" here
leds[i] = CRGB(0, 0, 0);
} // <-- missing "{" here
FastLED.show();
}
}
Gibts denn irgendwo eine Seite wo steht was das bedeutet oder macht?
int i = 0; i < NUM_LEDS; i++ <-- was ist den das für eine Programmiersprache?
gehört das zu FastLED oder Arduino
Bei 46 LEDs brauchst Du 460ms (ok, 450) - wirkt Das nicht schnarch lahm?
Kann mich Da auch irren - mittlerweile fährt ja schon jeder Golf mit so Blinkern rum - da freut man sich fast schon, wenn Mal Einer 'normal' blinkt (ok: wenn 'se Mal blinken ...).
Schön, daß Du bereits Erfolge erzielst
MfG
PS: Aber das Mopped darf Dort schon aus eigener Kraft ... also nicht an einem Esel angebunden
PS: Das nennt sich wohl C++.
Als Erstes definierst Du eine neue Variable - hier 'i' vom Typ int (-32768...32767).
Dahinter steht die Bedingung der Schleife - wenn 'i' kleiner als NUM_LEDS ist - wenn Das nicht gegeben ist, ist die Schleife eh vorbei!
Als Drittes, was dann (außer dem Abarbeiten der Schleife) passieren soll - hier wird i um 1 erhöht.
Man kann davon auch 'was' weglassen - sogar Alles, bis auf die zwei ; - dann hat man eine Endlos-Schleife - Das sind aber Spezialitäten, Die Dir geschlagene C++'er eher näher bringen sollten.
Ich Danke schon mal für die vielen TIPs
Werde mich ein wenig einlesen.
@postmaster-ino
Die Esel Zeiten sind schon seit 40-50 Jahren vorbei, Leider. Mann wünscht sich doch immer öfter diesen Ruhigen, Stresslosen und unhektischen Zeiten zurück.
Nur so by the way, egal auf welcher Insel, Wüste, Dschungel oder Berge du in Kroatien bist. Voller LTE Empfang.
Meine Eltern haben in der Großstadt Stuttgart teilweise Funklöcher in der Stadt. "Kopfschüttel"
Während DE über Maut oder Elektronisches Parken per Handy Nachdenkt und Testet läuft das schon seit den 90er Erfolgreich in Cro
Naja - für so was halten wir uns halt die CDU - Das schafft sonst auch kein halbwegs intelligentes Volk auf dem Planeten ...
Davon abgesehen ... ich wüsste gar nicht, ob mein Handy/mein Vertrag überhaupt was mit LTE anfangen könnte
Und wenn, wäre mir Das wohl auch nicht bewusst.
Ruhige Zeiten ... zumindest die Vor-Handy-Eppoche wäre teilweise wieder ganz angenehm