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

Подсветка для энкодера (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){

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

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

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

  • Простое зарядное уст-во с регулируемым током зарядки

    Простое зарядное уст-во с регулируемым током зарядки

    На рисунке показана схема простого зарядного уст-ва автомобильных аккумуляторов с регулируемым током зарядки. Зарядное уст-во основано на стабилизаторе L200 регулятора. Основные параметры стабилизатора L200CV: Максимальное входное напряжение 40В Максимальная разница напряжений «вход-выход» 32В Выходное напряжение 2,8..36В Выходной ток до 2А Минимальное падение напряжения «вход-выход» (dropout) <2,5В Ток потребления (по выводу …Подробнее...
  • УНЧ на TDA1558Q

    УНЧ на TDA1558Q

    Напряжение питания 6…18В Максимальный ток нагрузки 4А Выходная мощность при Uп=14,4В и Rн=4Ом: КНИ=0,5% — 5Вт КНИ=10% — 6Вт Ток покоя 80мАПодробнее...
  • Недорогой узкополосный FM-приемник на 68…88МГц

    На рисунке показана схема простого приемника FM-диапазона, настройка на станцию осуществляется потенциометром Р2. Полевой транзистор Т1 обеспечивает усиление входного радиосигнала на 18дБ, запитывая входную цепь TDA7000 через разделительный конденсатор С5. Ряд конденсаторов вокруг микросхемы предназначен для формирования полосы пропускания около 70 кГц. Перестраиваемый генератор строится на базе варикапа D1. Напряжение …Подробнее...
  • Полицейская сирена на LM324

    Полицейская сирена на LM324

    Данная схема издает звук напоминающий полицейскую сирену. Схема основана на ОУ LM324 представляющий собой генератор ЗЧ. При нажатии на кнопку SA1 начнет быстро заряжаться С1, сирена начнет издавать звук. При размыкании контактов SA1  сирена будет работать до тех пор пока не разрядится через R2 конденсатор С1. Источник — http://www.eleccircuit.com/police-bicycle-siren-circuits/Подробнее...
  • Простой тестер проверки радиоэлементов

    При регулировке и настройке электронной аппаратуры применяют вспомогательные устройства: индикаторы состояний, «прозвоночные” приборы и тестеры, с помощью которых выполняют различные операции: от простейшей – по проверке целостности цепей до сложной – по измерению параметров радиоэлементов. Сложные тестеры необходимы, когда выполнена проверка работоспособности радиоэлемента и необходимо уточнить значения его параметров. Оценку …Подробнее...