Перейти к содержанию

Энкодер RGB лента


Рекомендуемые сообщения

я новичок Arduino,  помогите написать скетч для управления RGB  лентой (общий анод) с помощью энкодера (все мои попытки провалились ибо нет опыта роботы из Arduino ). Фишка в том что бы при повороте енкодера по часовой стрелке  менялся цвет за формулой :

 Формула R-G-B начнем с красного цвета 255-0-0.
1) Наращивается зеленый цвет 255-1-0, 255-2-0 ... 255-255-0.
2) Уменьшается красный цвет 254-255-0, 253-255-0 ... 0-255-0.
3) Наращивается синий цвет 0-255-1, 0-255-2 ... 0-255-255.
4) Уменьшается зеленый цвет 0-254-255, 0-253-255 ... 0-0-255.
5) Наращивается красный цвет 1-0-255, 2-0-255 ... 255-0-255.
6) Уменьшается синий цвет 255-0-254, 255-0-253 ... 255-0-0.

а вращение в обратную сторону приводило к обратному процесса с того места где остановились. (фактические это выбор цвета из не непрерывного спектра).

ещё использован енкодер со встроенной кнопкой при нажатии кнопки загоралса белый цвет (то есть все цвета на максимум), при повторном нажатии на кнопку лента выключалась. 

 ещё при подачи питания лента была выключена (но это не обязательно, это  для того, чтобы случайный скачок напряжения в доме не включил подсветку)

(хочу повторить как на видео ток под ардуино, в видео еще использован пульт но я думаю это слишком жырно такое просить)

Movie.WMV

Ссылка на комментарий
Поделиться на другие сайты

я в программировании не разбираюсь, но написано до меня не в среде ардуино, нет исходника только hex (attiny2313),  и к томуже хотелося менять настройки и добавлять эффекты, и данная прошивка устарела (например таких пультов ик управления который он использовав в видео уже нет на рынке, в нынешних моделях коды кнопок не такие, то бишь нажатие на кнопку не соответствует эффекту).

я только начал изучать ардуино  но хочу сделать это устройство к новому году, но понял что моих познаний для этого не хватит (подумал что кому то тоже понравится, он и себе сделает и мне поможет:()

hex я добавлю только толку с него.

с собственного варианта нет я застрял на том что при вращении в одну сторону меняются цвета а вот как сделать чтобы при вращении против часовой стрелке был обратный ефект з того же места где остановилса пока не пойму (думаю надо выделять ячейку памяти которая будет записывать нынешнее положение в спектре, либо только запоминать предыдущий стан и отталкиваться от него, ну вообщем я еще не понял как это сделать.

вдохновила эта стаття http://cxem.net/arduino/arduino8.php.  начал искать в интернете и натолкнулся на идеальный вариант(видео которое) 

ссылка на то что бы хотел повторить в среде ардуино http://labkit.ru/html/autocontrol?id=420

в общем я просто хочу потихоньку на этом примере начать разбираться с ардуино (управление с энкодером, потом добавлю пульт, потом эффекты)

HEX_RGB_LED_AVR.hex

RGB_LED_Encoder.ino

Изменено пользователем Vadim122
Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

В первом приближении:

/* Encoder Library - NoInterrupts Example
 * http://www.pjrc.com/teensy/td_libs_Encoder.html
 *
 * This example code is in the public domain.
 */

// If you define ENCODER_DO_NOT_USE_INTERRUPTS *before* including
// Encoder, the library will never use interrupts.  This is mainly
// useful to reduce the size of the library when you are using it
// with pins that do not support interrupts.  Without interrupts,
// your program must call the read() function rapidly, or risk
// missing changes in position.
#define ENCODER_DO_NOT_USE_INTERRUPTS
#include <Encoder.h>

// Beware of Serial.print() speed.  Without interrupts, if you
// transmit too much data with Serial.print() it can slow your
// reading from Encoder.  Arduino 1.0 has improved transmit code.
// Using the fastest baud rate also helps.  Teensy has USB packet
// buffering.  But all boards can experience problems if you print
// too much and fill up buffers.

// Change these two numbers to the pins connected to your encoder.
//   With ENCODER_DO_NOT_USE_INTERRUPTS, no interrupts are ever
//   used, even if the pin has interrupt capability


#define MAX_COLOR_VALUE 255
#define RED_PIN   9   // Пин красного цвета
#define GREEN_PIN  10  // Пин зеленого цвета
#define BLUE_PIN  11  // Пин синего цвета
#define BUTT_PIN  4   // Пин кнопки энкодера: кнопка подключается между этим пином и GND

#define SENS  0       // Чуствительность энкодера: больше число - меньше чуствительность
#define iter 10       // Шаг изменения яркости на клик энкодера

int8_t stage = 0, bMode = 0;
int16_t red = MAX_COLOR_VALUE, green = 0, blue = 0;

Encoder myEnc( 5, 6 );  // Пины энкодера


void setup() {
  Serial.begin(115200);

  pinMode( BUTT_PIN, INPUT_PULLUP );
}

long position = 0;
int butPrev = 1;


void loop() {
  long newPos = myEnc.read();
  if ( abs( newPos - position ) > SENS )
  {
    if ( newPos > position )
      stepUp();
    else
      stepDown();
 
    position = newPos;

    setLED();
  }

/////////////////////////////// Кнопка
  int but = digitalRead( BUTT_PIN );
  if ( but != butPrev )
  {
    if ( but == 0 )
    {
      Serial.println( "Button pressed" );
      if ( bMode == 0 )
      {
        red = green = blue = MAX_COLOR_VALUE;
        setLED();
        bMode = 1;
      }
      else
      {
        red = green = blue = 0;
        setLED();
        bMode = 0;
      }
    }
    butPrev = but;
  }
}

void status()
{
    Serial.print( "Stage: " );
    Serial.print( stage );
    Serial.print( "  R: " );
    Serial.print( red );
    Serial.print( "  G: " );
    Serial.print( green );
    Serial.print( "  B: " );
    Serial.println( blue );
}

void setLED()
{
    status();

    analogWrite( RED_PIN, red );
    analogWrite( GREEN_PIN, green );
    analogWrite( BLUE_PIN, blue );
}

void stepUp()
{
  switch( stage )
  {
   case 0: red = MAX_COLOR_VALUE; blue = 0;
    green = min( green + iter, MAX_COLOR_VALUE );
    if ( green >= MAX_COLOR_VALUE ) stage++;
    break;
   case 1: green = MAX_COLOR_VALUE; blue = 0;
    red = max( red - iter, 0 );
    if ( red == 0 ) stage++;
    break;
   case 2: green = MAX_COLOR_VALUE; red = 0;
    blue = min( blue + iter, MAX_COLOR_VALUE );
    if ( blue >= MAX_COLOR_VALUE ) stage++;
    break;
   case 3: blue = MAX_COLOR_VALUE; red = 0;
    green = max( green - iter, 0 );
    if ( green == 0 ) stage++;
    break;
   case 4: blue = MAX_COLOR_VALUE; green = 0;
    red = min( red + iter, MAX_COLOR_VALUE );
    if ( red >= MAX_COLOR_VALUE ) stage++;
    break;
   case 5: red = MAX_COLOR_VALUE; green = 0;
    blue = max( blue - iter, 0 );
    if ( blue == 0 ) stage = 0;
    break;
  }
}

void stepDown()
{
  switch( stage )
  {
   case 0: red = MAX_COLOR_VALUE; blue = 0;
    green = max( green - iter, 0 );
    if ( green == 0 ) stage = 5;
    break;
   case 1: green = MAX_COLOR_VALUE; blue = 0;
    red = min( red + iter, MAX_COLOR_VALUE );
    if ( red >= MAX_COLOR_VALUE ) stage--;
    break;
   case 2: green = MAX_COLOR_VALUE; red = 0;
    blue = max( blue - iter, 0 );
    if ( blue == 0 ) stage--;
    break;
   case 3: blue = MAX_COLOR_VALUE; red = 0;
    green = min( green + iter, MAX_COLOR_VALUE );
    if ( green >= MAX_COLOR_VALUE ) stage--;
    break;
   case 4: blue = MAX_COLOR_VALUE; green = 0;
    red = max( red - iter, 0 );
    if ( red == 0 ) stage--;
    break;
   case 5: red = MAX_COLOR_VALUE; green = 0;
    blue = min( blue + iter, MAX_COLOR_VALUE );
    if ( blue >= MAX_COLOR_VALUE ) stage--;
    break;
  }
}

 

Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...