Диммер

Denisblr
Offline
Зарегистрирован: 23.04.2021

Добрый вечер. Нужна помощь в написании кода. Программированием на плюсах занимался лет 8 назад.

Может кто поможет начать программу. У меня ардуино уно, к ней подключен AC Dimmer   на порты: zeroPin-2 dinPin-3, также к нему подлючено релереального времени DS3231 (оно уже запраграммировано на реальное время, библиотека <DS3231.h>).

Смысл программы: в определенное время (например с 1:00 до 2:00) диммер должен регулировать мощность от 10 до 20 процентов поднимая один процент каждые 6 минут. 

Я думал писать через swith и case, но немного не знаю как присвоить переменной время с реле реального времени, чтобы потом это описать через if в case.

За ранее спасибо!!!

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denisblr пишет:
думал писать через swith и case, но немного не знаю как присвоить переменной время с реле реального времени, чтобы потом это описать через if в case.
А что такое "реле реального времени"?

"За ранее" спасибо!!!

Denisblr
Offline
Зарегистрирован: 23.04.2021

Модуль реле ds3231, разве он называется не так?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Denisblr пишет:

За ранее спасибо!!!

А за "позднее" что будет?

Denisblr
Offline
Зарегистрирован: 23.04.2021

Ничего)))) просто описался, пробел поставил)))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Denisblr пишет:

Модуль реле ds3231, разве он называется не так?

Да как хош, так и называй! Как гриццо: "Для Вас - везде!" ;))

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denisblr пишет:

Модуль реле ds3231, разве он называется не так?

Так я у Вас спросил, чё за зверь такой. Хоть бы ссылку дали, что ли.

nik182
Offline
Зарегистрирован: 04.05.2015

Denisblr пишет:

...Я думал писать через swith и case, но немного не знаю как присвоить переменной время с реле реального времени, чтобы потом это описать через if в case.

Ищи преобразование unix time. Оно спасёт. 

Denisblr
Offline
Зарегистрирован: 23.04.2021

ЕвгенийП пишет:

Denisblr пишет:

Модуль реле ds3231, разве он называется не так?

Так я у Вас спросил, чё за зверь такой. Хоть бы ссылку дали, что ли.

166,40 руб.  -3% | Модуль памяти DS3231 AT24C32 IIC Precision RTC в режиме реального времени для Arduino, 1 шт., новый оригинальный

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Так там же нет никакого реле? Это просто часы с дополнительной памятью. Реле-то здесь каким боком?

Denisblr
Offline
Зарегистрирован: 23.04.2021

ЕвгенийП пишет:

Так там же нет никакого реле? Это просто часы с дополнительной памятью. Реле-то здесь каким боком?

оно так называется))) 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Denisblr,

Все, что нужно для приручения DS3231:

https://github.com/adafruit/RTClib

Смотри класс RTC_DS3231

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denisblr пишет:

оно так называется))) 

Спасибо, буду знать :-)

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Denisblr пишет:

ЕвгенийП пишет:

Так там же нет никакого реле? Это просто часы с дополнительной памятью. Реле-то здесь каким боком?

оно так называется))) 

кем? не дошло, что над этим и глумимся?

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Rumata пишет:

Denisblr,

Все, что нужно для приручения DS3231:

https://github.com/adafruit/RTClib

Смотри класс RTC_DS3231

не порть пятницу!!!

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

wdrakula пишет:

не порть пятницу!!!

Сорян за ранее))) 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Denisblr пишет:

оно уже запраграммировано на реальное время, библиотека <DS3231.h>).

Откуда оно взяло реальное время? Ардуино само в интернет не умеет, GPS не озвучен.. Руками вбиваете?

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Rumata пишет:
Откуда оно взяло реальное время? Ардуино само в интернет не умеет, GPS не озвучен.. Руками вбиваете?

Можно и не руками, варианты есть и без GPS.

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Denisblr пишет:

Добрый вечер. Нужна помощь в написании кода. Программированием на плюсах занимался лет 8 назад.

Может кто поможет начать программу. У меня ардуино уно, к ней подключен AC Dimmer   на порты: zeroPin-2 dinPin-3, также к нему подлючено релереального времени DS3231 (оно уже запраграммировано на реальное время, библиотека <DS3231.h>).

Смысл программы: в определенное время (например с 1:00 до 2:00) диммер должен регулировать мощность от 10 до 20 процентов поднимая один процент каждые 6 минут. 

Я думал писать через swith и case, но немного не знаю как присвоить переменной время с реле реального времени, чтобы потом это описать через if в case.

За ранее спасибо!!!

Так а какие проблемы?

Начните с регулировки яркости ламы или с включения нагрузки в определенное время, потом объедините обе части.

Denisblr
Offline
Зарегистрирован: 23.04.2021

ЕвгенийП пишет:

Так там же нет никакого реле? Это просто часы с дополнительной памятью. Реле-то здесь каким боком?

оно так называется))) 

Denisblr
Offline
Зарегистрирован: 23.04.2021

SergeiL пишет:

Denisblr пишет:

Добрый вечер. Нужна помощь в написании кода. Программированием на плюсах занимался лет 8 назад.

Может кто поможет начать программу. У меня ардуино уно, к ней подключен AC Dimmer   на порты: zeroPin-2 dinPin-3, также к нему подлючено релереального времени DS3231 (оно уже запраграммировано на реальное время, библиотека <DS3231.h>).

Смысл программы: в определенное время (например с 1:00 до 2:00) диммер должен регулировать мощность от 10 до 20 процентов поднимая один процент каждые 6 минут. 

Я думал писать через swith и case, но немного не знаю как присвоить переменной время с реле реального времени, чтобы потом это описать через if в case.

За ранее спасибо!!!

Так а какие проблемы?

Начните с регулировки яркости ламы или с включения нагрузки в определенное время, потом объедините обе части.

приведите пожалуйста пример кода включения в определённое время

nik182
Offline
Зарегистрирован: 04.05.2015

1. Переводите часы, минуты, секунды необходимого времени срабатывания в секунды.

2. Раз в секунду считываете из часов реального времени текущее время.

3. Переводите текущее время в секунды.

4.  Сравниваете текущее время в секундах и с временем уставки в секундах. Если больше или равно то выполняем что хотели.

Помним о количестве секунд в сутках и правильно выбираем размер переменных, что бы не было переполнения.

 

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

SergeiL пишет:

Можно и не руками, варианты есть и без GPS.

Как без интернета, GPS и не руками?

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

_

Rumata
Rumata аватар
Offline
Зарегистрирован: 29.03.2019

Denisblr пишет:

приведите пожалуйста пример кода включения в определённое время

Denisblr пишет:
Программированием на плюсах занимался лет 8 назад.

???

SergeiL
SergeiL аватар
Offline
Зарегистрирован: 05.11.2018

Rumata пишет:
Как без интернета, GPS и не руками?

Дата и время компиляции:

Serial.print(__TIME__);
Serial.print(__DATE__);

Ну и нужно проверку сделать, что именно это время уже загрузили в RTC, чтобы при каждом старте не устанавливалось. 

Denisblr
Offline
Зарегистрирован: 23.04.2021

В часах установлена батарейка, время каждый раз я неустанавливаю. Примером скетча с библиотеки DS3231 я установил время и оно не обнуляется при отключении питания. 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Denisblr пишет:

В часах установлена батарейка, время каждый раз я неустанавливаю. Примером скетча с библиотеки DS3231 я установил время и оно не обнуляется при отключении питания. 

Ну хотя-бы обрывок программы, а лучше всю. С указанием проблемы. Иначе мы так и будем над Вами глумится.

Denisblr
Offline
Зарегистрирован: 23.04.2021

Я почти все сделал. Программа будет чуть позже, когда я ее полностью допилю до идеала

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Denisblr пишет:

оно так называется))) 

Нет, оно так не называется.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Denisblr пишет:

когда я ее полностью допилю до идеала

Наши советы Вам будут не нужны. Зачем сюда вылезли? Засветиться?

Оценил -> Денис.

Denisblr
Offline
Зарегистрирован: 23.04.2021



#include <CyberLib.h> // шустрая библиотека для таймера
#include <DS3231.h>
#include <TimeLib.h>
#include <Wire.h>
#include "RTClib.h"
#include <RBDdimmer.h>



#define outputPin  3
#define zerocross  2

RTC_DS3231  rtc;                 // Инициализация DS3231
uint32_t RTime0, RTime1;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
dimmerLamp dimmer(outputPin);

void setup()
{
  Serial.begin(9600);
  rtc.begin();                         // Инициализировать rtc
  dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
  Serial.println("Dimmer Program is starting...");
  Serial.println("Set value");
  Serial.print("Temperature: ");
  Serial.print(rtc.getTemperature());
  Serial.println(" C");
}

void loop()
{
  /* Serial.print(rtc.getDOWStr());       // Отправляем день-неделя
     Serial.print(" ");
     Serial.print(rtc.getDateStr());      // Отправляем дату
     Serial.print(" -- ");
     Serial.println(rtc.getTimeStr());    // Отправляем время
      Serial.println(rtc.getTimeStr("d-m-Y, H:i:s, D")); // выводим время*/
  DateTime now = rtc.now();
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
  Serial.print(now.day(), DEC);
  Serial.print('.');
  Serial.print(now.month(), DEC);
  Serial.print('.');
  Serial.print(now.year(), DEC);
  Serial.print(" (");
  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");
  /*DateTime noch (now - TimeSpan(0, 11, 30, 5));
    DateTime future (now + TimeSpan(0, 12, 30, 6));
    // calculate a date which is 7 days, 12 hours, 30 minutes, 6 seconds into the future*/
  /*Serial.print(" now + 0d + 12h + 30m + 6s: ");

    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();*/

  

  Serial.println();
  delay(3000);

  int a = now.hour();
  int b = now.minute();
  int c = now.second();
  Serial.println();
  Serial.print(a);
  Serial.print(":");
  Serial.print(b);
  Serial.print(":");
  Serial.print(c);
  Serial.println();

  int Rtime = a;
  Serial.println("Присвоено значение:");
  Serial.print(Rtime);

  switch (Rtime)
  {
    case 0:
      Serial.println("Время 0 часов");
      break;
    case 1:
      Serial.println("Время 1 час");
      break;
    case 2:
      Serial.println("Время 2 часа");
    case 3:
      Serial.println("Время 3 часа");
      break;
    case 4:
      Serial.println("Время 4 часа");
      break;
    case 5:
      Serial.println("Время 5 часов");
      break;
    case 6:

      Serial.println("Время 6 часов");
      break;
    case 7:

      Serial.println("Время 7 часов");
      break;
    case 8:

      Serial.println("Время 8 часов");
      break;
    case 9:
      Serial.println("Время 9 часов");
      break;
    case 10:
      Serial.println("Время 10 часов");
      break;
    case 11:
      
        Serial.println("Время 11 часов");        
        break;
      
    case 12:
      Serial.println("Время 12 часов");     
      break;

    case 13:

        Serial.println("Время 13 часов");
       
        break;

      
    case 14:

      Serial.println("Время 14 часов");
      break;
    case 15:
      Serial.println("Время 15 часов");
      break;
    case 16:
      Serial.println("Время 16 часов");
      break;
    case 17:
      break;
      Serial.println("Время 17 часов");
    case 18:
      Serial.println("Время 18 часов");
      delay(10000);
      break;

    case 19:
     
      Serial.println("Время 19 часов");
           plus();
      break;
    case 20:
      Serial.println("Время 20 часов");
      break;
    case 21:
      Serial.println("Время 21 час");
      break;
    case 22:
      Serial.println("Время 22 час");
      break;
    case 23:
      Serial.println("Время 23 час");
      break;
  }
  
 
}
void plus()
{
  int power;
for (power=1;power <=100;++power);
            { 
        dimmer.setPower(power);
        Serial.println("");
        Serial.print(dimmer.getPower());
        
        delay(10000);
        return 0;
            }
          
  
  }

Denisblr
Offline
Зарегистрирован: 23.04.2021

У меня не получается сделать так, чтобы в 19:00 он включил 1% и в течении часа постепенно поднимал его до 100. Он постоянно выходит из case и начинает выполнять все заново, а цикл FOR не проходит. 

Serial.print очень много, для того чтобы я через мониторинг порта мог отслеживать какие он значения выдаёт.

только что попробывал выкинуть в отдельную функцию, но все равно одно и тоже

P.S. этот код собран из нескольких, когда он будет доделан, половина будет убрана

nik182
Offline
Зарегистрирован: 04.05.2015

Не надо case. Всё делается через флаги. Сначала проверяется время и если пора поднимать - выставляется флаг пора поднимать. По этому флагу время больше не проверяем, а в лупе поднимаем потихоньку мощность на процент в 6 минут по аналогии с блиньк без делея (есть тема). Как подняли до 20% флаг снимаем. Если потом надо что то делать - выставляем следующий флаг. И так далее.  

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вы что издеваетесь? Вставьте код нормально, почему у Вас символы заменены?

Denisblr
Offline
Зарегистрирован: 23.04.2021

Сорри, исправил

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

А это чего за херня? Типа это работает????

    case 0:
      Serial.println(&quot;Время 0 часов&quot;);
      break;
    case 1:
      Serial.println(&quot;Время 1 час&quot;);
      break;
    case 2:
      Serial.println(&quot;Время 2 часа&quot;);
    case 3:
      Serial.println(&quot;Время 3 часа&quot;);
      break;
    case 4:
      Serial.println(&quot;Время 4 часа&quot;);
      break;
    case 5:
      Serial.println(&quot;Время 5 часов&quot;);
      break;
    case 6:

      Serial.println(&quot;Время 6 часов&quot;);
      break;
    case 7:

      Serial.println(&quot;Время 7 часов&quot;);
      break;
    case 8:

      Serial.println(&quot;Время 8 часов&quot;);
      break;
    case 9:
      Serial.println(&quot;Время 9 часов&quot;);
      break;
    case 10:
      Serial.println(&quot;Время 10 часов&quot;);
      break;
    case 11:
      
        Serial.println(&quot;Время 11 часов&quot;);        
        break;
      
    case 12:
      Serial.println(&quot;Время 12 часов&quot;);     
      break;

    case 13:

        Serial.println(&quot;Время 13 часов&quot;);
       
        break;

 

Denisblr
Offline
Зарегистрирован: 23.04.2021

nik182 пишет:

Не надо case. Всё делается через флаги. Сначала проверяется время и если пора поднимать - выставляется флаг пора поднимать. По этому флагу время больше не проверяем, а в лупе поднимаем потихоньку мощность на процент в 6 минут по аналогии с блиньк без делея (есть тема). Как подняли до 20% флаг снимаем. Если потом надо что то делать - выставляем следующий флаг. И так далее.  

а не подскажите как это реализовать?

Denisblr
Offline
Зарегистрирован: 23.04.2021

mykaida пишет:

А это чего за херня? Типа это работает????

    case 0:
      Serial.println(&quot;Время 0 часов&quot;);
      break;
    case 1:
      Serial.println(&quot;Время 1 час&quot;);
      break;
    case 2:
      Serial.println(&quot;Время 2 часа&quot;);
    case 3:
      Serial.println(&quot;Время 3 часа&quot;);
      break;
    case 4:
      Serial.println(&quot;Время 4 часа&quot;);
      break;
    case 5:
      Serial.println(&quot;Время 5 часов&quot;);
      break;
    case 6:

      Serial.println(&quot;Время 6 часов&quot;);
      break;
    case 7:

      Serial.println(&quot;Время 7 часов&quot;);
      break;
    case 8:

      Serial.println(&quot;Время 8 часов&quot;);
      break;
    case 9:
      Serial.println(&quot;Время 9 часов&quot;);
      break;
    case 10:
      Serial.println(&quot;Время 10 часов&quot;);
      break;
    case 11:
      
        Serial.println(&quot;Время 11 часов&quot;);        
        break;
      
    case 12:
      Serial.println(&quot;Время 12 часов&quot;);     
      break;

    case 13:

        Serial.println(&quot;Время 13 часов&quot;);
       
        break;

 

Представьте, да.

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Denisblr пишет:

Представьте, да.

Денис, а Вы пизди-те. Именно это работать не может. Скорее всего Вы пи... и в остальном. Дениска - давай не прыскай!

nik182
Offline
Зарегистрирован: 04.05.2015

А что я непонятного написал? Флаг - просто булева переменная - поднят true, опущен - false.

http://arduino.ru/Reference/BooleanVariables

Наверху над темой есть строчка поиска. Наберите там слово флаг и посмотрите как народ их использует. Вот примеры оттуда прямо только что вытащенные

http://arduino.ru/forum/proekty/arduino-knopka-s-samovozratom-rele

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

http://arduino.ru/forum/pesochnitsa-razdel-dlya-novichkov/zamenit-delay-...

Denisblr
Offline
Зарегистрирован: 23.04.2021

я не п...., я написал что именно у меня не работает. может и for неправильно написан. у меня не работает цикл, но в case он заходит.

nik182
Offline
Зарегистрирован: 04.05.2015

Ну так попробуйте после строки с for точку с запятой убрать.

Denisblr
Offline
Зарегистрирован: 23.04.2021

nik182 пишет:

Ну так попробуйте после строки с for точку с запятой убрать.

Спасибо, пошёл выполняться цикл

 

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

Чтобы такого не случалось, лучше писать в стиле Кернигена и Ритчи:

if ( true ) {
  ......
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

BOOM пишет:

if ( true ) {
  ......
}

Глубоко!

Напомнило последнюю фразу из анекдота:

- Лазарь Абрамович, Вы как предпочитаете рыбу фиш кушать: из вилки, или из ложки?
- Да мне всё равно, Хана Иосифовна, мне лишь бы "да".

BOOM
BOOM аватар
Offline
Зарегистрирован: 14.11.2018

)))) Ну а как бы вы абстрактный код представили? Я вот так решил, суть как скобки расположить. 

Denisblr
Offline
Зарегистрирован: 23.04.2021

Кому интересно, как пока что получилось, и тем кто не верил в работоспособность https://photos.app.goo.gl/bvJXrQq7Qt1x1f956

Denisblr
Offline
Зарегистрирован: 23.04.2021


#include <CyberLib.h> // шустрая библиотека для таймера
#include <DS3231.h>
#include <TimeLib.h>
#include <Wire.h>
#include "RTClib.h"
#include <RBDdimmer.h>



#define outputPin  3
#define zerocross  2

RTC_DS3231  rtc;                 // Инициализация DS3231
uint32_t RTime0, RTime1;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
dimmerLamp dimmer(outputPin);
Вот что в итоге получилось. Осталось только немного допилить, чтобы проверка времени была каждую минуту и программа если зашла в Case, там же и проверяла время.
void setup()
{
  Serial.begin(9600);
  rtc.begin();                         // Инициализировать rtc
  dimmer.begin(NORMAL_MODE, OFF); //dimmer initialisation: name.begin(MODE, STATE)
  Serial.println("Dimmer Program is starting...");
  Serial.println("Set value");
  Serial.print("Temperature: ");
  Serial.print(rtc.getTemperature());
  Serial.println(" C");
}

void loop()
{
  /* Serial.print(rtc.getDOWStr());       // Отправляем день-неделя
     Serial.print(" ");
     Serial.print(rtc.getDateStr());      // Отправляем дату
     Serial.print(" -- ");
     Serial.println(rtc.getTimeStr());    // Отправляем время
      Serial.println(rtc.getTimeStr("d-m-Y, H:i:s, D")); // выводим время*/
  DateTime now = rtc.now();
  /*Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
  Serial.print(now.day(), DEC);
  Serial.print('.');
  Serial.print(now.month(), DEC);
  Serial.print('.');
  Serial.print(now.year(), DEC);
  Serial.print(" (");
  Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
  Serial.print(") ");*/

  Serial.println();
  int a = now.hour();
  int b = now.minute();
  int c = now.second();
  Serial.println();
  Serial.print(a);
  Serial.print(":");
  Serial.print(b);
  Serial.print(":");
  Serial.print(c);
  Serial.println();

  int Rtime = a;
  /*Serial.println("Присвоено значение:");
  Serial.println(Rtime);*/
  int power;

  switch (Rtime)
  {
    case 0:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 0 часов");
      dimmer.setPower(0);
      break;
    case 1:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 1 час");
      dimmer.setPower(0);
      break;
    case 2:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 2 часа");
      dimmer.setPower(0);
    case 3:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 3 часа");
      dimmer.setPower(0);
      break;
    case 4:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 4 часа");
      dimmer.setPower(0);
      break;
    case 5:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 5 часов");
      dimmer.setPower(0);
      break;
    case 6:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 6 часов");
      dimmer.setPower(0);
      break;
    case 7:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 7 часов");
      dimmer.setPower(0);
      break;
    case 8:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 8 часов");
      dimmer.setPower(0);
      break;
    case 9:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 9 часов");
      dimmer.setPower(0);
      break;
    case 10:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 10 часов");
      dimmer.setPower(0);
      break;
    case 11:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 11 часов");
      dimmer.setPower(0);
      break;

    case 12:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 12 часов");
      dimmer.setPower(0);
      break;

    case 13:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 13 часов");
      dimmer.setPower(0);

      break;


    case 14:
      Serial.println("Время 14 часов");

      dimmer.begin(NORMAL_MODE, ON);

      if (b <= 10)
        power = 0;
      if (b <= 20)
        power = 17;
      if (b <= 30)
        power = 34;
      if (b <= 40)
        power = 51;
      if (b <= 50)
        power = 68;
      if (b <= 59)
        power = 84;

      for (power; power <= 100; power+1,6)
      {
        Serial.println("");
        dimmer.setPower(power);        
        Serial.print(dimmer.getPower());
        delay(60000);

      }

      return 0;

      break;
    case 15:
      dimmer.begin(NORMAL_MODE, ON);
      Serial.println("Время 15 часов");
      dimmer.setPower(100);
      break;
    case 16:
      dimmer.begin(NORMAL_MODE, ON);
      Serial.println("Время 16 часов");
      dimmer.setPower(100);
      break;
    case 17:

      dimmer.begin(NORMAL_MODE, ON);
      Serial.println("Время 17 часов");
      dimmer.setPower(100);
      break;
    case 18:
      dimmer.begin(NORMAL_MODE, ON);
      Serial.println("Время 18 часов");
      dimmer.setPower(100);

      break;

    case 19:
      dimmer.begin(NORMAL_MODE, ON);
      dimmer.setPower(100);

      Serial.println("Время 19 часов");

      break;
    case 20:
      dimmer.begin(NORMAL_MODE, ON);
      Serial.println("Время 20 часов");
      dimmer.setPower(100);

      break;
    case 21:
      Serial.println("Время 21 час");
      dimmer.begin(NORMAL_MODE, ON);
      if (b <= 10)
        power = 100;
      if (b <= 20 && b >= 11)
        power = 84;
      if (b <= 30 && b >= 21)
        power = 67;
      if (b <= 40 && b >= 31)
        power = 50;
      if (b <= 50 && b >= 41)
        power = 33;
      if (b <= 59 && b >= 51)
        power = 16;

      for (power; power <= 100; power-1,6)
      {
        Serial.println("");
        dimmer.setPower(power);        
        Serial.print(dimmer.getPower());
        delay(60000);
        if (power == 0)
        {
          break;
        }


      }

      return 0;

      break;

    case 22:
      dimmer.begin(NORMAL_MODE, OFF);
      Serial.println("Время 22 час");
      dimmer.setPower(0);
      while (a == 23 && b==00)
        {
          break;
        }
        delay(10000);
      break;
    case 23:
      dimmer.begin(NORMAL_MODE, OFF);
      dimmer.setPower(0);
      Serial.println("Время 23 час");
      break;
  }


}

 

Denisblr
Offline
Зарегистрирован: 23.04.2021

Осталось только немного допилить, чтобы программа когда зашла в Case, там же и осталась, и там же проверяла время каждую минуту, а не с начала начинала.

Не судите строго, первый опыт с Ардуино.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Denisblr пишет:

Осталось только немного допилить, чтобы программа когда зашла в Case, там же и осталась, и там же проверяла время каждую минуту, а не с начала начинала.

Успехов!