Показано с 1 по 5 из 5
  1. #1
    Новичок
    Регистрация
    19.04.2014
    Сообщений
    4
    Вес репутации
    0

    Вопрос RGB подсветка в зависимости от настроения и оборотов двигателя.

    Всем добрый день. Про ардуину узнал совсем недавно. Опыта програмирования крайне мало. Зато с паяльником дружу без проблем).
    И вот захотелось мне реализовать подсветку в машине на свой вкус, т.е. с лентой RGB. Первоначальный вариант был с контроллером за 100рэ с ебея. Там и цвет и яркость всё выбирается. Всякие режимы моргалки и пукалки меня не интересовали совсем.
    И тут на глаза попался набор ардуины, посмотрел инфу в нете, оказалось можно куда интереснее режимы организовать. И вот после долгих раздумий и подсчетов пришел к "проекту ( если так громко можно назвать).
    А точнее: 2 режима работы.
    Первый по кнопке перебор цветов по сине-зелено-красным диапазонам с градациями и регулировкой яркости. И сохранением последнего состояния в память ардуины ( и последующим чтением при включении).
    Второй - в зависимости от оборотов меняется цвет диодов. Так же от синего к красному через зеленый.

    Для подсчета Оборотов использую контакт с приборной панели. Идет он с мозгов машины. По расчетам выходит частота 300Гц при 6000 Об\мин. и для облегчения реализации можно приравнять кол-во импульсов с секунду к величине AnalogWrite. Т.е. при изменении оборотов от 0Гц до 256 ГЦ на входе будет меняться полностью спектр RGB диода. А чтоб не тратить оставшееся место в диапазоне высших оборотов - пусть при значениях на входе выше 256Гц мугет мигать красными ( последними в спектре) диодами. Получится что-то наподобии LightShift'a. Ну и соответсвенно с регулировкой яркости.
    Про неё отдельно. Как я понимаю нужно вводить переменную, на которую будет делится величина ШИМ выхода. Вполне достаточно 3-4 фиксированных положений. Потом можно и на датчик освещенности будет завести его).

    Вроде вкратце описал что хочу реализовать. Для регулировки цвета, яркости и режима можно подключить обычные кнопки, либо энкодер(понравился он мне).
    Сможет ли кто-то помочь в написании сего чуда? У меня уже есть готовый стенд с распаяным диодом и генератором импульсов на NE555 с частотами от 14Гц до 400Гц.


    Если нужна схема с контактами, то постараюсь нарисовать. Держу ее только в голове. Да и простая она.

    Заранее благодарю за любую помощь.


    Код HTML:
    int Gled = 9;
    int Rled = 10;
    int Bled = 11;
    int tacho = 2;
    int color = 4;
    int bright = 7;
    int mode =8;
    void setup()
    {
      pinMode(Rled, OUTPUT);
      pinMode(Gled, OUTPUT);
      pinMode(Bled, OUTPUT);
      pinMode(tacho, INPUT);
      pinMode(color, INPUT);
      pinMode(bright, INPUT);
      pinMode(mode, INPUT);
    }
    Последний раз редактировалось Dimitry_; 20.04.2014 в 01:38. Причина: добавил

  2. #2
    Новичок
    Регистрация
    19.04.2014
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: RGB подсветка в зависимости от настроения и оборотов двигателя.

    Поскольку мои познания крайне малы, то решил просто выдирать куски кода из других проектов и переделывать на свои нужды. Но чтото не состыкуется. Ошибка при компилировании. Направит может кто в нужное русло?
    int Gled = 9;
    int Rled = 10;
    int Bled = 11;
    int color = 4;
    int bright = 7;
    int mode =8;
    volatile float time = 0;
    volatile float time_last = 0;
    volatile int rpm_array[5] = {0,0,0,0,0};
    void setup()
    {
    pinMode(Rled, OUTPUT);
    pinMode(Gled, OUTPUT);
    pinMode(Bled, OUTPUT);
    pinMode(color, INPUT);
    pinMode(bright, INPUT);
    pinMode(mode, INPUT);
    attachInterrupt(0, rpm_interrupt, FALLING);
    }
    void loop()
    {
    int rpm = 0;

    while(1){
    analogWrite(Bled, rpm );
    analogWrite(Rled, rpm + 128);
    analogWrite(Gled, 255 - rpm);
    delay(1000);
    if(time > 0)
    {
    //5 Sample Moving Average To Smooth Out The Data
    rpm_array[0] = rpm_array[1];
    rpm_array[1] = rpm_array[2];
    rpm_array[2] = rpm_array[3];
    rpm_array[3] = rpm_array[4];
    rpm_array[4] = 300*(100000/(time*7));
    //Last 5 Average RPM Counts Eqauls....
    rpm = (rpm_array[0] + rpm_array[1] + rpm_array[2] + rpm_array[3] + rpm_array[4]) / 5;

    }

    }
    //Capture rpm
    void rpm_interrupt()
    {
    time = (micros() - time_last);
    time_last = micros();
    }

    getz.ino: In function 'void loop()':
    getz:45: error: a function-definition is not allowed here before '{' token
    getz:48: error: expected `}' at end of input
    ошибка такая

  3. #3
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: RGB подсветка в зависимости от настроения и оборотов двигателя.

    А если вот так?
    Код:
    int Gled = 9;
     int Rled = 10;
     int Bled = 11;
     int color = 4;
     int bright = 7;
     int mode =8;
     volatile float time = 0;
     volatile float time_last = 0;
     volatile int rpm_array[5] = {0,0,0,0,0};
     void setup()
     {
     pinMode(Rled, OUTPUT);
     pinMode(Gled, OUTPUT);
     pinMode(Bled, OUTPUT);
     pinMode(color, INPUT);
     pinMode(bright, INPUT);
     pinMode(mode, INPUT);
     attachInterrupt(0, rpm_interrupt, FALLING);
     }
     void loop() 
     {
     int rpm = 0;
    
     while(1){
     analogWrite(Bled, rpm );
     analogWrite(Rled, rpm + 128);
     analogWrite(Gled, 255 - rpm);
     delay(1000);
     if(time > 0)
     {
     //5 Sample Moving Average To Smooth Out The Data
     rpm_array[0] = rpm_array[1];
     rpm_array[1] = rpm_array[2];
     rpm_array[2] = rpm_array[3];
     rpm_array[3] = rpm_array[4];
     rpm_array[4] = 300*(100000/(time*7)); 
     //Last 5 Average RPM Counts Eqauls....
     rpm = (rpm_array[0] + rpm_array[1] + rpm_array[2] + rpm_array[3] + rpm_array[4]) / 5;
    
     }
    
     }
     }
     //Capture rpm
     void rpm_interrupt()
     {
     time = (micros() - time_last);
     time_last = micros();
     }

  4. #4
    Новичок
    Регистрация
    19.04.2014
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: RGB подсветка в зависимости от настроения и оборотов двигателя.

    И точно) Спасибо. уж вроде считал-считал эти скобки. Сейчас буду экспериментировать со множителем для time, чтоб правильно выводил кол-во rpm

  5. #5
    Новичок
    Регистрация
    19.04.2014
    Сообщений
    4
    Вес репутации
    0

    По умолчанию Re: RGB подсветка в зависимости от настроения и оборотов двигателя.

    или я чтото не понимаю как идет подсчитывание кол-во импульсов, но всегда параметр rpm = 0(

    Получилось) со множителями обманулся) 1000000 / time.
    А как сделать, чтоб можно было режимы перебирать? Т.е. чтоб по нажатию кнопки переключить с подсчитывания импульсов на непрерывный режим?
    Последний раз редактировалось Dimitry_; 22.04.2014 в 22:27.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •