Skocz do zawartości

Biblioteka "FastLED" do obsługi programowalnych pasków LED(RGB) dla "Arduino UNO R4 WiFI"


FlyingDutch

Pomocna odpowiedź

Cześć,

ostatnio sporo bawię się płytkami "Arduino UNO R4 WiFI" i "Arduino UNO R4 Minima", oraz "Arduino Cloud". W celu testowania chcę zbudować prostą stację pogodową z możliwośćią podglądu parametrów ze smartfona. Stacja będzie korzystać z czujników wilgotności i temperatury DHT22 (to już działa) i ciśnienia BMP280. Lokalnie kontroler "Arduino UNO R4 WiFi" ma podłączony tani pasek LED RGB (40 LED) z Aliexpress do wizualizacji temperatury, wilgotności, cisnienia i predykcji pogody. Każdej z tych danych jest pryporządkowana część paska LED ze zmiennymi kolorami. W tym celu potrzebowałem biblioteki do obsługi programowalnych pasów LED działających z "Arduino UNO R4 WiFI". Okaząło się, że najpopularniesza biblioteka Adafruit "NeoPixel" przeznaczona do tego celu nie działa z architekturą procesora Renesans R4 (z Arduino UNO R4). Znalazłem inna bardzo fajną i bardziej zaawansowaną, lecz nadal prostą w obsłudze bibliotekę o nazwie "FastLED", która bez żadnych zmian działa z płytkami "Arduino UNO R4 xx".

Tutaj link do strony Github tej biblioteki: https://github.com/FastLED/FastLED/tree/master . Bibliotekę instalujemy w "ArduinoIDE" w standartdowy sposób (np. dodając rozpakowany folder zip z kodem biblioteki do folderu "libraries" naszego Arduino) - poniżej archiwum z kodem biblioteki:

FastLED-master.zip

A tutaj link do dokumentacji do tej biblioteki (WiKI): https://github.com/FastLED/FastLED/wiki/Basic-usage

Tutaj kod szkicu ArduinoIDE:

/// @file    RGBSetDemo.ino
/// @brief   Demonstrates how to create an LED group with CRGBArray
/// @example RGBSetDemo.ino

#include <FastLED.h>
#define NUM_LEDS 40
#define DO_LEDS_PIN 6

CRGBArray<NUM_LEDS> leds;

void setup() { FastLED.addLeds<NEOPIXEL,DO_LEDS_PIN>(leds, NUM_LEDS); }

void loop(){ 
  static uint8_t hue;
  for(int i = 0; i < NUM_LEDS/2; i++) {   
    // fade everything out
    leds.fadeToBlackBy(40);

    // let's set an led value
    leds[i] = CHSV(hue++,255,255);

    // now, let's first 20 leds to the top 20 leds, 
    leds(NUM_LEDS/2,NUM_LEDS-1) = leds(NUM_LEDS/2 - 1 ,0);
    FastLED.delay(33);
  }
}

Te początkowe linie kodu szkicu konfigurują nasz pasek LED:

#include <FastLED.h>
#define NUM_LEDS 40
#define DO_LEDS_PIN 6

CRGBArray<NUM_LEDS> leds;

void setup() { FastLED.addLeds<NEOPIXEL,DO_LEDS_PIN>(leds, NUM_LEDS); }

Pierwsza linia #incude <FastLED.h> dołącza bibliotekę do projektu. NUM_LEDS to liczba ledów w pasku RGB - u mnie 40. DO_LEDS_PIN to numer pinu Arduino sterującego paskiem LDE - u mnie 6. Linia z void setup tworzy nasz pasek LED z odpowiednimi parametrami. W pętli loop są modyfikowane kolory świecenia poszczególnych ldiod LED w pasku.

Pozdrawiam

Edytowano przez FlyingDutch
  • Lubię! 1
Link do komentarza
Share on other sites

5 godzin temu, FlyingDutch napisał:

"Arduino UNO R4 WiFI" i "Arduino UNO R4 Minima", oraz "Arduino Cloud". W celu testowania chcę zbudować prostą stację pogodową z możliwośćią podglądu parametrów ze smartfona. Stacja będzie korzystać z czujników wilgotności i temperatury DHT22 (to już działa) i ciśnienia BMP280.

Napiszesz coś więcej? Jak ma ta stacja wyglądać, jak będą prezentowane wyniki na smartfonie?

5 godzin temu, FlyingDutch napisał:

Stacja będzie korzystać z czujników wilgotności i temperatury DHT22 (to już działa) i ciśnienia BMP280. Lokalnie kontroler "Arduino UNO R4 WiFi" ma podłączony tani pasek LED RGB (40 LED) z Aliexpress do wizualizacji temperatury, wilgotności, cisnienia i predykcji pogody. Każdej z tych danych jest pryporządkowana część paska LED ze zmiennymi kolorami.

Skąd pomysł na takie rozwiązanie? Jak i gdzie pasek będzie zamontowany - wewnątrz pomieszczenia, na zewnątrz? Może jakiś rysunek koncepcyjny?

Link do komentarza
Share on other sites

(edytowany)
17 godzin temu, Sylba napisał:

Napiszesz coś więcej? Jak ma ta stacja wyglądać, jak będą prezentowane wyniki na smartfonie?

Skąd pomysł na takie rozwiązanie? Jak i gdzie pasek będzie zamontowany - wewnątrz pomieszczenia, na zewnątrz? Może jakiś rysunek koncepcyjny?

Cześć,

właśnie przetestowałem (na Arduino UNO R4 WiFI) wszystkie potrzebne moduły:

1) RTC - czas będzie wyświetlany na tej matrycy LED z UNO R4 WiFi

2) czujnik DHT22  - temperatura i wilgotność

3) czujnik BMP280 (wersja SPI) - druga temperatura (do uśrednienia z tą z DHT22) i ciśnienie atmosferyczne

4) Pasek LED RGB - 40 sztuk do wizualizacji i prognozy (pasek będzie naklejony na boku parapetu przy moim biurku i odpowiednimi kolorami bęzie mi sygnalizował stan pogody)

To wszystko z osobna działa bez zarzutu na Arduino UNO R4 WiFi. teraz muszę to połączyć w jeden program (w chmurze) i zaprojektować dashborda do wizualizacji na smartfonie. Jak będzie gotowe i zrobię jakąś obudowe - to napiszę coś tutaj.

Pozdrawiam

Edytowano przez FlyingDutch
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.