Spisu treści:

Kontroler taśmy LED Arduino RGB: 4 kroki
Kontroler taśmy LED Arduino RGB: 4 kroki

Wideo: Kontroler taśmy LED Arduino RGB: 4 kroki

Wideo: Kontroler taśmy LED Arduino RGB: 4 kroki
Wideo: Самый удобный RGB контроллер на ATtiny! 2024, Lipiec
Anonim
Kontroler taśm LED Arduino RGB
Kontroler taśm LED Arduino RGB

Często, gdy ludzie chcą sterować swoją taśmą LED RGB za pomocą Arduino, używa się trzech potencjometrów do mieszania kolorów czerwonego, zielonego i niebieskiego. To działa i może być idealnie dopasowane do twoich potrzeb, ale chciałem stworzyć coś bardziej intuicyjnego, coś w rodzaju koła kolorów.

Ten projekt wydaje się być idealną aplikacją dla enkodera obrotowego. To urządzenie, które zamienia ruch swojego wału na wyjście cyfrowe. Gdy wałek jest obracany, enkoder wysyła sygnał (impuls), który może być mierzony przez Arduino. Aby uzyskać więcej informacji na temat enkoderów obrotowych, możesz obejrzeć ten film, który wyjaśnia to bardziej szczegółowo.

W tej instrukcji pokażę, jak zrobić kontroler taśmy LED Arduino RGB za pomocą enkodera obrotowego. Ta instrukcja obejmuje budowę obwodu na płytce stykowej. Możesz jednak wyprodukować własną płytkę drukowaną, aby stworzyć osłonę Arduino!

Krok 1: Części

Części
Części
Części
Części

Do sterownika taśmy LED RGB potrzebne będą następujące materiały:

  • 1x Arduino Nano
  • 3x IRLB8721PBF, każdy N-kanałowy MOSFET o poziomie logicznym będzie działał tak długo, jak jego wartość znamionowa wynosi co najmniej 12 V i prąd pobierany przez pasek LED.
  • 1x enkoder obrotowy
  • 1x zasilacz 12V 2A, prąd jaki ma dostarczyć zasilacz może zależeć od długości zastosowanej taśmy LED.
  • 16x przewody połączeniowe męskie na męskie
  • 1x Płytka do krojenia chleba bez lutowania, każda płytka do krojenia chleba wystarczy, o ile jest wystarczająco duża.

Krok 2: Obwód

Okrążenie
Okrążenie
Okrążenie
Okrążenie

Podłącz Arduino do szyny 12V i GND płytki stykowej. Następnie połącz pozostałe części w następujący sposób:

Enkoder obrotowy

Sworzeń A - D4

Sworzeń B - D3

GND - GND

MOSFET czerwony

Brama - GND

Odpływ - pasek LED czerwony przewód

Źródło - D11

MOSFET GreenGate - GND

Odpływ - pasek LED zielony przewód

Źródło - D9

MOSFET BlueGate - GND

Odpływ - pasek LED niebieski przewód

Źródło - D6

Krok 3: Kod

// piny Arduino PWM

int redPin = 11; int zielonyPin = 6; int niebieskiPin = 9; // piny enkodera Arduino int koderPinA = 3; int enkoderPinB = 4; // Zmienne koloru int colorVal; int redVal; int greenVal; int blueVal; // Zmienne kodera int encoderPos; int koderPinACprąd; int koderPinALast = WYSOKI; // Inny licznik int; void setup(){ pinMode(encoderPinA, INPUT_PULLUP); pinMode(koderPinB, INPUT_PULLUP); } void loop(){ readEncoder(); koder2rgb(licznik); zapis analogowy(redPin, redVal); analogWrite(greenPin, greenVal); zapis analogowy(bluePin, blueVal); } int readEncoder(){ koderPinACurrent = digitalRead(encoderPinA); if ((encoderPinALast == LOW) && (encoderPinACurrent == HIGH)){ if (digitalRead(encoderPinB) == LOW){ encoderPos = encoderPos - 1; } else {PozKoder =PozKoder + 1; } } koderPinALast = koderPinACurrent; licznik = enkoderPos*8; if (licznik 1535){ licznik = 0; } licznik zwrotów; } int encoder2rgb(int counterVal){ // czerwony na żółty if (counterVal <= 255){ colorVal = counterVal; czerwonaWart = 255; greenVal = colorVal; blueVal = 0; } // Żółty do zielonego w przeciwnym razie if (counterVal <= 511){ colorVal = counterVal - 256; redVal = 255 - colorVal; greenVal = 255; blueVal = 0; } // Zielony na cyjan w przeciwnym razie if (counterVal <= 767){ colorVal = counterVal - 512; czerwonaWart = 0; greenVal = 255; blueVal = colorVal; } // Cyan na niebieski w przeciwnym razie if (counterVal <= 1023){ colorVal = counterVal - 768; czerwonaWart = 0; greenVal = 255 - colorVal; blueVal = 255; } // Niebieski na magenta else if (counterVal <= 1279){ colorVal = counterVal - 1024; czerwonaWart = kolorWart; greenVal = 0; blueVal = 255; } // Magenta do czerwonego else{ colorVal = counterVal - 1280; czerwonaWart = 255; greenVal = 0; blueVal = 255 - colorVal; } return redVal, greenVal, blueVal; }

Zalecana: