управление от часов
- Войдите на сайт для отправки комментариев
Сб, 22/08/2015 - 15:22
День добрый, хочу зделать поливалку которая будет вкл и выключатца по задоному времени, ну к примеру на 15 мин в 10час и 18час,
но проблемка наданном этапе(поскольку ардуинку пока не особо знаю), привязатца к часам, тоесть брать системные часы, которые зделаны на платке Tiny RTC , но когда я вставляю в цикл услоия (now.minute(), DEC) при компиляции выводит ошибку, ну и попутно по замыслу должна открывать фрамугу в теплице по достижении задоного времени, но с этим проблем не возникло, а вот со временем полный затык, не натолкнёте дельным советом на нужное решение? ))) ниже код с которым проводил эксперемент.
// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
//часы 02012015_2240
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC
#include "RTClib.h" //Подключаем библиотеку для использования модуля часов реального времени RTC
#include "DHT.h"
//тест индикатора,работает на 2х строчном и 4х строчном
//при использовании 2х строчного,3я.4я,строка не пишутца
//GND — GND
// VCC — 5V
// SDA — A4
// SCL — A5
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2 //цыфровой вход
#define DHTTYPE DHT11 //не забываем тип датчика
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC
//задаем адрес LCD экрана 0x27, 16 символов, 4 строки
LiquidCrystal_I2C lcd(0x27,20,4);
void setup () {
lcd.init(); // Инициализируем экран
// Выводим сообщение //
//включаем подсветку
lcd.backlight(); //без подсветки,буквы плохо видно
//Устанавливаем позицию начиная с которой выводится текст.
//Отступ в данном случае 3, строка 1 (отсчет от нуля).
lcd.setCursor(2,0);
//выводим строку 1
lcd.print("TEST INDICATORA !");
//аналогично выводим вторую строку
lcd.setCursor(1,1);
lcd.print("S NOVIM GODOM");
lcd.setCursor(6,2);
lcd.print("vitek73");
lcd.setCursor(3,3);
lcd.print("test indikatora");
Serial.begin(9600);
Serial.println("DHTxx test!");
dht.begin();
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
// RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале,
//для того, чтобы загрузить в RTC дату и время на момент компиляции программы
//Иногда необходимо заливать СКЕТЧ на плату со снятым комментарием - для поправки
//времени в RTC, НО оставлять такой СКЕТЧ в работе НЕЛЬЗЯ !!!!!!!!!!!!!
// RTC.adjust(DateTime(__DATE__, __TIME__));
// RTC.adjust(DateTime(2015,1,2,22,53,30));
}
}
void loop () {
DateTime now = RTC.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
// Serial.print(" since midnight 6/7/1973 = ");
// Serial.print(now.unixtime());
// Serial.print("s = ");
// Serial.print(now.unixtime() / 86400L);
// Serial.println("d");
// calculate a date which is 7 days and 30 seconds into the future
// DateTime future (now.unixtime() + 7 * 86400L + 30);
// Serial.print(" now + 7d + 30s: ");
// 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();
//{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
}
else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
}
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(0,0);
lcd.print(now.year(), DEC);//год
lcd.setCursor(4,0);
lcd.print("/");
lcd.setCursor(5,0);
lcd.print(now.month(), DEC);//месяц
lcd.setCursor(6,0);
lcd.print("/");
lcd.setCursor(7,0);
lcd.print(now.day(), DEC);//день
Serial.print(' ');
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print(now.hour(), DEC);//час
lcd.setCursor(2,1);
lcd.print(":");
lcd.setCursor(3,1);
lcd.print(now.minute(), DEC);//минуты
// lcd.setCursor(6,1);
// lcd.print(':');
// lcd.print(now.second(), DEC);
// lcd.println();
//lcd.print("qwertyuiopasdfgh");
// lcd.setCursor(0,1);
//lcd.print("jklzxcvbnm");
delay(30000);
}
День добрый, хочу зделать поливалку которая будет вкл и выключатца по задоному времени, ну к примеру на 15 мин в 10час и 18час,
При желании подобную вещь можно и за сто рублей найти. Я в Леруа за 280 покупал.
гы, гы, я оценил ваш юмор ))
но это мне не подходит, надо городить 220в
но вопрос в следущем
при приравнивании значения к температуре нет проблем
t = dht.readTemperature();
но когда я хочу также поступить со временем, ну к примеру с минутами, выдаёт ошибку
minu = (now.minute(), DEC);
пробовал так minu = (now.minute(); и так minu = (now.minute); пробовал и флоутом, тот же эфект
выдаёт типа эрора, как мне правильно написать команду?
чтоб значения времени к примеру минут поподали в мою minu.
и эта штуковина(ваш розеточный програматор) не будет открывать форточку при достижении темперы в 27 градусов, так что как некрутите, придётца помоч виктору с ответом )))
minu = (now.minute(), DEC);
пробовал так minu = (now.minute(); и так minu = (now.minute); пробовал и флоутом, тот же эфект
выдаёт типа эрора, как мне правильно написать команду?
так что как некрутите, придётца помоч виктору с ответом )))
minu = now.minute();
Только, знаете, без обид, судя по вопросам. которые Вы задаёте - Вы не справитесь с этой задачей без того, чтобы сесть и научиться хоть немного программировать. Вы же программировать не умеете вообще - абсолютно.
Возьимте Кернигана и Ритчи, читайте и пробуйте запускать приведённые там программы-примеры. Убеждайтесь, что Вы понимаете, как они работают.
А через месяц-другой возвращайтесь к своей задаче. Тогда Вы уже не будете "пробовать" выражения с разбалланстрованными скобками и, глядишь, что-нибудь получится.
Удачи!
Да, и ещё.
Заодно научитесь нормально ставить задачу. А то сначала Вы пишете , что хотите сделать поливалку "которая будет вкл и выключатца по задоному времени, ну к примеру на 15 мин в 10час и 18час,", а потом вдруг оказывается. что Вашей поливалке надо ещё и форточки открывать. Може она у Вас еще и за пивом бегать должна, просто Вы забыли написать?
Этот вариант я тоже пробовал, также безрезультатно,
придётца наверно смотреть уроки джереми,хотя тама вроде небыло у него с будильником передачи,
ну когда я всё выучю, тобиш научюсь програмировать, тогда и смысла заходить не будет, так что пока есть шанс натолкнуть виктора на правильную мысль, пока он не стал супер программистомм))). мож у меня библиотеки левые?, хотя время на жк дисплей выводитца, вобщем я пока ищу лесенку чтоб залесть на первую ступеньку))
и попутно цель этого незамысловатого проекта, пару раз в сутки будет включатца полив в теплице, попутно отслеживатца температура внутри, и при достижении задоной температуры, будет открыватца (через электроцилинды ,форточки) жк индикатор тама не планируетца,ну вот как то так, хотел добавить чтоб ещё отслеживала влажност земли, типа если земля влажная, то полив отменить, но пришёл к выводу что пока это лишнее, вооот ))
Ну,-ну. Удачи!
Виктор, что это за фигня: "выдаёт типа эрора".
Цитируйте ошибки дословно.
toc, гляньте на текст - у него там скобки разбаллансированы, вот и "выдаёт типа эрора".
И аргумент DEC без сериала...
ну хорошо, моглиб сразу сказать что с количеством скобок перестарался, я взял для теста из библиотеки дс1307, всё заработало, видать я из рабочей зделал монстра, и как результат, оно отказалось жить, как говоритца осознал,понял, исправил, )) спасибо за наталкивания мысли )
моглиб сразу сказать что с количеством скобок перестарался,
Зацените мое ваяние , ))
поскольку предписывалось включать 2 раза в сутки полив, и время полива варьироутца, зделаны так скажем 2 будильника, у каждого задоётца время вкл, и время выключения,
плюс задаётца температура,при которой будет открыватца форточка для вентиляции.
Зацените мое ваяние , ))
День вечерний всем ), появился вопрос,
состряпал из кусочков регистратор на сд карту, на сд пишетца с буфера,
но когда я пытался записать туда значения с датчика ds18b20 при компиляции выдаёт ошибку,
хотя остальные данные часов, с dnt 11 воспринимаютца хорошо,
на экран с ds18b20 выводитца, а на карту неполучаетца записать. не натолкнёте ищёразок на правильные выводы? ) проблема с записью 96 строки на карту памяти , вот .
У вас отчень маленький дылей в 122 срочке . У вилечте иго .И запись пайдет.
Чуствую зараз тапками закидают, ну если заменить 96 строку на dataString+=sensors.getTempC(Thermometer2);
Может даже заработает ;-)