ВОЛЬТ

@channel_volt_5d
Фото Джойстик-диммер: управляем яркостью пальцем 🕹️ Двигаете джойстик вверх, и светодиод разгорается. Вниз, и он темнеет. Нажали на джойстик, и лампа включается или выключается. На экране видно проценты и полоску яркости, как в настоящем приборе. Джойстик подаёт напряжение на Arduino, а плата меняет яркость через транзистор. Он работает как усилитель: слабый сигнал с платы управляет светодиодом. Что понадобится: Arduino Uno транзистор NPN светодиод резисторы 1 кОм, 330 Ом, 10 кОм джойстик экран LCD 1602 с модулем I2C Подключение: D9 → резистор 1 кОм → база (Б) 5V → резистор 330 Ом → светодиод (длинной ножкой к резистору) → коллектор (К) эмиттер (Э) → GND резистор 10 кОм: между базой и GND джойстик: VRy → A1, SW → D2, +5V и GND к плате экран: SDA → A4, SCL → A5, VCC → 5V, GND → GND Код (нужна библиотека LiquidCrystal_I2C): cpp #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // если экран пустой, попробуйте 0x3F const int JOY_Y = A1; // ось джойстика (яркость) const int JOY_SW = 2; // кнопка джойстика const int LAMP = 9; // база транзистора через 1 кОм int level = 0; // 0..255 bool lampOn = true; bool lastBtn = HIGH; void setup() { pinMode(LAMP, OUTPUT); pinMode(JOY_SW, INPUT_PULLUP); lcd.init(); lcd.backlight(); } void loop() { int y = analogRead(JOY_Y); // 0..1023, центр около 512 int dir = 0; if (y > 700) dir = 1; // вверх: ярче if (y < 320) dir = -1; // вниз: темнее level = constrain(level + dir * 3, 0, 255); bool btn = digitalRead(JOY_SW); if (lastBtn == HIGH && btn == LOW) { // нажатие lampOn = !lampOn; delay(30); } lastBtn = btn; analogWrite(LAMP, lampOn ? level : 0); int percent = map(level, 0, 255, 0, 100); int blocks = map(level, 0, 255, 0, 16); lcd.setCursor(0, 0); lcd.print(lampOn ? "Svet: " : "Vykl: "); lcd.print(percent); lcd.print("% "); lcd.setCursor(0, 1); for (int i = 0; i < 16; i++) lcd.print(i < blocks ? (char)255 : ' '); delay(20); } Что можно менять: число 3 в строке level + dir * 3: скорость разгорания числа 700 и 320: чувствительность джойстика Что проверить: отклоняете джойстик вверх, яркость растёт, на экране бегут проценты и заполняется полоска. Если не работает: экран пустой: поменяйте в коде адрес 0x27 на 0x3F или покрутите контраст на модуле светодиод тусклый: поменяйте местами коллектор и эмиттер яркость «ползёт» сама: проверьте, что джойстик в центре, при необходимости поменяйте числа 700 и 320
Если у вас установлено приложение,
вы можете сразу перейти в канал