Помогите с кодом

zorg807
Offline
Зарегистрирован: 31.01.2018

Модуль реального времени DS1302 и одно реле.

Время вымводит, он реле не работает

#include <RTC.h>
#define PIN_RELAY 5
RTC time;
int a=35;
int b=10;
int c=20;

void setup() {
Serial.begin(9600);
pinMode(PIN_RELAY, OUTPUT); 
digitalWrite(PIN_RELAY, HIGH); 
delay(300);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(a,b,c); // 35 сек, 10 мин, 20 час
}

void loop(){
 if(millis()%1000==0) // если прошла 1 секунда
      Serial.println(time.gettime("H:i:s")); // выводим время
     delay(1);     
 if (a=45) 
    digitalWrite(PIN_RELAY, LOW); // в 45 секунд включать светодиод
 if (a=15) 
    digitalWrite(PIN_RELAY, HIGH); // в 15 секунд выключать светодиод
}

 

 

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

Че, вторая попытка?
Вставь код по правилам и подумай, если а =35, то с какого хрена оно станет 45?

zorg807
Offline
Зарегистрирован: 31.01.2018
#include <RTC.h>
#define PIN_RELAY 5
RTC time;
int a=35;
int b=10;
int c=20;
 
void setup() {
Serial.begin(9600);
pinMode(PIN_RELAY, OUTPUT); 
digitalWrite(PIN_RELAY, HIGH); 
delay(300);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(a,b,c); // 35 сек, 10 мин, 20 час
}
 
void loop(){
 if(millis()%1000==0) // если прошла 1 секунда
      Serial.println(time.gettime("H:i:s")); // выводим время
     delay(1);     
 if (a==45) 
    digitalWrite(PIN_RELAY, LOW); // в 45 секунд включать светодиод
 if (a==15) 
    digitalWrite(PIN_RELAY, HIGH); // в 15 секунд выключать светодиод
}

 

zorg807
Offline
Зарегистрирован: 31.01.2018

Написал

 

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

zorg807 пишет:

Написал

Ну а над вопросом подумал? Вот либо сам придешь к решению, либо никак.

zorg807
Offline
Зарегистрирован: 31.01.2018

Я исправил на ==

Уже давно заметил, на сайте не поменял

zorg807
Offline
Зарегистрирован: 31.01.2018

Но все равно не работает 

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

Еще раз: "с какого хрена оно станет 45?"

zorg807
Offline
Зарегистрирован: 31.01.2018

время идет и становится 45

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

И не используй конструкции, которые не понимаешь. Вот первая после void loop()(кстати при вставке кода есть опция "вставлять номера строк) строчка, что она по твоему делает? 

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

zorg807 пишет:

время идет и становится 45

В какой строке оно им становится?
Вставь после своего сериала еще один Serial.println(a,DEC); узнаешь много нового.

zorg807
Offline
Зарегистрирован: 31.01.2018

Я так и думал, но я не знаю как взять число которое меняется 

 

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

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

zorg807
Offline
Зарегистрирован: 31.01.2018

Спасибо! вроде сделал 

#include <RTC.h>
#define PIN_RELAY 5
RTC time;

void setup() {
Serial.begin(9600);
pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
delay(300);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(35,10,20); // 35 сек, 10 мин, 20 час

}

void loop(){
 if(millis()%1000==0) // если прошла 1 секунда
      Serial.println(time.gettime("H:i:s")); // выводим время
     delay(1);     
 if (time.seconds==45)
    digitalWrite(PIN_RELAY, LOW);
 if (time.seconds==15) 
    digitalWrite(PIN_RELAY, HIGH);  
}

 

zorg807
Offline
Зарегистрирован: 31.01.2018

Можешь посмотреть? Проблем не будет?

zorg807
Offline
Зарегистрирован: 31.01.2018

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

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

Строку setTime закомментируй. Оно не сбрасывается, а по новой переписывается. И мне кажется или время в сериал печатается гораздо чаще, чем раз в секунду?

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

bwn пишет:

И мне кажется или время в сериал печатается гораздо чаще, чем раз в секунду?

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

АФТАР. после условий IF привыкай ставить фигурные скобки - иначе очень скоро ты удивишься...

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

OK, логично. Он сумел весь луп в иф-а завернуть. Ну-ну.

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

Знаешь, мне вот интересно, он хочет научится или нужен скетч. Если скетч, то готов написать, чтобы убрался и не плодил темы (уже третья родилась). Причем в первой я ему давал ссылку, где все это сделано (просто прочитать, без денег), а за деньги разговор пошел когда начал хамить (чуть выше у него потерто). Никому здесь эти гроши не нужны.

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

bwn пишет:

Знаешь, мне вот интересно, он хочет научится или нужен скетч. 

Ему нужен  только скетч, потому-что глупенький еще, на примере начнет учится, дальше больше, а там либо научится , либо так и будет стоять с протянутой рукой. Через полгода увидим :) Это как на машине учится ездить .

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

NE_XT пишет:

 Это как на машине учится ездить .

вот именно. А он, вместо того чтоб самому учиться - пытается инструктора уговорить, чтобы он его по бабам покатал.

NE_XT - у тебя регистрация 6 лет назад, а ты до сих пор явно себя новичком чувствуешь... не покатила ардуина-то?

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

bwn пишет:

Знаешь, мне вот интересно, он хочет научится или нужен скетч. Если скетч, то готов написать, чтобы убрался и не плодил темы (уже третья родилась).

не надо ему ничего писать. Пусть мучается сам. Если не осилит - значит оно ему не надо.

Чем наш форум, к примеру, отличается от форума, скажем, автомобилистов или огородников? На те форумы никто не приходит просить, чтоб ему кто-то огород вскопал или колодки поменял. А попросит - посмотрят как на дурака и пошлют подальше. И вовсе не потому, что на форуме все профессиональные слесаря.

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

zorg807
Offline
Зарегистрирован: 31.01.2018
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <RTC.h>
#include <DHT.h>
#define PIN_RELAY 5
#define DHTPIN A0
#define DHTTYPE DHT11
RTC time;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размерность дисплея

void setup() {
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
Serial.begin(9600);
dht.begin();
pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
digitalWrite(PIN_RELAY, HIGH); // Выключаем реле
delay(300);
time.begin(RTC_DS1302,10,13,12); //вывод RST(10), вывод CLK(13), вывод DAT(12)
time.settime(55,10,20); // 55 сек, 10 мин, 20 час

}

void loop(){
  int h=time.Hours;
  int i=time.minutes;
  int s=time.seconds;
  int v = dht.readHumidity();
  int t = dht.readTemperature();
  float f = dht.readTemperature(true);
 if(millis()%1000==0) // если прошла 1 секунда
lcd.setCursor(0, 0); 
lcd.print(h,1);
lcd.setCursor(2, 0);
lcd.print(":");
lcd.setCursor(3, 0);
lcd.print(i,1);
lcd.setCursor(9, 0);
lcd.print("Hum=  % ");
lcd.setCursor(13, 0);
lcd.print(v, 1);
lcd.setCursor(8, 1);
lcd.print("Temp=  C ");
lcd.setCursor(13, 1);
lcd.print(t,1);
 Serial.println(time.gettime("H:i:s")); // выводим время
    delay(1000);     
 if (time.seconds==00){
    digitalWrite(PIN_RELAY, LOW);}
 if (time.seconds==30){
    digitalWrite(PIN_RELAY, HIGH);} 
}

 

zorg807
Offline
Зарегистрирован: 31.01.2018

тут много косяков?

это уже конечный этам 

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

и чо работает? - не должно.

Вы упорно не читаете того, что вам в форуме пишут. Нафига тогда выкладывать свои поделки? - не засоряйте форум.

zorg807
Offline
Зарегистрирован: 31.01.2018

Строку setTime закомментируй.  

это какая?

zorg807
Offline
Зарегистрирован: 31.01.2018

Не заметил что вы писали. все работает в пределах 5 минут

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

zorg807 пишет:

все работает в пределах 5 минут

это случайность. У тебя в коде несколько косяков скомпенсировали друг друга.

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

 

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

Ардуино IDE, "Правка", "Поиск", "settime", ну если в двадцати строчках глазами не видите. Потом две косых палочки поставить (спереди).
Уже три раза про 32 строку сказали, и упорно по граблям. Для меня в иф-е отсутствие скобок, впадение в ересь, караемое сжиганием на костре из учебников программирования. Честно говоря думал, что вообще должно ошибку давать.

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

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

bwn пишет:

 Для меня в иф-е отсутствие скобок, впадение в ересь, караемое сжиганием на костре из учебников программирования. Честно говоря думал, что вообще должно ошибку давать.

Так тут интереснее у автора выходит :) - без скобок одна строка считается в IF. а остальные - в основном ходе программы.

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

NE_XT пишет:

Ему нужен  только скетч, потому-что глупенький еще, на примере начнет учится, дальше больше, а там либо научится , либо так и будет стоять с протянутой рукой. Через полгода увидим :) Это как на машине учится ездить .

От кстати музыка навеяла, за почти шесть лет приобщения, чего бы самому мать Терезу не изобразить, борец за права новичков и противник меркантильности форума? Тем паче задача ню совсем начального уровня. Или ты как родные депутаты, только орально умеешь?

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

b707 пишет:

Так тут интереснее у автора выходит :) - без скобок одна строка считается в IF. а остальные - в основном ходе программы.

Растолмачь, плиз. То есть у него по скетчу из 13 поста получается, сериал идет из иф-а, а остальные в штатном порядке? 

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

bwn пишет:

Растолмачь, плиз. То есть у него по скетчу из 13 поста получается, сериал идет из иф-а, а остальные в штатном порядке? 

ага.

Код

if (a>0)
 functionA();
 functionB();
 functionC();

аналогичен такому:

if (a>0) {
 functionA();}
functionB();
functionC();

 

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

Круто, спасибо, не знал о такой фишке.))))

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

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

bwn пишет:

От кстати музыка навеяла, за почти шесть лет приобщения, чего бы самому мать Терезу не изобразить, борец за права новичков и противник меркантильности форума? Тем паче задача ню совсем начального уровня. Или ты как родные депутаты, только орально умеешь?

Бредятина, я вообще-то ботаник, и все что я могу делать хорошо - то  это многие принимают перроально.

Ардуино, это увлечение детское, как и программирование в целом, если кто-то сделал, это целью своей жизни, мне его искренне жаль, в жизни это больше мешает, чем приносит пользу. Лучше иметь дочь проститутку, чем сына программиста, и не дай бог конечно папу.

 

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

NE_XT пишет:

 программирование в целом, если кто-то сделал, это целью своей жизни, мне его искренне жаль

а увлечением всей жизни - разрешаете?

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

b707 пишет:

NE_XT пишет:

 программирование в целом, если кто-то сделал, это целью своей жизни, мне его искренне жаль

а увлечением всей жизни - разрешаете?

Да конечно, я тоже балуюсь шестой год :)

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

bwn пишет:

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

да он как-то вообще замедленно реагирует на подсказки... как будто у него внутри код на делеях, а не на миллис :)

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

NE_XT пишет:

Ардуино, это увлечение детское, как и программирование в целом, если кто-то сделал, это целью своей жизни, мне его искренне жаль, в жизни это больше мешает, чем приносит пользу.

А накуя тогда на форуме сидеть, если не интересно? Высказать авторитетное мнение?
Я от ваще хрен знает кто, и металлург, и торгаш, и администратор, а теперь фермер-птицевод-торгаш и сутяжник по совместительству, пенсию свою хочу у государства отобрать, та программирую для дома для семьи. И ничего, все получается помаленьку.

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

NE_XT пишет:

 в жизни это больше мешает, чем приносит пользу.

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

По мне так просто ботаников, или врачей, или металлургов - дофига, а металлургов-программистов или программистов-врачей- на пару порядков меньше. Конкурентное преимущество.

 

NE_XT
NE_XT аватар
Offline
Зарегистрирован: 22.05.2012

bwn пишет:
А накуя тогда на форуме сидеть, если не интересно? 

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

Зима обычная причина серфинга в интернете.

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

NE_XT пишет:

 мне нравится смотреть за людьми и их поведением. 

Зима обычная причина серфинга в интернете.

ну то есть по теме форума не особо тянете, поэтому приходите потроллить ?

А какой был пафос на тему мерзких программишек, которые самоутверждаются в инете, а?

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

NE_XT пишет:

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

Зима обычная причина серфинга в интернете.

Тады некошерно выходит, сам помочь не могу, но знаю, что за гроши неправильно. 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

NE_XT пишет:
Да конечно, я тоже балуюсь шестой год :)

- Ну шо же тётя вы культурно не растёте?(Цитата блин).  Ардуино в часности, а так же язык программирования Си, ну вообще программирование это просто сфера культурного роста. А если вы балуетесь, то роста там не будет у вас.

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

Та не, Винни, тут хуже. Приходим, говнеца плескаем, типа какой форум меркантильный с мерзкими программишками гнобящими неофитов и подымающими за их счет ЧСУ, а сами оказывается не могем совсем ниче. Знаю все как правильно делать, только не умею.