Настенные часы с подсветкой

Тема в разделе "Закажу проект", создана пользователем Vitaly_Pro, 7 сен 2017.

  1. Vitaly_Pro

    Vitaly_Pro Нуб

    Здравствуйте, мои дорогие! Есть Arduino Uno, датчик освещённости (Troyka-модуль), AMP-B090 Силовой ключ (Troyka-модуль), настенные часы со светодиодной лентой и power bank(на фото первый образец с работой от сети).
    Задача: написать скетч, в исполнение которого входило бы включение светодиодной ленты при обнаружении датчиком освещённости сумерок и выключение ленты спустя через час времени после включения.
    Спасибо! FullSizeRender (3).jpg FullSizeRender (4).jpg
     
  2. Developer-RU

    Developer-RU Гик

    p.masyukov -- пиши обсуди..
     
  3. ostrov

    ostrov Гуру

    Программа из трех строк. Ну ладно, из пяти.
     
  4. Tomasina

    Tomasina Иномирянин

    Код (C++):
    /* включение светодиодной ленты при обнаружении датчиком освещённости сумерок
       и выключение ленты спустя через час времени после включения */


    #define LED_PIN           6    // пин для подсветки     http://www.pighixxx.com/test/portfolio-items/connect-a-mosfet/
    #define LDR_PIN           A0   // пин для фоторезистора http://www.pighixxx.com/test/portfolio-items/connect-a-photoresistor/
    #define LDR_VALUE         48   // граница срабатывания (уровень освещенности), 0...255
    #define LED_TIMEOUT       60   // время до отключения подсветки, мин
    #define BRIGHTNESS_MAX    255  // максимальная яркость, 50...255
    #define BRIGHTNESS_SPEED  5    // скорость изменения яркости: 10...1

    void setup()
    {
      pinMode(LED_PIN, OUTPUT);
      pinMode(LDR_PIN, INPUT);
    }

    void fade(const boolean state) // HIGH - увеличение яркости, LOW - уменьшение яркости
    {
      byte brightness = BRIGHTNESS_MAX * !state;
      while (brightness != BRIGHTNESS_MAX * state)
      {
        analogWrite(LED_PIN, brightness);
        brightness += (2 * state - 1);     // изменяем яркость на 1 пункт
        delay(BRIGHTNESS_SPEED * 10);
      }
      digitalWrite(LED_PIN, state);
    } // конец fade

    void loop()
    {
      static unsigned long timestamp = 0;
      static boolean runOnce = false;       // флаг включения подсветки

      if (analogRead(LDR_PIN) < LDR_VALUE)  // наступили сумерки
      {
        if (runOnce)
        {
          timestamp = millis();             // запоминаем время срабатывания
          fade(HIGH);                       // плавно включаем
          runOnce = false;
        }
      }
      else runOnce = true;

      if (digitalRead(LED_PIN) && millis() - timestamp > 60UL * 1000 * LED_TIMEOUT) // время вышло
      {
        fade(LOW);                          // плавно гасим
        runOnce = false;
      }
    } // конец loop
    Подкиньте копеечку на красную икру, а то батон есть, маслице есть, а на остальное жаба душит :D
     
  5. ostrov

    ostrov Гуру

    А я таки вписался в 5, как и предполагал.
     
  6. Tomasina

    Tomasina Иномирянин

    Ну я и в три строки могу, только через полгода не смогу объяснить как оно работает ;)
    Код (C++):
    void setup(){pinMode(6,OUTPUT);}
    void(*r)()=0;
    void loop(){(analogRead(A0)<48&&millis()<3600000)?digitalWrite(6,1):r();}
     
    ostrov нравится это.
  7. Tomasina

    Tomasina Иномирянин

    Кстати, если к этой панели на заднюю сторону приклеить модуль TTP223B без конденсатора, то при простом приближении к картине до 30-50 см, подсветка будет включаться автоматически :p
     
  8. ostrov

    ostrov Гуру

    Да не, тут можно будет понять и через год. Но Требуется немного не это. ))
     
  9. Tomasina

    Tomasina Иномирянин

    Почему не то? Да, оно работает через одно место, но требуемое ТС эти 3 строки выполняют.
     
  10. ostrov

    ostrov Гуру

    Должно ждать пока не наступит analogRead(A0)<48 а уже потом несмотря ни на что ждать 3600000мс после чего опять ждать с начала.
     
  11. Vitaly_Pro

    Vitaly_Pro Нуб

    Думаю будет справедливо разделить между вами половину прибыли с первого заказа таких часов! Пишите номера телефонов господа.
     
  12. b707

    b707 Гик

    неужели такое кто-то заказывает? :)
    Автору - добавьте что ли коррекцию времени из инета или через GPS - чтобы эти часы были хоть чем-то лучше китайского аналога с вещевого рынка
     
  13. Limoney

    Limoney Гик

    Здесь ардуинка вообще, лишняя. Достаточно микросхемы 555
     
  14. ostrov

    ostrov Гуру

    Сделайте, кто мешает то?
     
  15. Limoney

    Limoney Гик

    Просто жалко тратить ардуинку. Намного дешевле на микросхеме, если будет партия таких часов.
     
  16. ostrov

    ostrov Гуру

    Для партии наверняка есть готовые изделия.