Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
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
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
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; }