| Ваш IP: 3.230.119.106 | Online(11) - гости: 7, боты: 4 | Загрузка сервера: 0.47 ::::::::::::

Подсветка для энкодера (Arduino)

При вращении ручки энкодера ky-040 можно сделать добавить RGB подсветку при помощи светодиодного кольца.

RGB (на контроллере WS2812) кольца бывают разного размера с разным кол-вом светодиодов, для подсветки энкодера отлично подойдет светодиодное кольцо с восемью светодиодами.

Скетч разрабатывался для интеграции в проекты Arduino где используются энкодеры, например в электронных регуляторных громкости.

При вращении ручки энкодера загораются и гаснут светодиоды. Скетч отслеживает  установленный энкодером уровень значения  (от 0 до 79 значений), в зависимости от установленного значения светодиоды загораются с различным цветом, от синего и плавно переходящего в красный (при максимальном уровне).

#include <Adafruit_NeoPixel.h> // https://github.com/adafruit/Adafruit_NeoPixel.git
#include <Encoder.h>  // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
  Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, 6, NEO_GRB + NEO_KHZ800);// 8 LED, D6
  Encoder myEnc(9, 8);//CLK, DT
  unsigned long oldPosition  = -999,newPosition;
  int poz,data;
  #define KOL 79 // максимальное значение регулировки
 
void setup(){  
  OCR1A = 5000; TCCR1B |= (1 << WGM12)|(1 << CS10); TIMSK1 |= (1 << OCIE1A);
  strip.begin();Serial.begin(9600);
  pinMode(7,INPUT);
  strip.setBrightness(32);
  poz = data/8;
}
 
void loop(){ 
   if(digitalRead(7)==LOW){
    for(int i=0;i<8;i++){strip.setPixelColor(i, strip.Color(0, 50, 0));}strip.show();delay(300);
    for(int i=0;i<8;i++){strip.setPixelColor(i, strip.Color(0, 0, 0));}strip.show();}
 
   if (newPosition != oldPosition) {oldPosition = newPosition;
    data=data+newPosition;if(data>=0&&data<=KOL){poz=poz+newPosition;}myEnc.write(0);newPosition=0;
    Serial.println(data);}
 
    strip.setPixelColor(poz-1, strip.Color(0, 0, 0));
    strip.setPixelColor(poz, strip.Color(data, 0+data/10, KOL-data));
    strip.setPixelColor(poz+1, strip.Color(0, 0, 0)); 
 
  if(poz>7){poz=0;}if(poz<0){poz=poz+8;}
  if(data<0){data=0;}if(data>KOL){data=KOL;}
    strip.show();
}// LOOP
ISR (TIMER1_COMPA_vect){newPosition = myEnc.read()/4;}

Переменная data содержит уровень регулировки, в зависимости от назначения можно поменять максимальное значение регулировки энкодера.

RGB кольцо на контроллере W2812 питается от напряжения 5 В, выход D6 Arduino подключается ко входу DI светодиодного кольца.

Форум — http://forum.rcl-radio.ru/viewtopic.php?pid=1966#p1966

Комментарии

  • Valerii:

    не работает. постоянно горят пиксели зеленым цветом.
    на вращение энкодера не реагирует. проверил на 3 экземплярах энкодера.
    лента проверена — исправна. в чем ошибка?

    • liman28:

      Горит зеленым — нажата кнопка энкодера. Кнопка энкодера инверсная, нажатие лог. 0
      Проверьте наличие подтягивающего резистора на +5В выходу SW. Если у Вас в энкодере подтяжка выхода SW к GND, то поправьте код:
      if(digitalRead(7)==LOW){
      замените на:
      if(digitalRead(7)==HIGH){

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Устройство для наматывания катушек и трансформаторов на основе швейной машины

    Г.М.Билецкий, г.Черновцы При изготовлении различных устройств часто возникает необходимость изготовления различных намоточных узлов (трансформаторов, дросселей и др.). При отсутствии специальных станков их приходится наматывать вручную. Изготовить катушку из нескольких витков не составляет труда, но изготовление высококачественного трансформатора или высокоиндуктивного дросселя — достаточно долгая и кропотливая работа. Я предлагаю в качестве …Подробнее...
  • Полицейская сирена с использованием NE555

    Описание. Данная схема является имитатором звука полицейской сирены на основе NE55 Таймер IC. Схема использует два таймера NE555 ИС и каждый из них подключена как мультивибратор. Схему может питаться от разных напряжений (от 6 до 15V DC), а с использованием дополнительного усилителя мощности, можно получить довольно громкое звучание. IC1 подключен …Подробнее...
  • Простой УМЗЧ

    Простой УМЗЧ

    Основные технические характеристики усилителя: Номинальное входное напряжение — 0,7В Входное сопротивление — 50 кОм Номинальная выходная мощность на частоте 1000Гц — 70 Вт на нагрузку 4 Ом и 35 Вт 8 Ом Диапазон усиливаемых частот при неравномерности АЧХ не более 1 дБ — 10…30000Гц Коэффициент гармоник при указанном диапазоне 0,1% …Подробнее...
  • Ламповый УЗЧ — 10 Вт

    Ламповый УЗЧ — 10 Вт

    Характеристики: Выходная мощность 10Вт при Rн=8Ом Диапазон воспроизводимых частот 15…18000Гц Кнелин. иск. — 1% Uвх=0,8В Rвх=22кОм Усилитель — 3 каскада — один предварительного усиления на первом триоде Л1, второй — фазоинвертор на втором триоде Л1 и 3 каскад — двухтактный выходной усилитель на Л2 Л3 с трансформаторным выходом. Схема усилителя …Подробнее...
  • ТРИ НАПРЯЖЕНИЯ от одной «кроны»

    Применение в переносной аппаратуре операционных усилителей (ОУ) сразу же ставит задачу — каким обра­зом запитать их двуполярным напряжением +15 В. По­добный вопрос возникает потому, что в справочных ма­териалах параметры большинства ОУ приведены именно для этих питающих напряжений, и у многих радиолюби­телей создается впечатление, что ОУ могут хорошо рабо­тать лишь в …Подробнее...