Zaloguje się
or
Tel +48 698 615 740

Obsługa Pierścienia 24 Diod LED WS2812B 5050 RGB wykorzystując Nadajnik IR i Pilota

05 maja, 2022

W tym artykule przedstawię działanie odbiornika IR który będzie sterował pierścieniem Led za pomocą pilota. Pokażę również efekty jakie można wyświetlić korzystając z pierścienia LED. W artykule będą również zamieszczone wszystkie informacje dotyczące bibliotek oraz specyfikacji modułów.

Spis treści

  • Krótki opis
  • Specyfikacja (Odbiornik IR + pierścień LED)
  • Przykład
  • Pliki do pobrania

Krótki opis

Pierścień LED, który ja wykorzystałem składa się z 24 diod połączonych szeregowo. Mogą one wyświetlać dowolny kolor zdefiniowany w wartościach RGB. Natomiast jeśli chodzi o odbiornik to może on odbierać sygnał z pilota na odległość 1,3m.

Specyfikacja

Pierścień 24 Diod LED WS2812B 5050 RGB

  • Napięcie zasilania: 5 V
  • Pobór prądu: 18 mA dla jednej diody
  • Zastosowane diody: LED RGB WS2812
  • Ilość diod: 24
  • Średnica zewnętrzna okręgu: 66,0 mm

Odbiornika na podczerwień IR cyfrowy 38khz do Arduino

  • Nazwa marki:TZT
  • Pochodzenie:CN (pochodzenie)
  • Typ:REGULATOR NAPIĘCIA
  • Numer/Liczba modelu: Infrared Transmitter module
  • Zastosowanie:do komputera
  • Temperatura pracy:-40-+85
  • Napięcie zasilania:5V
  • Rozpraszanie mocy:new
  • Pakiet:DIY
  • KITIs_customized:Tak

Przykład

Elementy

  • Arduino Uno lub Mega
  • Pierścień led
  • IR
  • 6x kabel stykowy (mes-żeń)

Połączenie

  • Arduino -> odbiornik IR
  • GND – GND
  • 5V – VCC
  • pin9 – DAT
  • Arduino -> pierścień LED
  • 5V – VCC
  • GND – GND
  • pin8 – DI(*jeżeli układ nie będzie się świecił, po wgraniu programu podłącz do DO)

Program

Zaczynamy od załączenia dwóch bibliotek które będziemy wykorzystywać. Pierwsza z nich to IRremote.hpp odpowiadająca za odbiornik oraz druga, czyli AdaFruit_NeoPixel odpowiadająca za kierowanie pierścieniem LED. Po tym definiujemy jeszcze pin 9 pod nazwą RECIVER_PIN jako pin odbiornika. W strip-ie obiekcie klasy AdaFruit_NeoPixel musimy zdefiniować 3 rzeczy pierwsza to nr pin-u DI druga to całkowita ilość LED-ów z jakich będziemy korzystać oraz 3 to model naszego pierścienia.(Tu nie radzę niczego zmieniać chyba że korzystamy z zupełnie innego typu pierścienii.)

#include <Adafruit_NeoPixel.h>
#include <IRremote.hpp>
int RECEIVE_PIN = 9;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, 8, NEO_GRB + NEO_KHZ800);
IRrecv receiver(RECEIVE_PIN);

Następnie zajmijmy się funkcją void setup(). Aktywujemy w niej port szeregowy, pasmo odbiornika oraz pasmo przesyłu danych pierścienia. Dla portu szeregowego ustawiam baundrate na 9600. Dla IRremote(czyli obiektu klasy odbiornika) ustawiamy z do jakiego pin-u jest podłączone wyjście danych odbiornika oraz wartość ENABLE_LED_FEEDBACK która umożliwi odbiór danych wysyłanych przez diodę w pilocie. Ostatnim krokiem w setupie jest ustawienia pinu 8 w tryb wyjściowy oraz w stan wysoki.

void setup() {
  Serial.begin(9600);
  pinMode(8, OUTPUT);
  digitalWrite(8, HIGH);
  IrReceiver.begin(RECEIVE_PIN, ENABLE_LED_FEEDBACK);
  strip.begin();
}

Nie będę poszczególno omawiał jak wygląda przebieg każdej z funkcji wyświetlającej na LED, dlatego zamierzam tylko przedstawić działanie funkcji void loop(). Jeżeli chcesz dowiedzieć się jak wyświetlać ciekaw animacje na pierścieniu LED zachęcam do sprawdzenia strony – LED Strip Effects generator (adrianotiger.github.io).

Funkcja void loop() składa się w zasadzie z jednego if którego warunkiem jest pojawienie się danych na pinie odbiornika. W zależności od tego komunikat w postaci 16 został wysłany zostanie wykonany odpowiedni case funkcji switch. Przyciski na pilocie które wykorzystałem to CH+, CH-, 0, 200+. Po wykonaniu się jednego z warunków switcha wartość danych if zresetuje się i zacznie odbierać na nowo sygnał.

void loop() {
  if(IrReceiver.decode()) {
    IrReceiver.printIRResultShort(&Serial);
       switch(IrReceiver.decodedIRData.command) {
        case 0x45:
          colorWipe(strip.Color(0, 0, 0), 50);
          digitalWrite(8, LOW);
          break;
        case 0x47: 
          digitalWrite(8, HIGH);
          colorWipe(strip.Color(255, 255, 255), 50);
          break;
        case 0x16 :
          theaterChase(strip.Color(0, 255, 0), 50);
          theaterChase(strip.Color(255, 0, 0), 50);
          theaterChase(strip.Color(0, 0, 255), 50);
          colorWipe(strip.Color(0,0,0), 50);
          break;
        case 0xD:
          rainbowCycle(1);
          break;
          }
      IrReceiver.resume();
    }    
}

Pliki do pobrania

Sticky
Możliwość komentowania Obsługa Pierścienia 24 Diod LED WS2812B 5050 RGB wykorzystując Nadajnik IR i Pilota została wyłączona
Dadas Bartosz

Dadas Bartosz

Jest Uczniem Technikum Budowlano-Elektronicznego w Świdnicy na kierunku Technik Informatyk. Na co dzień oprócz projektów z ardunio uczy się programować aplikacje mobile. W przyszłości chcę zostać programistą.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.