Показано с 1 по 10 из 116

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Новичок
    Регистрация
    31.10.2014
    Сообщений
    1
    Вес репутации
    0

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

    Delay зло
    сделал так.
    константой P можно регулировать скорость реакции на затемнение.

    Код:
    struct LIGHT_STRUCT
    {
      uint16_t in_med;
      uint16_t current;
      uint16_t target;
      const uint8_t P = 5;
      uint16_t in = 0;
    };
    
    LIGHT_STRUCT TFT_BL;
    
    void backlightadjust() {
      if (millis() % 2 == 0)
      {
        if (readIndex < 10)
        {
          TFT_BL.in += 4095 - analogRead(LIGHT_PIN); //набор данных с сенсора света для усреднения
          fuel.in += analogRead(FUEL_PIN);
          readIndex++;
        }
        else
        {
          readIndex = 0;
          TFT_BL.in_med = TFT_BL.in / 10;   //усредняем
          fuel.in_med = fuel.in / 10;
          TFT_BL.target = map(TFT_BL.in_med, 0, 4095, 0, 65535); //масштабируем
          fuel.in = 0;
          TFT_BL.in = 0;
        }
        if (TFT_BL.current - TFT_BL.P > TFT_BL.target)            //+- 20 чтобы яркость не прыгала
          TFT_BL.current -= TFT_BL.P;                             //увеличиваем яркость с шагом 20
        if (TFT_BL.current + TFT_BL.P < TFT_BL.target)            // +- 20 чтобы яркость не прыгала
          TFT_BL.current += TFT_BL.P;                             //уменьшаем яркость с шагом 20
        if (TFT_BL.current > 62000) TFT_BL.current = 62000;       //минимальная яркость 62000
        if (TFT_BL.in_med < 400) TFT_BL.current = 200;       //минимальная яркость 62000
        pwmWrite(TFT_LED, TFT_BL.current);
      }
    }

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

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

    Цитата Сообщение от Hyperion Посмотреть сообщение
    Delay зло
    сделал так.
    константой P можно регулировать скорость реакции на затемнение.

    Код:
    struct LIGHT_STRUCT
    {
      uint16_t in_med;
      uint16_t current;
      uint16_t target;
      const uint8_t P = 5;
      uint16_t in = 0;
    };
    
    LIGHT_STRUCT TFT_BL;
    
    void backlightadjust() {
      if (millis() % 2 == 0)
      {
        if (readIndex < 10)
        {
          TFT_BL.in += 4095 - analogRead(LIGHT_PIN); //набор данных с сенсора света для усреднения
          fuel.in += analogRead(FUEL_PIN);
          readIndex++;
        }
        else
        {
          readIndex = 0;
          TFT_BL.in_med = TFT_BL.in / 10;   //усредняем
          fuel.in_med = fuel.in / 10;
          TFT_BL.target = map(TFT_BL.in_med, 0, 4095, 0, 65535); //масштабируем
          fuel.in = 0;
          TFT_BL.in = 0;
        }
        if (TFT_BL.current - TFT_BL.P > TFT_BL.target)            //+- 20 чтобы яркость не прыгала
          TFT_BL.current -= TFT_BL.P;                             //увеличиваем яркость с шагом 20
        if (TFT_BL.current + TFT_BL.P < TFT_BL.target)            // +- 20 чтобы яркость не прыгала
          TFT_BL.current += TFT_BL.P;                             //уменьшаем яркость с шагом 20
        if (TFT_BL.current > 62000) TFT_BL.current = 62000;       //минимальная яркость 62000
        if (TFT_BL.in_med < 400) TFT_BL.current = 200;       //минимальная яркость 62000
        pwmWrite(TFT_LED, TFT_BL.current);
      }
    }
    А можно ли полный код если не жалко?
    Заранее благодарю

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

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

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

Ваши права

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