Skocz do zawartości

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


Pomocna odpowiedź

Napisano (edytowany)

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
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?

(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

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...