Работа со светом

Тема в разделе "Arduino & Shields", создана пользователем DenisKa1009, 13 янв 2017.

  1. DenisKa1009

    DenisKa1009 Нуб

    Всем привет. Решил я сделать светодиодную подсветку к себе в аквариум, да не просто подсветку, а чтобы сама плавно включалась и выключалась в течении суток. Программы писать совсем не умею, поэтому хотел просто использовать пример Fade, и добавить задержки. например как только подается питание на плату, плавно свет плавно включается, ждет 15 часов, плавно выключается, через 9 часов опять плавно включается.. Но куда не пытался вставить delay в код - не получил желаемого результата.. Для вас это дело двух минут, объясните пожалуйста, что нет так делаю?
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    где ваш код?
    Тут принято помогать, а не давать готовое ;)

    P.S. лучше бы добавить RTC (часы реального времени),хотя бы самые дешевые, это даст независимость расписания от пропадания питания.
     
  3. ImrDuke

    ImrDuke Гик

    Какие модули используются?
     
  4. DenisKa1009

    DenisKa1009 Нуб

    Использую Arduino Uno и ProMini. Так же есть модуль RTCds1307, но я с ним пока не работал. Хотел сначала что-то попроще. Вот мой "код"

    int led = 9;
    int brightness = 0;
    int fadeAmount = 3;


    void setup() {
    pinMode(led, OUTPUT);
    }

    void loop() {
    analogWrite(led, brightness);
    while(brightness<=200){

    brightness = brightness + fadeAmount;
    }
    delay(900000);
    while(brightness>0) {
    brightness = fadeAmount = -fadeAmount;
    }
    delay(480000);
    }
     
  5. ImrDuke

    ImrDuke Гик

    Ну хотя бы так...
    А как планируется подключать светодиодную ленту\лампу?

    Код (C++):
    int led = 9;
    int brightness = 0;
    int fadeAmount = 3;

    void setup() {
    pinMode(led, OUTPUT);
    }

    void loop() {
    while(brightness<=200){
    analogWrite(led, brightness);
    brightness = brightness + fadeAmount;
    }
    delay(900000);
    while(brightness>0) {
    analogWrite(led, brightness);
    brightness = fadeAmount = -fadeAmount;
    }
    delay(480000);
    }
     
  6. DenisKa1009

    DenisKa1009 Нуб

    Попробовал ваш код. Чтобы не ждать 15 часов - сделал задержку 5 сек. лента теперь моргает каждые десять 10 секунд. При этом все остальное время еле еле горит.
    Подключаю через транзистор КТ815 к БП 12V
     
    Последнее редактирование: 13 янв 2017
  7. sslobodyan

    sslobodyan Гик

    Нет, не так. Примерно вот так:

    Код (C++):

    int led = 9;
    int brightness = 0;
    int fadeAmount = 3;
    int time_delay=500;

    void setup() {
      pinMode(led, OUTPUT);
    }

    void loop() {
      while(brightness<=200){
        analogWrite(led, brightness);
        brightness = brightness + fadeAmount;
        delay(time_delay);
      }
    delay(900000);
    while(brightness>0) {
      analogWrite(led, brightness);
      brightness = brightness - fadeAmount;
      delay(time_delay);
    }
    delay(480000);
    }
     
     
    DenisKa1009 нравится это.
  8. DenisKa1009

    DenisKa1009 Нуб

    Отлично! Все работает как надо! Спасибо большое! НО! Есть ода проблемка. В момент, когда якобы ночь(delay 480000) светодиоды еле еле горят, хотя не должны совсем. Что с этим можно сделать? Все собрано по этой схеме:
    только без кнопки и от 12V
     

    Вложения:

    • led1.jpg
      led1.jpg
      Размер файла:
      166,6 КБ
      Просмотров:
      347
  9. sslobodyan

    sslobodyan Гик

    Здесь принято благодарить ссылочкой "мне нравится".
    Перед delay(480000); добавьте analogWrite(led, 0);
     
    DenisKa1009 нравится это.
  10. DenisKa1009

    DenisKa1009 Нуб

    Еще раз спасибо огромное! Ссылочку нажал ;)