Как Blink встроить в таймер

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Заработала! Пока без часов... Коротенький скетч.

bwn
Offline
Зарегистрирован: 25.08.2014

Ну и ладненько, по остальному программированию, вроде Влад взялся, не полезу.

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

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

Я сегодня буду немного занят. У меня в пять ктра чуть дом не загорелся, хорошо, что нос чуткий. Ни с того ни с сего загорелся газовый кран над плитой. Сейчас поеду н строительный рынок покупать кран, подводку, и т.д. И кухонный фартук, вместо сгоревшего.

Я - 47 летний человек с университетским образованием НЕ МОГУ ПОНЯТь - с чего??? Да, у меня не было изолирующих вставок, но их никогда не было.

В 5 утра в Мос. обл. не было ни молний ни грозы - ясное небо. Мистика какая-то. Теперь - аж трясет от страха: а если бы я не проснулся от запах?

Сорри, за жалобы - остальное завтра.

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Красивый код от qwone но почему не выдает сигнал на 13 ногу? Хорошо загружается и не мигает...


#include "RTClib.h"
//-------------Cl_tik_tak-----------------
const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};
const byte num = 6;
class Cl_tik_tak {
    byte takt;
    byte pin;
    bool led;
    uint32_t past;
  public:
    Cl_tik_tak(byte _pin): pin(_pin) {}
    void setup() {
      pinMode(pin, OUTPUT);
      takt = 0;
      past = millis();
      digitalWrite(pin, led = 0);
    }
    void loop() {
      if (millis() - past > Map[takt]) {
        past = millis();
        digitalWrite(pin, led = !led);
        ++takt;
        if (takt >= num) takt = 0;
      }
    }
};
//-------------компоновка-----------------
RTC_DS1307 RTC;
Cl_tik_tak Tak(/*нога*/13);
//--------------main---------------------
void setup() {
  Tak.setup();
}

void loop() {
  DateTime now = RTC.now();
  if  ( (now.hour() >= 5 ) && ( (now.hour() <= 21 )))  Tak.loop();
}

 

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Попытка пристроить в этот код вывод на LCD 1602 время и добавления в код библиотек и маленького кусочка кода (cnhjrb 37-41) произошло неожиданное. Код начал работать по написанной программе. Выдает на 13 ногу весь "Map"

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Подключение библиотеки для LCD с кириллицей
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x38,16,2);
//-------------Cl_tik_tak-----------------
const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};
const byte num = 6;
class Cl_tik_tak {
    byte takt;
    byte pin;
    bool led;
    uint32_t past;
  public:
    Cl_tik_tak(byte _pin): pin(_pin) {}
    void setup() {
      pinMode(pin, OUTPUT);
      takt = 0;
      past = millis();
      digitalWrite(pin, led = 0);
    }
    void loop() {
      if (millis() - past > Map[takt]) {
        past = millis();
        digitalWrite(pin, led = !led);
        ++takt;
        if (takt >= num) takt = 0;
      }
    }
};
//-------------компоновка-----------------
RTC_DS1307 RTC;
Cl_tik_tak Tak(/*нога*/13);
//--------------main---------------------
void setup() {
  Tak.setup();

lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");

  
}


  



void loop() {
  DateTime now = RTC.now();
  if  ( (now.hour() >= 5 ) && ( (now.hour() <= 21 )))  Tak.loop();

  //вывод символов на дисплей//
   
   
 
  
}

 

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

braslav пишет:

Попытка пристроить в этот код вывод на LCD 1602 время и добавления в код библиотек и маленького кусочка кода (cnhjrb 37-41) произошло неожиданное. Код начал работать по написанной программе. Выдает на 13 ногу весь "Map"

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Подключение библиотеки для LCD с кириллицей
#include "RTClib.h"
LiquidCrystal_I2C lcd(0x38,16,2);
//-------------Cl_tik_tak-----------------
const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};
const byte num = 6;
class Cl_tik_tak {
    byte takt;
    byte pin;
    bool led;
    uint32_t past;
  public:
    Cl_tik_tak(byte _pin): pin(_pin) {}
    void setup() {
      pinMode(pin, OUTPUT);
      takt = 0;
      past = millis();
      digitalWrite(pin, led = 0);
    }
    void loop() {
      if (millis() - past > Map[takt]) {
        past = millis();
        digitalWrite(pin, led = !led);
        ++takt;
        if (takt >= num) takt = 0;
      }
    }
};
//-------------компоновка-----------------
RTC_DS1307 RTC;
Cl_tik_tak Tak(/*нога*/13);
//--------------main---------------------
void setup() {
  Tak.setup();

lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.print("Hello, world!");

  
}


  



void loop() {
  DateTime now = RTC.now();
  if  ( (now.hour() >= 5 ) && ( (now.hour() <= 21 )))  Tak.loop();

  //вывод символов на дисплей//
   
   
 
  
}

 

День добрый, то есть все заработало как надо ?

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Паузы не знаю как увеличить... И не знаю, как будет работать по таймеру... С утра читал пост от wdrakula, последовательности действий могут легко с ума свести, но это нужно, конечно , понимать.

 

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

Не хотите учить автоматное программирование - вот вам добавка к программе Квона с часами в его стиле..

Но на контроллерах ООП - нонсенс. Хотя есть разные мнения. Мое мнение - только автоматное програмирование. Но нужно сперва голову настроить.

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Подключение библиотеки для LCD с кириллицей
#include "RTClib.h"

LiquidCrystal_I2C lcd(0x38,16,2);

//----Класс отображающий время на ЛСД 1602
class ShowTime {
  uint32_t om;
  public:
  ShowTime() {};
  void setup() {om=millis();}
  void loop(DateTime now) 
  {
    char s[16] = "  00:00:00   ";
    uint32_t cm = millis();
    if (cm - om > 999)
    {
      lcd.setCursor(0,1);
      s[2] = '0'+ now.hour()/10;
      s[3] = '0'+ now.hour()%10;
      s[5] = '0'+ now.minute()/10;
      s[6] = '0'+ now.minute()%10;
      s[8] = '0'+ now.second()/10;
      s[9] = '0'+ now.second()%10;
      lcd.print(s);
      om=cm;
    }
  }
};

//-------------Cl_tik_tak-----------------
const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};
const byte num = 6;


class Cl_tik_tak {
    byte takt;
    byte pin;
    bool led;
    uint32_t past;
  public:
    Cl_tik_tak(byte _pin): pin(_pin) {}
    void setup() {
      pinMode(pin, OUTPUT);
      takt = 0;
      past = millis();
      digitalWrite(pin, led = 0);
    }
    void loop() {
      if (millis() - past > Map[takt]) {
        past = millis();
        digitalWrite(pin, led = !led);
        ++takt;
        if (takt >= num) takt = 0;
      }
    }
};
//-------------компоновка-----------------
RTC_DS1307 RTC;
Cl_tik_tak Tak(/*нога*/13);
ShowTime showTime;
//--------------main---------------------
void setup() {
  Tak.setup();
  showTime.setup();

lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(2,0);
  lcd.print("Mazel Tov!");

  
}

void loop() {
  DateTime now = RTC.now();
  showTime.loop(now);
  if  ( (now.hour() >= 5 ) && ( (now.hour() <= 21 )))  Tak.loop();
 
}

 

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

braslav пишет:

Паузы не знаю как увеличить... И не знаю, как будет работать по таймеру... С утра читал пост от wdrakula, последовательности действий могут легко с ума свести, но это нужно, конечно , понимать.

 

 

const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};

ваш массив пауз в миллисекнудах,  и это циклически, дело за вами. 

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Огромное спасибо. И за поздравление тоже. Я не знаю что такое автоматное программирование

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

Если вы хотите что-то менять в программе Квона, то меняете массив Map[].

там перечислены времена включения и отключения, по очереди в миллисек.

сейчас там так:

ВЫКЛ  1000

ВКЛ       500

ВЫКЛ  2000

ВКЛ      1500

ВЫКЛ  2000

ВКЛ      3000

следующей строкой (№34 в моем посте) прописано к-во элементов в массиве.

Её можно записать так:

const byte num = sizeof(Map)/sizeof(int);

Тогда не нужно ни о чем лишнем думать.

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

Да. и в догонку: времен в массиве должно быть четное к-во. Первое число - это ПАУЗА, а не ВКЛЮЧНИЕ. Все понятно?

----

Автоматное программирование - это то, чему я попробовал вас научить: состояния и сигналы переходов между ними. Но вирус ООП от Квона оказался заразен для новичка ;) . О вей'з мир!

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

wdrakula пишет:

Да. и в догонку: времен в массиве должно быть четное к-во. Первое число - это ПАУЗА, а не ВКЛЮЧНИЕ. Все понятно?

----

Автоматное программирование - это то, чему я попробовал вас научить: состояния и сигналы переходов между ними. Но вирус ООП от Квона оказался заразен для новичка ;) . О вей'з мир!

 

Злой Вы )) им много сарказма, ну не все сразу понимают, тем более классы .

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

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

Alexandsvoi пишет:

Злой Вы ))

Вы просто не поняли. То что я представил - это не мой код совсем. Есть тут на форуме любитель классов. Это его код. Я для ТС (Топик Страртера) просто немного добавил.

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

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

Для такого простого кода классы реально не нужны, для раздутого с кучей объектов я только ЗА классы.

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

У АтМеги 328 (Уно, Нано и пр.) 2 килобайта памяти. Какие к е-маме классы? Какие "раздутые" проекты? Вы сейчас о чем говорили?

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

[quote=wdrakula]

У АтМеги 328 (Уно, Нано и пр.) 2 килобайта памяти. Какие к е-маме классы? Какие "раздутые" проекты? Вы сейчас о чем говорили?

[/quote

Было сказало в общем, причем здесь Atmega, мы же здесь не умничаем, просто общаемся.

Я высказал мысли вслух, я отдаю пальму первенства Вам, флудить дальше нет желания.

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

Аз ох'н вей! И что мне теперь с этой пальмой делать?

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

"состояния и сигналы переходов между ними"  я это прекрасно понял. Только я боюсь не успею все это изучить. Есть очень простое программирование, как блинк, например. Здесь нет ни одного вопроса

 
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}
 
// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}
 
А вот другой как будто написан на другом языке:
 
const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};
const byte num = 6;
class Cl_tik_tak {
    byte takt;
    byte pin;
    bool led;
    uint32_t past;
  public:
    Cl_tik_tak(byte _pin): pin(_pin) {}
    void setup() {
      pinMode(pin, OUTPUT);
      takt = 0;
      past = millis();
      digitalWrite(pin, led = 0);
    }
    void loop() {
      if (millis() - past > Map[takt]) {
        past = millis();
        digitalWrite(pin, led = !led);
        ++takt;
        if (takt >= num) takt = 0;
      }
    }
};
 
Если бы у меня было побольше времени. Мне 67 лет исполнилось 7 июля. НО этот проект мой, думаю, не последний. Придется немного подучиться в том числе и программному программированию.
 
Таймер, я ему поставил до 14 часов: if  ( (now.hour() >= 5 ) && ( (now.hour() <= 21 )))  Tak.loop(); не сработал

 

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

мне 48 в ноябре будет, не так все страшно! ;)

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

========================================

А про ваш возраст я сразу все понял, поэтому и стал возиться. Это здорово, в 67 осваивать новое!

Малолетних новичков мы тут на форуме гоняем учебники читать. А осваивать програмирование в 67 - респект!

Помогу, чем смогу.

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Вставил в эту конструкцию выключиться в 14 часов, моргалка не выключилась.

if  ( (now.hour() >= 5 ) && ( (now.hour() <= 14 )))  Tak.loop();

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

braslav пишет:

Вставил в эту конструкцию выключиться в 14 часов, моргалка не выключилась.

if  ( (now.hour() >= 5 ) && ( (now.hour() <= 14 )))  Tak.loop();

Могу предполжить что условие времени проверяется  только один раз при запуске программы, как раз совпало, что  время было меньше 14 часов, и ушло в вечный цикл Tak.loop();.

в цикле время вообще не анализируется, только выполняются паузы на включение и выключение и так бесконечно. 

 

Так ли это ?

bwn
Offline
Зарегистрирован: 25.08.2014

Alexandsvoi]</p> <p>[quote=wdrakula пишет:

У АтМеги 328 (Уно, Нано и пр.) 2 килобайта памяти. Какие к е-маме классы? Какие "раздутые" проекты? Вы сейчас о чем говорили?

[/quote

Было сказало в общем, причем здесь Atmega, мы же здесь не умничаем, просто общаемся.

Я высказал мысли вслух, я отдаю пальму первенства Вам, флудить дальше нет желания.

Мы все таки на сайте "Arduino.ru".  Говорим Партия - подразумеваем Ленин, говорим Ленин......(с). , тьфу, сбился.))))

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

bwn]</p> <p>[quote=Alexandsvoi пишет:

wdrakula пишет:

У АтМеги 328 (Уно, Нано и пр.) 2 килобайта памяти. Какие к е-маме классы? Какие "раздутые" проекты? Вы сейчас о чем говорили?

[/quote

Было сказало в общем, причем здесь Atmega, мы же здесь не умничаем, просто общаемся.

Я высказал мысли вслух, я отдаю пальму первенства Вам, флудить дальше нет желания.

Мы все таки на сайте "Arduino.ru".  Говорим Партия - подразумеваем Ленин, говорим Ленин......(с). , тьфу, сбился.))))

 

 Конкретный вопрос ко мне есть ?

bwn
Offline
Зарегистрирован: 25.08.2014

Alexandsvoi пишет:

 Конкретный вопрос ко мне есть ?

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

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

bwn пишет:

Alexandsvoi пишет:

 Конкретный вопрос ко мне есть ?

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

адекватно сарказму, не более того. 

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

Alexandsvoi пишет:

Могу предполжить что условие времени проверяется  только один раз при запуске программы, как раз совпало, что  время было меньше 14 часов, и ушло в вечный цикл Tak.loop();.

в цикле время вообще не анализируется, только выполняются паузы на включение и выключение и так бесконечно. 

 

Так ли это ?

Зачем Вы лезете в то, в чем разбираетесь, как свинья в апельсинах?

Где там цикл нашелся? Я подслеповт стал - покажите, плз. А если не показываете - то нахер с пляжа!

Умников, блин, развелось! Посрать негде!

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

braslav пишет:

Вставил в эту конструкцию выключиться в 14 часов, моргалка не выключилась.

if  ( (now.hour() >= 5 ) && ( (now.hour() <= 14 )))  Tak.loop();

Время на экран выводите? Это главный вопрос. Скорее всего время не модуле не установлено.

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

 

 

 

[/quote]

Зачем Вы лезете в то, в чем разбираетесь, как свинья в апельсинах?

Где там цикл нашелся? Я подслеповт стал - покажите, плз. А если не показываете - то нахер с пляжа!

Умников, блин, развелось! Посрать негде!

[/quote]

 

внимательно смотрим и не нервничаем. проверьье ваши же правки. 

bwn
Offline
Зарегистрирован: 25.08.2014

Вообще то, " <= 14 ", в 14 оно и не выключится, это случится в 15.

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

Alexandsvoi пишет:

внимательно смотрим и не нервничаем. проверьье ваши же правки. 

еще раз: НЕМЕДЛЕННО показываем цикл или ужОсе покидаем форум нах!

Ты, шлемазл, с мной спорить собрался? Ну-ну..

 

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

bwn пишет:

Вообще то, " <= 14 ", в 14 оно и не выключится, это случится в 15.

ясен пень!

Спасибо тебе, друг, за поддержку, а то после вчерашнего происшествия я дерганый немного!

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

wdrakula пишет:

Alexandsvoi пишет:

внимательно смотрим и не нервничаем. проверьье ваши же правки. 

еще раз: НЕМЕДЛЕННО показываем цикл или ужОсе покидаем форум нах!

Ты, шлемазл, с мной спорить собрался? Ну-ну..

 

у Вас проблемы на нервной почве.

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

Alexandsvoi пишет:

у Вас проблемы на нервной почве.

Да. Тебе легче стало?

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

wdrakula пишет:

Alexandsvoi пишет:

у Вас проблемы на нервной почве.

Да. Тебе легче стало?

Мне обычно, даже не пытаюсь ничего доказывать,  смысл, Вас инфаркт хватит.

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

Alexandsvoi пишет:

Мне обычно, даже не пытаюсь ничего доказывать,  смысл, Вас инфаркт хватит.

без инфаркта, и без личностей, как-бы три шага назад.

Сделай любезность - покажи, что ты имел ввиду?

В методе loop() у объекта Cl_tik_tak нет циклов.

Функция loop() программы, считавает и проеряет время, перед вызовом метода loop() у объекта.

Так что ты сказать-то хотел?

---------

Или ты из тех, кто не признает ошибку? Просто интересно.

 

bwn
Offline
Зарегистрирован: 25.08.2014

wdrakula пишет:

Спасибо тебе, друг, за поддержку, а то после вчерашнего происшествия я дерганый немного!

Та ладно, не морочься, небось гибкая подводка в металлооплетке была?

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

wdrakula пишет:

Alexandsvoi пишет:

Мне обычно, даже не пытаюсь ничего доказывать,  смысл, Вас инфаркт хватит.

без инфаркта, и без личностей, как-бы три шага назад.

Сделай любезность - покажи, что ты имел ввиду?

В методе loop() у объекта Cl_tik_tak нет циклов.

Функция loop() программы, считавает и проеряет время, перед вызовом метода loop() у объекта.

Так что ты сказать-то хотел?

---------

Или ты из тех, кто не признает ошибку? Просто интересно.

 

и все же ко мне на ВЫ.

По теме  :

1. условие явно не выполнилось из - за <=14, то есть выполнится в 15 часов

2. метод  loop() здесь для меня спорный, точно ли условие проверяется , я не уверен.?

3. и банальное - запущены ли часы ?

 

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

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

За методом Tak.loop()  обычный loop(), вращется все внутри, однажды проверив условие.

Я не исключаю моей ошибки.

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

Alexandsvoi пишет:

Я не исключаю моей ошибки.

Ну слава Б..гу!

--------------------

1. Я действительно сегодня немного дерганый, сорри.

2. Тут на форуме, кто постоянно, знают, что не нужно со мной спорить. По нескольким причинам:

2.1. Если мне без спора указать на ошибку я ВСЕГДА признаю свои ошибки.

2.2. У меня и правда более, чем хорошее образование - МехМат МГУ 86-91, кафедра мат.логики.

2.3 Я всю жизнь программирую. На всем, что создали люди.

Понятно, что в сети это голословно, но я очень жесткий ПРОТИВНИК АНОНИМНОСТИ в сети, меня очень легко проверить. я вообще никогда не вру. (на разве что жене ;) )

2.4. Я никогда не задаю вопросов на форуме - только отвечаю... если это о чем-то говорит.

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

wdrakula пишет:

Alexandsvoi пишет:

Я не исключаю моей ошибки.

Ну слава Б..гу!

--------------------

1. Я действительно сегодня немного дерганый, сорри.

2. Тут на форуме, кто постоянно, знают, что не нужно со мной спорить. По нескольким причинам:

2.1. Если мне без спора указать на ошибку я ВСЕГДА признаю свои ошибки.

2.2. У меня и правда более, чем хорошее образование - МехМат МГУ 86-91, кафедра мат.логики.

2.3 Я всю жизнь программирую. На всем, что создали люди.

Понятно, что в сети это голословно, но я очень жесткий ПРОТИВНИК АНОНИМНОСТИ в сети, меня очень легко проверить. я вообще никогда не вру. (на разве что жене ;) )

2.4. Я никогда не задаю вопросов на форуме - только отвечаю... если это о чем-то говорит.

 

Сегодня протестирую данный так называемый метод  loop() с выводом в debug , по сути он не должен  работать. 

На рабочем месте у меня такой бяки нет  и слава Богу).

Для дешевых и простых проектов это самое то. 

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

Alexandsvoi пишет:

За методом Tak.loop()  обычный loop(), вращется все внутри, однажды проверив условие.

Если спросите без пафоса, я объясню спокойно, как все устроено. Судя по репликам, вы немного плаваете в этом вопросе.

Если стесняетесь спросить "на виду" - можно спросить лично, моя почта = мой ник на жмейле. это тут все знают.

слово loop  в наименовании метода класса - это просто слово. можно его заменить на zhopa в описании и вызове.

Это придумал местный любитель классов. Для прозрачности - типа метод setup будем вызывать из сетапа, а метод loop из луупа. Некое единообразие человек продвигает. Вот его тема. Прочитай. Он тоже начинающий, как и ты, но возможно более продвинут.

================

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

Alexandsvoi
Offline
Зарегистрирован: 11.07.2017

wdrakula пишет:

Alexandsvoi пишет:

За методом Tak.loop()  обычный loop(), вращется все внутри, однажды проверив условие.

Если спросите без пафоса, я объясню спокойно, как все устроено. Судя по репликам, вы немного плаваете в этом вопросе.

Если стесняетесь спросить "на виду" - можно спросить лично, моя почта = мой ник на жмейле. это тут все знают.

слово loop  в наименовании метода класса - это просто слово. можно его заменить на zhopa в описании и вызове.

Это придумал местный любитель классов. Для прозрачности - типа метод setup будем вызывать из сетапа, а метод loop из луупа. Некое единообразие человек продвигает. Вот его тема. Прочитай. Он тоже начинающий, как и ты, но возможно более продвинут.

================

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

Про старость: я такой же.

Про loop  сейчас согласен, это обычный метод, просто не совсем удачное название.

Даже проверять не буду,  просто проглядел. 

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

bwn пишет:

wdrakula пишет:

Спасибо тебе, друг, за поддержку, а то после вчерашнего происшествия я дерганый немного!

Та ладно, не морочься, небось гибкая подводка в металлооплетке была?

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

Поскольку она рядом с плитой стояла, то мысль такая:

1. сгорела помпа или ТЭН в посудомойке,

2. на корпус пришла фаза, или "почти" фаза (например - после ТЭНа)

3. с корпуса ПММ на корпус плиты.

4. гибкой подводки, по оплетке на газовую трубу, которая, ясен пряник, заземлена.

5. на стыке оплетки и гайки шланга - самое узкое место - нагрев, огонь.

6. еще три минуты - и я сегондя уже бы ничего не писал и никого матом не крыл.

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Хватит сорится. В код своего немного добавил.  Загрузил раньше 16 часов, устройство включилось вовремя, а вот выключаться не захотело.

#include <Wire.h>
#include <LiquidCrystal_I2C.h> // Подключение библиотеки для LCD с кириллицей
#include "RTClib.h"

LiquidCrystal_I2C lcd(0x38,16,2);
// *******************************************
// Здесь задаем время включения и выключения
int on=16; // Часов
int off=17; // Часов
// *******************************************
//----Класс отображающий время на ЛСД 1602
class ShowTime {
  uint32_t om;
  public:
  ShowTime() {};
  void setup() {om=millis();}
  void loop(DateTime now) 
  {
    char s[16] = "  00:00:00   ";
    uint32_t cm = millis();
    if (cm - om > 999)
    {
      lcd.setCursor(2,1);
      s[2] = '0'+ now.hour()/10;
      s[3] = '0'+ now.hour()%10;
      s[5] = '0'+ now.minute()/10;
      s[6] = '0'+ now.minute()%10;
      s[8] = '0'+ now.second()/10;
      s[9] = '0'+ now.second()%10;
      lcd.print(s);
      om=cm;
    }
  }
};

//-------------Cl_tik_tak-----------------
const int Map[] = {1000, 500, 2000, 1500, 2000, 3000};
const byte num = 6;


class Cl_tik_tak {
    byte takt;
    byte pin;
    bool led;
    uint32_t past;
  public:
    Cl_tik_tak(byte _pin): pin(_pin) {}
    void setup() {
      pinMode(pin, OUTPUT);
      takt = 0;
      past = millis();
      digitalWrite(pin, led = 0);
    }
    void loop() {
      if (millis() - past > Map[takt]) {
        past = millis();
        digitalWrite(pin, led = !led);
        ++takt;
        if (takt >= num) takt = 0;
      }
    }
};
//-------------компоновка-----------------
RTC_DS1307 RTC;
Cl_tik_tak Tak(/*нога*/13);
ShowTime showTime;
//--------------main---------------------
void setup() {
  Tak.setup();
  showTime.setup();

lcd.init();                      // initialize the lcd 
 
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(2,0);
  lcd.print(on);
lcd.print("-ON, ");
  lcd.print(off);
  lcd.print("-OFF");
}

void loop() {
  DateTime now = RTC.now();
  showTime.loop(now);
  if  ( (now.hour() >= on ) && ( (now.hour() <= off )))  Tak.loop();
 
}

 

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

границу выключения поставьте строгое условие, то есть не <=, а просто <.

bwn
Offline
Зарегистрирован: 25.08.2014

wdrakula пишет:

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

4. гибкой подводки, по оплетке на газовую трубу, которая, ясен пряник, заземлена.

5. на стыке оплетки и гайки шланга - самое узкое место - нагрев, огонь.

Надеюсь, теперь обычный газовый, резиновый.

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

Не. Сильфон и изолир. вставка

braslav
braslav аватар
Offline
Зарегистрирован: 25.02.2017

Очередная проверка. Заметил, что код просит загрузку библиотеки Wire, а у меня такой не установлено. Может она не нужна? Код вроде не содержит обращений к этой библиотеке кроме требования подгрузить.

В 18.00 не включилось.

bwn
Offline
Зарегистрирован: 25.08.2014

braslav, что же Вы над собой издеваетесь? Поставьте пока вместо часов минуты и эксперементируйте с ними. ИМХО.

UPD: "В 18.00 не включилось", а покажите 86 строку Вашего кода, боюсь, прошли по граблям с другой стороны.