Нужна помощь простой программки

Roman9595
Offline
Зарегистрирован: 22.11.2020
Здравствуйте, заранее извиняюсь если не в данном разделе написал тему. 
я начинающий из начинающих изучать Ардуино. Помогите собрать простую программку для Ардуино. Или кто-то даст пример использования управление выходом по времени не используя delay. Хочу полив для теплицы, нужно управлять выходом на реле с помощью таймера. А именно чтобы можно программно установить время на 19:00 каждого дня включения реле и отключать его через 10-15 мин каждый день, редактировать смог бы только время в программе. При этом сделать LCD экран с выводом время и даты. Хотелось бы простой скетч без кнопок и настроек из вне. В интернете много всего, но в основном все объединено. И понять сложные кода пока сложновато, хотелось бы как новичку что-то простое.
sadman41
Offline
Зарегистрирован: 19.10.2016

Это не "простая программка", а форум - не школа.

Что-то простое - это "blink без delay". Попытайтесь его понять, а там видно будет.

-NMi-
Offline
Зарегистрирован: 20.08.2018

41-й, ну этт зря, у человека теплицца, а там мощь чо прикольное растёт, а ты прям так рас, и паткорень рубанул. Нее, пусть растения созреют, так сказать, а уш патом их можно и ...

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

Roman9595,

Несколько раз перечитал первый пост ... если у Вас был какой-то вопрос, то Вы его забыли задать. Чего Вы от нас-то ждёте?

Если просто мнения по поводу Вашей задумки, то мнение таково: если Вы

Roman9595 пишет:

начинающий из начинающих изучать Ардуино.

то Вам не сделать

Roman9595 пишет:

чтобы можно программно установить время на 19:00 каждого дня включения реле и отключать его через 10-15 мин каждый день, редактировать смог бы только время в программе. При этом сделать LCD экран с выводом время и даты. 

Попробуйте поизучать, поделать что-нибудь попроще (хотя бы по отдельности - часы, дисплей). А когда перестанете быть "начинающим из начинающих", тогда возвращайтесь к этой задаче.

Roman9595
Offline
Зарегистрирован: 22.11.2020

Евгений спасибо, я уже понял, что мне в принципе дали понять из первого ответа другими. Надо было проще написать нужен человек за деньги написать код программы. Я в принципе и не думаю о том что кто-то мне принесет на блюдечке, мне этого не надо. Может просто поможете как или где почитать как определяется управление с помощью времени. Такие примеры как delay  и millis  мне понятно из простых примеров. Много что не понятно и еще пока не укладывается в голове. А как управлять с помощью delay  и millis большими отрезками времени не знаю. И все ж не зная языка программирования сложно изучать Ардуинку как кто бы там не сказал, что просто.  Все высказался :) :) :)

b707
Offline
Зарегистрирован: 26.05.2017

Roman9595 пишет:

И все ж не зная языка программирования сложно изучать Ардуинку как кто бы там не сказал, что просто.  Все высказался :) :) :)

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

Roman9595
Offline
Зарегистрирован: 22.11.2020

Спасибо. Я так и делаю. Но параллельно что-то делаю на ардуинке. Что-то получается уже что-то нет. Но пробую.

Green
Offline
Зарегистрирован: 01.10.2015

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

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014
Простенькие часы для обучения и полива можно сделать на миллис. Примерно так.
Их основной недостаток не только точность хода, но основное что включать или перезапускать их нужно в 00-часов и минут
Исходя из этого надо ставить часы реального времени. Пробуйте!
#define rele 3
uint8_t sekund;
uint8_t minut;
uint8_t chas;
uint16_t time = millis();

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

void loop()
{
  //Это часы
  if (millis() - time >= 1000)
  {
    time = millis();
    ++sekund;
    if (sekund == 60) {
      sekund = 0;
      ++minut;
    }
    if (minut == 60) {
      minut = 0;
      ++chas;
    }
    if (chas == 24)chas = 0;
  }
  // Здесь проверяем время  и вкл/выкл полив
  if (chas == 11 && minut == 30) {
    digitalWrite(rele, HIGH);
  }
  if (chas == 12 && minut == 25) {
    digitalWrite(rele, LOW);
  }
}

 

 

Green
Offline
Зарегистрирован: 01.10.2015

vosara пишет:

Их основной недостаток не только точность хода, но основное что включать или перезапускать их нужно в 00-часов и минут
Не обязательно. Можно брать время трансляции. Но тогда, при каждом включении нужно перезагружать скетч.
Ошибка в 14.
vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

5я строчка надо uint32_t time = millis();

Kakmyc
Offline
Зарегистрирован: 15.01.2018

vosara пишет:

Простенькие часы для обучения и полива можно сделать на миллис. Примерно так.
Их основной недостаток не только точность хода, но основное что включать или перезапускать их нужно в 00-часов и минут
Исходя из этого надо ставить часы реального времени. Пробуйте!
#define rele 3
uint8_t sekund;
uint8_t minut;
uint8_t chas;
uint16_t time = millis();

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

void loop()
{
  //Это часы
  if (millis() - time >= 1000)
  {
    time = millis();
    ++sekund;
    if (sekund == 60) {
      sekund = 0;
      ++minut;
    }
    if (minut == 60) {
      minut = 0;
      ++chas;
    }
    if (chas == 24)chas = 0;
  }
  // Здесь проверяем время  и вкл/выкл полив
  if (chas == 11 && minut == 30) {
    digitalWrite(rele, HIGH);
  }
  if (chas == 12 && minut == 25) {
    digitalWrite(rele, LOW);
  }
}

 

 

А что бы не включать/перезапускать в 00:00, достаточно секунды хранить/считать в формате time_t.
Ну соответственно подключив TimeLib.h .

Green
Offline
Зарегистрирован: 01.10.2015

vosara пишет:

5я строчка надо uint32_t time = millis();


Либо 14: if ((uint16_t)millis() - time >= 1000)

Roman9595
Offline
Зарегистрирован: 22.11.2020

Всем спасибо, попробую поэкспериментировать в этом направлении

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

vosara пишет:

Простенькие часы для обучения и полива можно сделать на миллис. Примерно так.
Их основной недостаток не только точность хода, но основное что включать или перезапускать их нужно в 00-часов и минут
Исходя из этого надо ставить часы реального времени. Пробуйте!
#define rele 3
uint8_t sekund;
uint8_t minut;
uint8_t chas;
uint16_t time = millis();

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

void loop()
{
  //Это часы
  if (millis() - time >= 1000)
  {
    time = millis();
    ++sekund;
    if (sekund == 60) {
      sekund = 0;
      ++minut;
    }
    if (minut == 60) {
      minut = 0;
      ++chas;
    }
    if (chas == 24)chas = 0;
  }
  // Здесь проверяем время  и вкл/выкл полив
  if (chas == 11 && minut == 30) {
    digitalWrite(rele, HIGH);
  }
  if (chas == 12 && minut == 25) {
    digitalWrite(rele, LOW);
  }
}

 

 

Вообще-то пятая строчка довольно стремная: мы пытаемся инициализировать переменную значением millis до того, как настроена служба времени Ардуино.

Правильнее будет:

...time = 0;

Green
Offline
Зарегистрирован: 01.10.2015

А эта странная манера писать по русски латиницей...

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Green пишет:

А эта странная манера писать по русски латиницей...

А что в русском языке означает слово "тиме"?

PS. Еще более странная манера - смешивать английские слова с русскими, записанными латиницей.

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

andriano пишет:

А что в русском языке означает слово "тиме"?

Имя "Тима", сокращённое от "Тимофей" в дательном падеже.

Green
Offline
Зарегистрирован: 01.10.2015

Типа, Тиме присвоить миллис.

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

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

andriano пишет:

А что в русском языке означает слово "тиме"?

Имя "Тима", сокращённое от "Тимофей" в дательном падеже.

Петрович, это ж не Паскаль. "Тиме" и "тиме" - разные слова.

Kakmyc
Offline
Зарегистрирован: 15.01.2018

Ладно хоть не транслитом пишут.
А то всякое бывает:

unsigned long BPeM9l=millis();

Green
Offline
Зарегистрирован: 01.10.2015

Kakmyc пишет:
А что бы не включать/перезапускать в 00:00, достаточно секунды хранить/считать в формате time_t. Ну соответственно подключив TimeLib.h .

Формат тут не поможет. От выключения спасёт 3 батарейки и диод. Ну и частоту понизить, если в сон не впадать.

SLKH
Offline
Зарегистрирован: 17.08.2015

Roman9595 пишет:

Здравствуйте, заранее извиняюсь если не в данном разделе написал тему. 
я начинающий из начинающих изучать Ардуино. Помогите собрать простую программку для Ардуино. Или кто-то даст пример использования управление выходом по времени не используя delay. Хочу полив для теплицы,
В комплекте arduino IDE есть раздел "Файл -> Примеры"
Загружайте, компилируйте (если надо, подключайте периферию на макетной плате) и разбирайте тексты программ-примеров. 
 
Потом перейдете к теплице, ибо реальная теплица не программируется на уровне "я начинающий из начинающих".