Arduino Polska Forum

Pełna wersja: Sterowanie paskiem LED RGB 144 diody WS2812B
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam

Mam pasek LED RGB o dlugości 1m na którym znajdują się 144 diody ze sterownikami WS2812B. 
Interesuje mnie sterowanie każdą diodą LED z osobna. Zarówno Włącznie/Wyłączenie, dobór koloru, oraz intensywność świecenia. Wykorzystując biblioteki AdaFruit_NeoPixel za pomocą funkcji  pixels.setPixelColor, mogę włączać odpowiednią diodę i ustawiać jej kolor. W jaki sposób mogę rozwiązać problem intensywności światła. 


Z góry dziękuje za odpowiedz 
Pozdrawiam
colorWipe(strip.Color(255, 0, 0), 50); tam jak masz 255 to max a w dół słabiej świeci jak w pwm.
Niestety nie do końca mi działa funkcja colorWipe.
Udało mi się zrobić tak że steruje intensywnością dla całej taśmy. Chciałbym móc ustawiać intensywność dla każdej diody osobno. Ponoć odpowiada za to ostatni parametr w moim kodzie(w tym przypadku wartości 64), lecz nie chce to działać.

Tutaj kod:
Kod:
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
void loop() {
strip.setPixelColor(9, 255, 255, 255, 64);
strip.setPixelColor(11, 255, 255, 255, 64);
strip.setBrightness(127);
strip.show();


Czy jest jakas taka opcja żebym mógł sobie sterować z komputera jaki kolor chce wybrać i jaki poziom intensywności światła tak jak można to robić za pomocą Androida?

Z góry dzięki za pomoc
Nie bardzo chodzi mi o sterowanie za pomocą pilota. Bardziej potrzebuje aplikację, dzięki której za pomocą portu szeregowego, będę mógł sterować paskiem led. Chodzi mi o aplikację gdzie, wpiszę nr konkretnej diody, oraz podam trzy wartości dotyczącej barwy RGB. Wszystko chce żeby było sterowane za pomocą konsoli. Zrealizowałem układ dwóch prostych diod, lecz nie wiem jak wykonać to przy użyciu paska LED.
Tutaj kod :
Kod:
#define zielona 8
#define czerwona 9

String odebraneDane = ""; //Pusty ciąg odebranych danych

void setup() {
 Serial.begin(9600); //Uruchomienie komunikacji
 Serial.println("Podaj kolor diody");
 pinMode(zielona, OUTPUT); //Konfiguracja wyjść
 pinMode(czerwona, OUTPUT);
 
 digitalWrite(zielona, LOW); //Wyłączamy diody
 digitalWrite(czerwona, LOW);
}

void loop() {
 if(Serial.available() > 0) { //Czy Arduino odebrano dane
   //Jeśli tak, to odczytujemy je do znaku końca linii i zapisz w zmiennej odebraneDane
   odebraneDane = Serial.readStringUntil('\n');
   
   if (odebraneDane == "zielona") { //Jeśli odebrano słowo "zielona"
     digitalWrite(zielona, HIGH); //To włączamy diodę zieloną
     Serial.println("zielona is ON");
     delay(2000);
     digitalWrite(zielona, LOW);
   }
   
   if (odebraneDane == "czerwona") { //Jeśli odebrano słowo "czerwona"
     digitalWrite(czerwona, HIGH); //To włączamy diodę czerwoną
     delay(1000);
     digitalWrite(czerwona, LOW);
   }
Z góry dziękuje za pomoc.
Pozdrawiam
Zielona wartosc r wartosc g wartosc b tak mozesz to zrobic ale musisz rozbic potem na dioda i r g b.
Tak ale na samym początku chodzi mi o uruchomienie taśmy LED.
Tak jak po wpisaniu komendy digitalWrite(zielona, HIGH); włącza mi się zielona dioda.
to chce tak samo tylko żeby włączała mi się cała taśma, lub pojedyncza dioda jakakolwiek.