Официальный сайт компании Arduino по адресу arduino.cc
Вот конечный код. поправил последние штрихи. #include <Wire.h> #include <RTClib.h> // Библиотека часов реального времени 1307 #include <AM2320.h> // Библиотека датчика AM2320 по шине i2c #define Rele1 3 #define Rele2 4 #define ReleObogrev 5 #define ReleTuman 6 #define mn 60UL //Дополнительные константы для удобства #define hr 3600UL //Отражают соответствующие количества секунд #define d 86400UL //столько секунд в одном дне AM2320 sensor; // Обьявляем sensor RTC_DS1307 rtc; //------------------------------------------------------------------ class time{ public: time(unsigned char h=0, unsigned char m=0, unsigned char s=0){ set_time(h, m, s); } time& operator = (time &t){hour = t.hour; min = t.min; sec = t.sec; seconds = t.seconds; return *this;} boolean operator ==(time &t){return seconds==t.get_time();} boolean operator !=(time &t){return !(*this==t);} boolean operator > (time &t){return seconds>t.get_time();} boolean operator < (time &t){return seconds<t.get_time();} boolean operator >=(time &t){return seconds>=t.get_time();} boolean operator <=(time &t){return seconds<=t.get_time();} void set_time(unsigned char h, unsigned char m, unsigned char s){ hour=h; min=m; sec=s; seconds=(unsigned long)h*1440 + (unsigned long)m*60 + s; } unsigned long get_time(){return seconds;}; void print() {Serial.print(hour); Serial.print(':');Serial.print(min); Serial.print(':');Serial.println(sec);} private: unsigned char hour; unsigned char min; unsigned char sec; unsigned long seconds; }; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup(void) { Wire.begin(); //Инициируем I2C интерфейс rtc.begin(); //Инициирум RTC модуль Serial.begin(9600); //Запускаем сом-порт delay(3000); //Ожидаем открытия консоли if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } // rtc.adjust(DateTime(2018, 6, 11, 15, 15, 15)); // для установки времени ввести сюда время и расскоментировать pinMode(ReleTuman, OUTPUT); // Пин реле увлажнителя pinMode(ReleObogrev, OUTPUT); // Пин реле обогревателя pinMode(Rele2, OUTPUT); // Пин реле вентилятора pinMode(Rele1, OUTPUT); // Пин реле управляемого таймером- свет Serial.begin(9600); Wire.begin(); sensor.begin(); } void loop(){ // Здесь мы будем считывать с датчика AM2320 температуру и влажность // и контролировать 2 пина- 5и6 // Влажность и температура регулируются здесь этими 2мя релюхами sensor.measure(); float h = sensor.getHumidity(); float t = sensor.getTemperature(); if (t>24) digitalWrite(5, HIGH); // Включаем реле обогревателя / он находитя в NO else digitalWrite(5, LOW); // Выключаем реле обогревателя если температура достигнута if (h>80) digitalWrite(6, HIGH); // Включаем реле туманогенератора / он находитя в NO else digitalWrite(6, LOW); // Выключаем реле туманогенератора. Влажность достигнута Serial.print("Температура: °C "); Serial.println(t); Serial.print("Влажность: % "); Serial.println(h); delay(1000); // Тут мы окончили опрос датчика и выставили нужные значения ВКЛ и ВЫКЛ на 5и6 пины. // // Переходим к часам реального времени 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(daysOfTheWeek[now.dayOfTheWeek()]); Serial.print(") "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); Serial.println(); delay(3000); Serial.print(" сейчас "); Serial.print(now.hour(), DEC); Serial.println(" часов. Реле включено по чётным часам "); Serial.println(); if ( !(now.hour() % 2)) digitalWrite(Rele1, HIGH); else digitalWrite(Rele1, LOW); }
dinovasya
Вы понимаете что регистр имеет значение? Не нужно спорить!
ах блин, проклятый регистр. точно. Спасибо, буду внимательнее..
Значит из-за одной маленькой буквы теперь релюха не работает. Вот заработала, а потм бы сгорела.
Кстати, я не спорю.. я учусь у Вас.. и за всё благодарен
легко переписывается так:
if ( !(now.hour() % 2))
Круг замкнулся.
Тридцатью семью постами ранее я объяснял, как от %2 перейти к &1.
А спалил, как ни странно, по инструкции.
Подал на гнездо VIN 9 вольт с блока питания.
Подали 9в на VIN . не отключая USB от компа? - ну вот и получите... Так делать нельзя.
Заказывайте сразу несколько ардуинок, раз у вас такие "способности".
Я пока ни одну не спалил, но не расслабляюсь, всегда 2-3 штуки в запасе лежат. Благо они копейки стоят...
dinovasya
Вы понимаете что регистр имеет значение? Не нужно спорить!
ах блин, проклятый регистр. точно. Спасибо, буду внимательнее..
Значит из-за одной маленькой буквы теперь релюха не работает. Вот заработала, а потм бы сгорела.
Кстати, я не спорю.. я учусь у Вас.. и за всё благодарен
легко переписывается так:
Круг замкнулся.
Тридцатью семью постами ранее я объяснял, как от %2 перейти к &1.
А спалил, как ни странно, по инструкции.
Подал на гнездо VIN 9 вольт с блока питания.
Подали 9в на VIN . не отключая USB от компа? - ну вот и получите... Так делать нельзя.
Заказывайте сразу несколько ардуинок, раз у вас такие "способности".
Я пока ни одну не спалил, но не расслабляюсь, всегда 2-3 штуки в запасе лежат. Благо они копейки стоят...