Мой сайт
Главная | Регистрация | Вход
Среда, 25.06.2025, 16:41
Меню сайта
Мини-чат
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » 2014 » Июль » 13 » Ардуино инкубатор. Инкубатор под управлением Ардуино Уно
10:22

Ардуино инкубатор. Инкубатор под управлением Ардуино Уно





tamerlan37

Offline

Зарегистрирован: 22.10.2013

Вот обьеденил свой код с кодом меню одного из форумчан (dachnik)после небольшой переделки под свои нужды часть с меню работает а вот часть "терморегулятор" почемуто будто игнорируется нет вывода не на LCD не в Serial будто ее нет вовсе я и перемещал этучасть кода в void loop и в отдельную часть но не помогает.Может вы увидете в чем проблема.

// adress eeprom /*EEPROM 0 //(Минимальное значение температуры актуатора) теперратура мин EEPROM 1 //(Максимальное значение темп актуатора) температура макс EEPROM 2 1/0 //включение отключение полива (0=off / 1=on) EEPROM 3 //Продолжительность минут полива EEPROM 4 //минута полива EEPROM 5 //час полива //цикл*/ //-------------------------------------м---------------------------------------------- int led2 = 4;// "сигнал таймер переворот" int led3 = 2;// сигнал нагреватель int led4 = 5;// сигнал туманогенератор //-------------------------------------м---------------------------------------------- //LCD I2C 20x4 #include <DS1307RTC.h> #include <Time.h> #include <EEPROM.h> //#include <LiquidCrystal_I2C.h> #include <Wire.h> #include <LiquidCrystal.h> //LiquidCrystal_I2C lcd(0x27,20,4); //LCD #include "DHT.h" //------------------------------------мое---------------------------------------------------- #define DHTPIN 3 // куда подключен термодатчик #define DHTTYPE DHT11 // DHT 11 используемый термодатчик DHT dht(DHTPIN, DHTTYPE); LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //------------------------------------мое---------------------------------------------------- //кнопка // задаем константы const int buttonPin = 15; // номер входа, подключенный к кнопке const int buttonPin_1 = 16; //левая кнопка const int buttonPin_0 = 14; //правая кнопка const int led = 17; // номер выхода светодиода /* #define buttonEnterPin = 15; #define buttonPlusPin = 14; #define buttonMinusPin = 16; #define EnterPressed !digitalRead(buttonEnterPin); #define PlusPressed !digitalRead(buttonPlusPin); #define MinusPressed !digitalRead(buttonMinusPin); */ // переменные int buttonState = 0; // переменная для хранения состояния кнопки int buttonState_1 = 0; // переменная для хранения состояния кнопки int buttonState_0 = 0; // previous state of the button void setup() { //------------------------------------мое--------------------------------- Serial.begin(9600); dht.begin(); int day; while (!Serial) ; // wait for serial delay(200); pinMode(led, OUTPUT);//индикатор кнопки pinMode(led2, OUTPUT);// сигнал "таймер" pinMode(led3, OUTPUT);// сигнал нагрева pinMode(led4,OUTPUT);//сигнал туманогенератора Serial.println("DS1307RTC Read Test"); Serial.println("-------------------"); //------------------------------------мое--------------------------------- //LCD #ifdef AVR Wire.begin(); #else Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due #endif //lcd.init(); // initialize the lcd lcd.begin(16, 2); //------------------------------------мое--------------------------------- // печатаем первую строку lcd.print("Inkubator" ); lcd.setCursor(1, 1); delay(500); // печатаем вторую строку lcd.print("tamerlan-1"); delay(500); lcd.clear(); //------------------------------------мое--------------------------------- //lcd.backlight(); //--LCD // initialize the button pin as a input: // initialize the LED as an output: // initialize serial communication: Serial.begin(9600); //pinMode(ledPin, OUTPUT); // инициализируем пин, подключенный к кнопке, как вход pinMode(buttonPin, INPUT); pinMode(buttonPin_0, INPUT); pinMode(buttonPin_1, INPUT); } void loop() { //-------------------------------------m---------------------------------------------- float h = dht.readHumidity();//обозначение влажности float t = dht.readTemperature(); //обозначение температуры float x =EEPROM.read(2);//день месяца соответствующий проклевыванию tmElements_t tm; //вывод на экран дата и влажность {//lcd.setCursor(0, 1); //print2digits(tm.Day); //lcd.write('/'); //print2digits(tm.Month); //lcd.write('/'); //lcd.print(tmYearToCalendar(tm.Year)); /*lcd.write('h'); print2digits (h); //lcd.write("*H ");*/ lcd.setCursor(0, 0);//вывод на экран время и температура print2digits(tm.Hour); lcd.write(':'); print2digits(tm.Minute); lcd.write('`'); print2digits(tm.Second); lcd.write(' '); print2digits(tm.Day); lcd.write('/'); print2digits(tm.Month); //lcd.write('/'); //lcd.print(tmYearToCalendar(tm.Year)); //lcd.write('h'); //print2digits (h); //lcd.write("*H "); //lcd.write('t'); //print2digits (t); //lcd.write("*C "); //delay(1000); if (RTC.read(tm)) //информацыя в sereal monitor { Serial.print("Ok, Time = "); Serial.print(tm.Hour); Serial.write(':'); Serial.print(tm.Minute); Serial.write(':'); Serial.print(tm.Second); Serial.print(", Date (D/M/Y) = "); Serial.print(tm.Day); Serial.write('/'); Serial.print(tm.Month); Serial.write('/'); Serial.print(tmYearToCalendar(tm.Year)); Serial.println(); } else { if (RTC.chipPresent()) { Serial.println("The DS1307 is stopped. Please run the SetTime"); Serial.println("example to initialize the time and begin running."); Serial.println(); } else { Serial.println("DS1307 read error! Please check the circuitry."); Serial.println(); } delay(900); } //delay(500); //-------------------------------------m---------------------------------------------- // read the pushbutton input pin: //lcd.setCursor(0,0); //lcd.print("Ink MENU v1"); //lcd.setCursor(0,1); //lcd.print("(very good menu)"); lcd.setCursor(0,1); lcd.print(" MENU "); lcd.setCursor(0,1); lcd.write('t'); print2digits (t); lcd.write("*C"); lcd.setCursor(12,1); lcd.write('h'); print2digits (h); lcd.write("*H "); buttonState = digitalRead(buttonPin); // проверяем нажата ли кнопка // если нажата, то buttonState будет HIGH: if (buttonState == HIGH) { digitalWrite(led, HIGH); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран menu(); } } } //-------------------------------------терморегулятор-------------------------------- void termo/*string_irrigation_time*/() // функция формирования строки времни полива { tmElements_t tm; //вывод на экран дата и влажность float h = dht.readHumidity();//обозначение влажности float t = dht.readTemperature(); //обозначение температуры float x =EEPROM.read(2);//день месяца соответствующий проклевыванию String irr_time = ""; //объявление переменной строки int minuts = EEPROM.read(4); //читаем память int hours = EEPROM.read(5); /*if (hours >= 0 && hours <=9) {irr_time += 0; irr_time += hours;} else{irr_time += hours;} //дописываем нолик irr_time += ":"; if (minuts >= 0 && minuts <=9){irr_time += 0; irr_time += minuts;} else{irr_time += minuts;} irr_time += ":"; irr_time += "00";*/ // lcd.setCursor(0,1); //lcd.print("irr_time="); //lcd.print(irr_time); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ if ((tm.Minute)= minuts)/*((tm.Second)>58)if((tm.Day)<=x)*/{//условия таймера digitalWrite(led2, HIGH);//включает переворот // поворот по часовой стрелке Serial.println("povorot po chasovoi"); //myStepper.step(stepsPerRevolution); //Serial.print("Taimer On!! ");//вывод инфо состояния lcd.setCursor(15,1);//вывод инфо состояния на LCD lcd.print("%"); /* // step one revolution in the other direction: Serial.println("povorot protiv chasovoi"); myStepper.step(-stepsPerRevolution); */ } else { digitalWrite(led2, LOW); Serial.print("Taimer OFF"); } //**************************************************************** if (t<EEPROM.read(0))//условия терморегуляции { digitalWrite(led3,HIGH); Serial.print("Vkluchen nagrev!!");//вывод инфо состояния lcd.setCursor(15, 0); lcd.print("^");//вывод инфо состояния на LCD //delay (500); } else { digitalWrite(led3,LOW); Serial.print("Temp ok ");//вывод инфо состояния lcd.setCursor(15, 0); lcd.print("~");//вывод инфо на LCD } //*********************************************************** if (h<EEPROM.read(1))//условия регуляции влажности { digitalWrite(led4,HIGH); Serial.print("Vkluchen tuman!!");//вывод инфо состояния lcd.setCursor(14, 0); lcd.print("#");//вывод инфо состояния на LCD //delay (500); } else { digitalWrite(led4,LOW); Serial.print("Vlagnost ok ");//вывод инфо состояния lcd.setCursor(14, 0); lcd.print("~");//вывод инфо состояния } //************************************************************ } //-------------------------------------терморегулятор конец-------------------------- void menu() { actuator_setup();//температура irrigtion_setup();//переворот irrigation_set_time(); //влажность } void actuator_setup()//установка температуры { lcd.clear(); //очищаем экран while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки /*lcd.setCursor(0,0); lcd.print(" -=TEMP SETUP=- ");//Actuator setup lcd.clear();*/ int t_mini = EEPROM.read(0); lcd.setCursor(0,0); lcd.print("min="); lcd.print(t_mini); lcd.print((char)223); int t_maxi = EEPROM.read(1); lcd.setCursor(9,0); lcd.print("max="); lcd.print(t_maxi); lcd.print((char)223); //lcd.setCursor(0,2); //lcd.print("________________"); lcd.setCursor(0,1); lcd.print("T_MIN NEXT T_MAX"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран digitalWrite(led, HIGH); break; } if (buttonState_1 == HIGH) { digitalWrite(led, LOW); lcd.clear(); t_min(); delay(500); lcd.clear(); //очищаем экран digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { digitalWrite(led, LOW); lcd.clear(); t_max(); delay(500);// включаем светодиод lcd.clear(); //очищаем экран digitalWrite(led, HIGH); } }} void irrigtion_setup() { lcd.clear(); //очищаем экран while(1){ //бесконечный цикл buttonState = digitalRead(butto/запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки /*lcd.setCursor(0,0); lcd.print("=Perevorot SET=");//IRRIGATION*/ int on_off = EEPROM.read(2); String z; if (on_off == 1) {z="ON";} if (on_off == 0) {z="OFF";} lcd.setCursor(0,0); lcd.print("per="); lcd.print(z); int duration = EEPROM.read(3);//продолжительность lcd.setCursor(9,0); lcd.print("prod="); lcd.print(duration); lcd.print("min"); //lcd.setCursor(0,1); //lcd.print("____________________"); lcd.setCursor(0,1); lcd.print("ON/OFF NEXT prod"); // digitalWrite(ledPin, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(500);// включаем светодиод lcd.clear(); //очищаем экран break; } if (buttonState_0 == HIGH) { digitalWrite(led, LOW); lcd.clear(); durration_irrigation(); delay(500);// включаем светодиод lcd.clear(); //очищаем экран digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { digitalWrite(led, LOW); lcd.clear(); on_off_irrigation(); delay(500);// включаем светодиод lcd.clear(); //очищаем экран digitalWrite(led, HIGH); } }} void irrigation_set_time()//настройка времени переворота { lcd.clear(); //очищаем экран while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки lcd.setCursor(0,0); lcd.print("Povor SET TIME");//"IRIGAT SET TIME" //lcd.setCursor(0,1); //lcd.print("pov_time= "); string_irrigation_time(); /*lcd.setCursor(0,0); lcd.print("____________________");*/ lcd.setCursor(0,1); lcd.print("minut NEXT hour"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { digitalWrite(led, LOW); lcd.clear(); irrigation_set_minuts(); delay(500); lcd.clear(); //очищаем экран digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { digitalWrite(led, LOW); lcd.clear(); irrigation_set_hours(); delay(500);// включаем светодиод lcd.clear(); //очищаем экран digitalWrite(led, HIGH); } }} //////-------------------------------------------------------------------------- //SUB MENU void t_min() { lcd.clear(); //очищаем экран delay(1000); while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки lcd.setCursor(0,0); lcd.print("tMinSET"); int t_min = EEPROM.read(0); lcd.setCursor(8,0); lcd.print("t="); lcd.print(t_min); lcd.print((char)223); lcd.print("C"); lcd.setCursor(0,1); lcd.print("tmin-1NEXTtmin+1"); //lcd.setCursor(0,1); //lcd.print("________________"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(0, t_min + 1); digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(0, t_min - 1); digitalWrite(led, HIGH); } } } void t_max() { lcd.clear(); //очищаем экран delay(1000); while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки lcd.setCursor(0,0); lcd.print("tMaxSET"); int t_max = EEPROM.read(1); lcd.setCursor(8,0); lcd.print("t="); lcd.print(t_max); lcd.print((char)223); lcd.print("C"); lcd.setCursor(0,1); lcd.print("tmax-1NEXTtmax+1"); //lcd.setCursor(0,0); //lcd.print("________________"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(1, t_max + 1); digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(1, t_max - 1); digitalWrite(led, HIGH); } } } void on_off_irrigation()//вкл/выкл переворот { lcd.clear(); //очищаем экран delay(1000); while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки /*lcd.setCursor(0,0); lcd.print("ON/OFF Povorot");//IRRIGATION*/ int on_off = EEPROM.read(2); String z; if (on_off == 1) {z="ON";} if (on_off == 0) {z="OFF";} lcd.setCursor(0,0); lcd.print("now povor=");//irrignation lcd.setCursor(11,0); lcd.print(z); //lcd.setCursor(0,2); //lcd.print("____________________"); //lcd.clear(); lcd.setCursor(0,1); lcd.print("ON NEXT OFF"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(2, 0); digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(2, 1); digitalWrite(led, HIGH); } } } void durration_irrigation() { lcd.clear(); //очищаем экран delay(1000); while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки /*lcd.setCursor(0,0); lcd.print("povor do");*/ int duration = EEPROM.read(3); lcd.setCursor(0,0); lcd.print("povor="); lcd.print(duration); lcd.print("day"); //lcd.clear(); lcd.setCursor(0,1); lcd.print("-1day NEXT +1day"); //lcd.setCursor(0,2); //lcd.print("____________________"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(3, duration + 1); digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); EEPROM.write(3, duration - 1); digitalWrite(led, HIGH); } } } //---------------------------------------------------peredelano------------------------------- void irrigation_set_minuts()//время поворота минуты { lcd.clear(); //очищаем экран delay(1000); while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки /*lcd.setCursor(0,0); lcd.print("SET MINUT");*/ int minuts = EEPROM.read(4); lcd.setCursor(0,0); lcd.print("minuts="); lcd.print(minuts); lcd.print("min"); //lcd.clear(); lcd.setCursor(0,1); lcd.print("-1min NEXT +1min"); //lcd.setCursor(0,2); // lcd.print("____________________"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); minuts = minuts + 1; if (minuts >59){minuts=0;} EEPROM.write(4, minuts); digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); minuts = minuts - 1; if (minuts < 0) {minuts=59;} EEPROM.write(4, minuts); digitalWrite(led, HIGH); } } } void irrigation_set_hours() { lcd.clear(); //очищаем экран delay(1000); while(1){ //бесконечный цикл buttonState = digitalRead(buttonPin); //запоминаем значение кнопки buttonState_0 = digitalRead(buttonPin_0); //запоминаем значение кнопки buttonState_1 = digitalRead(buttonPin_1); //запоминаем значение кнопки /*lcd.setCursor(0,0); lcd.print("SET hours");*/ int hours = EEPROM.read(5); lcd.setCursor(0,0); lcd.print("hours = "); lcd.print(hours); lcd.print("h"); //lcd.clear(); lcd.setCursor(0,1); lcd.print("-1hourNEXT+1hour"); //lcd.setCursor(0,2); // lcd.print("____________________"); digitalWrite(led, HIGH); if (buttonState == HIGH) { digitalWrite(led, LOW); delay(1000);// включаем светодиод lcd.clear(); //очищаем экран break; digitalWrite(led, HIGH); } if (buttonState_0 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); hours = hours + 1; if (hours >23){hours=0;} EEPROM.write(5, hours); digitalWrite(led, HIGH); } if (buttonState_1 == HIGH) { delay(500); digitalWrite(led, LOW); lcd.clear(); hours = hours - 1; if (hours < 0) {hours=23;} EEPROM.write(5, hours); digitalWrite(led, HIGH); } } } //----------------------------------------m----------------------------------------------- void print2digits(int number) { if (number >= 0 && number < 10) { lcd.write('0'); } lcd.print(number); } //----------------------------------------m-----------------------------------------------


Источник: arduino.ru
Просмотров: 1145 | Добавил: hapeake | Рейтинг: 0.0/0
Всего комментариев: 0
Форма входа
Поиск
Календарь
«  Июль 2014  »
Пн Вт Ср Чт Пт Сб Вс
 123456
78910111213
14151617181920
21222324252627
28293031
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2025
    Бесплатный хостинг uCoz