Hallo
Ich wollte mir mit Hilfe der WS2812B LEDs und dem Arduino einen Kleinen Beleuchteten Shisha Untersetzter Bauen.
zu dem zweg habe ich erstmal mir einen mit WS2812B bestückten LED-Strip bestellt um mit diesen anzufangen mit hilfe der IDE zu programmieren. Da ich ein Anfänger im Bereich Programmieren bin, wollte ich es mit learning by doing probieren.Naja, ein teil der von mir erhoften Funktionen, funktionieren zum glück schon. Jetzt Bäuchte ich Hilfe beim weiterfüren.
Folgendes kann er schon:
zwischen 6 Modies Wechseln (Aus, Weiß, Rot, Grün, Blau, Rainbow, Wanderendes Licht)
Mit zwei Tasten steuerbar.
Folgendes bekomme ich leider nicht hin.
Bei Wanderendes Licht jederzeit schalten. (Funktioniert im moment nur wenn die letzte LED am leuchten ist)
Dynamisches Farbspiel, zB Fire2012, DemoReel100. (mit einfach anheften hat es leider nicht wie gehofft funkioniert:(.
Einen Fade mode der die farben langsam wechselt
//FastLED-Bereich
#include "FastLED.h"
#define NUM_LEDS 61 // Anzahl der leds im Stripe
#define DATA_PIN 5 // Data out
#define BRIGHTNESS 96
#define FRAMES_PER_SECOND 120
CRGB leds[NUM_LEDS];
//Steuerungsbereich
const int Tasterhigh= 13; // Taster für im Modus hochschalten
const int Tasterlow= 8; // Taster für im Modus runterschalten
int lichtmodus = 0;
int TasterLowStatus = LOW;
int TasterHighStatus = LOW;
void setup() {
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
FastLED.setBrightness(BRIGHTNESS);
pinMode (Tasterhigh, INPUT);
pinMode (Tasterlow, INPUT);}
void loop() {
digitalWrite(Tasterhigh, HIGH);
digitalWrite(Tasterlow, HIGH);
TasterLowStatus = digitalRead(Tasterlow);
TasterHighStatus = digitalRead(Tasterhigh);
if (TasterLowStatus == LOW)
{lichtmodus--;
delay(300);}
if (TasterHighStatus == LOW)
{lichtmodus++;
delay(300);}
if (lichtmodus == 0) //AUS
{ fill_solid( &(leds[0]), 61 , CRGB( 0,0 , 0) );
FastLED.show();}
else if (lichtmodus == 1) //Weiß
{fill_solid( &(leds[0]), 61 , CRGB( 255, 255, 255) );
FastLED.show();}
else if (lichtmodus == 2) //Rot
{fill_solid( &(leds[0]), 61 , CRGB( 255, 0, 0) );
FastLED.show();}
else if (lichtmodus == 3) //Grün
{fill_solid( &(leds[0]), 61 /, CRGB( 0, 255, 0) );
FastLED.show();}
else if (lichtmodus == 4) //Blau
{ fill_solid( &(leds[0]), 61 , CRGB( 0, 0, 255) );
FastLED.show();}
else if (lichtmodus == 5) //Rainbow
{fill_rainbow( &(leds[0]), 61 , 255 );
FastLED.show();}
else if (lichtmodus == 6) //Wanderendes Licht
{ for(int dot = 0; dot < NUM_LEDS; dot++) {
leds[dot] = CRGB::White;
FastLED.show();
leds[dot] = CRGB::Black;
delay(30);}
}
else
{
lichtmodus = 0;
}
}
Danke schonmal in vorraus auch für verbesserungsvorschläge