SERG Опубликовано 20 января, 2013 Жалоба Опубликовано 20 января, 2013 (изменено) недавно на одном из форумов посвященных ардуине была выложена прошивка для управления 4 контурной пневмой по 8 клапанной схеме. вот думаю может кому пригодится. я немного её изменил, но совсем чуть-чуть, собрал макет на столе и проверил на общую работоспособность. работает. в реальных условиях увы проверить немогу ибо иная схема управления клапанами, поэтому только на макете. датчики подходят любые с выходным наряжением от 0 до 5 вольт. состав- ардуино нано или любая другая. вплоть до просто микроконтролера с необходимой обвязкой, двухстрочный дисплей, розширитель портов для подключения дисплея, четыре реле управления клапанами и две кнопки без фиксации для выбора режима работы. три уровня собственно прописываются в самой прошивке. есть диагностика датчиков на обрыв и диагностика по изменению уровня и его поддержания. есть блокировка работы автоматической поддержки уровней. для выбора предустановленых уровней используется две кнопки, они- же и для блокировки. одна кнопка перебирает уровни снизу вверх а вторая сверху вниз, одновременное нажатие обеих переводит в режим блокировки. на дисплей выводятся показания датчиков до выхода на выбраный уровень и собственно название уровня. по достижению уровня вместо показаний датчиков высвечивается надпись *установлено*. режиме блокировки надпись *система заблокирована* если определяется обрыв датчика то на дисплее надпись- *обрыв датчика* с указанием самого датчика. если за отведенное время уровень ненастроен то на дисплее надпись- *авария* с указанием контура. при желании ничего не мешает добавить контроль акб и работу с датчиком давления для управления компрессором... собственно состав- блок реле дисплей росширитель портов для дисплея и сама ардуика ну и сама прошивка- Показать контент #include <LiquidCrystal_I2C.h>#include <Wire.h>LiquidCrystal_I2C lcd(0x27,16,2);int state=0;int state2=0;int state3=0;int state4=0;int state5=0;int avaria=0;int avaria2=0;int avaria3=0;int avaria4=0;int ustanovka=0;int ustanovka2=0;int ustanovka3=0;int ustanovka4=0;long previousMillis = 0;long previousMillis2 = 0;long previousMillis3 = 0;long previousMillis4 = 0;long previousMillis5 = 0;int obriv = 0;int obriv2 = 0;int obriv3 = 0;int obriv4 = 0;#include <EEPROM.h>int dveknopky=0;int predustanovka=0;int regim=1;int eeprom=0;int knopka=0;int knopka2=0;int knopka3=0;int analog=0;int analog2=0;int analog3=0;int analog4=0;int sek=0;int sek2=0;int sek3=0;int sek4=0;int flag1=0;int flag2=0;int flag3=0;int flag4=0;void setup(){pinMode(0,INPUT);pinMode(1,INPUT);pinMode(2,INPUT);pinMode(3,INPUT);digitalWrite(0, HIGH);digitalWrite(1, HIGH);digitalWrite(2, HIGH);digitalWrite(3, HIGH);lcd.init();lcd.backlight();pinMode(2,INPUT);pinMode(3,INPUT);pinMode(4,OUTPUT);pinMode(5,OUTPUT);pinMode(6,OUTPUT);pinMode(7,OUTPUT);pinMode(8,OUTPUT);pinMode(9,OUTPUT);pinMode(10,OUTPUT);pinMode(11,OUTPUT);}void loop(){if (millis() -previousMillis5 >=100){previousMillis5 = millis();state5=!state5;if(state5==1){lcd.clear();}}if(eeprom==0){regim=EEPROM.read(0);eeprom=1;}if(digitalRead(2)==HIGH&&digitalRead(3)==HIGH&&knopka3==0){knopka3=1;}if(digitalRead(2)==LOW&&digitalRead(3)==LOW&&knopka3==1){dveknopky=dveknopky+1;if(dveknopky>1){dveknopky=0;}if(dveknopky<0){dveknopky=1;}knopka3=0;delay(500);}if(dveknopky==1){digitalWrite(4,HIGH);digitalWrite(5,HIGH);digitalWrite(6,HIGH);digitalWrite(7,HIGH);digitalWrite(8,HIGH);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(11,HIGH);lcd.setCursor(2,1);lcd.print("ZABLOKIROVANA");lcd.setCursor(4,0);lcd.print("SISTEMA");}else{if(analogRead(0)<=1010&&analogRead(1)<=1010&&analogRead(2)<=1010&&analogRead(3)<=1010){if(digitalRead(2)==HIGH&&knopka==0){knopka=1;avaria=0;}if(digitalRead(2)==LOW&&knopka==1){knopka=0;regim=regim+1;if(regim>3){regim=3;}EEPROM.write(0,regim);sek=0;}if(digitalRead(3)==HIGH&&knopka2==0){knopka2=1;avaria=0;}if(digitalRead(3)==LOW&&knopka2==1){knopka2=0;regim=regim-1;if(regim<1){regim=1;}EEPROM.write(0,regim);sek=0;}if(regim==1){predustanovka=300;if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0){lcd.setCursor(4,0);lcd.print("nigniy");}}if(regim==2){predustanovka=600;if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0){lcd.setCursor(4,0);lcd.print("sredniy");}}if(regim==3){predustanovka=900;if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0){lcd.setCursor(4,0);lcd.print("verhniy");}}if(flag1==1){if (millis() -previousMillis >=500){previousMillis = millis();state=!state;if(state==1){sek++;}if(sek>=30){sek=30;}}}analog=analogRead(0);if(analog>999){analog=999;}if(analog<100){analog=100;}if(analog>(predustanovka+5)&&sek>=3){flag1=1;if(sek<30){digitalWrite(4,HIGH);digitalWrite(5,LOW);}else{avaria=1;digitalWrite(4,HIGH);digitalWrite(5,HIGH);}}if(analog>=(predustanovka-10)&&analog<=(predustanovka+10)){ustanovka=1;avaria=0;flag1=0;digitalWrite(4,HIGH);digitalWrite(5,HIGH);sek=0;}else{ustanovka=0;flag1=1;}if(analog<(predustanovka-5)&&sek>=3){flag1=1;if(sek<30){digitalWrite(5,HIGH);digitalWrite(4,LOW);}else{avaria=1;digitalWrite(5,HIGH);digitalWrite(4,HIGH);}}if(flag2==1){if (millis() -previousMillis2 >=500){previousMillis2 = millis();state2=!state2;if(state2==1){sek2++;}if(sek2>=30){sek2=30;}}}analog2=analogRead(1);if(analog2>999){analog2=999;}if(analog2<100){analog2=100;}if(analog2>(predustanovka+5)&&sek2>=3){flag2=1;if(sek2<30){digitalWrite(6,HIGH);digitalWrite(7,LOW);}else{avaria2=1;digitalWrite(6,HIGH);digitalWrite(7,HIGH);}}if(analog2>=(predustanovka-10)&&analog2<=(predustanovka+10)){ustanovka2=1;avaria2=0;flag2=0;digitalWrite(6,HIGH);digitalWrite(7,HIGH);sek2=0;}else{ustanovka2=0;flag2=1;}if(analog2<(predustanovka-5)&&sek2>=3){flag2=1;if(sek2<30){digitalWrite(7,HIGH);digitalWrite(6,LOW);}else{avaria2=1;digitalWrite(6,HIGH);digitalWrite(7,HIGH);}}if(flag3==1){if (millis() -previousMillis3 >=500){previousMillis3 = millis();state3=!state3;if(state3==1){sek3++;}if(sek3>=30){sek3=30;}}}analog3=analogRead(2);if(analog3>999){analog3=999;}if(analog3<100){analog3=100;}if(analog3>(predustanovka+5)&&sek3>=3){flag3=1;if(sek3<30){digitalWrite(9,HIGH);digitalWrite(8,LOW);}else{avaria3=1;digitalWrite(9,HIGH);digitalWrite(8,HIGH);}}if(analog3>=(predustanovka-10)&&analog3<=(predustanovka+10)){ustanovka3=1;avaria3=0;flag3=0;digitalWrite(8,HIGH);digitalWrite(9,HIGH);sek3=0;}else{ustanovka3=0;flag3=1;}if(analog3<(predustanovka-5)&&sek3>=3){flag3=1;if(sek3<30){digitalWrite(8,HIGH);digitalWrite(9,LOW);}else{avaria3=1;digitalWrite(8,HIGH);digitalWrite(9,HIGH);}}if(flag4==1){if (millis() -previousMillis4 >=500){previousMillis4 = millis();state4=!state4;if(state4==1){sek4++;}if(sek4>=30){sek4=30;}}}analog4=analogRead(3);if(analog4>999){analog4=999;}if(analog4<100){analog4=100;}if(analog4>(predustanovka+5)&&sek4>=3){flag4=1;if(sek4<30){digitalWrite(10,HIGH);digitalWrite(11,LOW);}else{avaria4=1;digitalWrite(10,HIGH);digitalWrite(11,HIGH);}}if(analog4>=(predustanovka-10)&&analog4<=(predustanovka+10)){ustanovka4=1;avaria4=0;flag4=0;digitalWrite(11,HIGH);digitalWrite(10,HIGH);sek4=0;}else{ustanovka4=0;flag4=1;}if(analog4<(predustanovka-5)&&sek4>=3){flag4=1;if(sek4<30){digitalWrite(11,HIGH);digitalWrite(10,LOW);}else{avaria4=1;digitalWrite(11,HIGH);digitalWrite(10,HIGH);}}if(ustanovka==1&&ustanovka2==1&&ustanovka3==1&&ustanovka4==1){lcd.setCursor(3,1);lcd.print("ustanovlen");}else{if(avaria==1||avaria2==1||avaria3==1||avaria4==1){delay(1000);lcd.setCursor(5,0);lcd.print("AVARIYA");lcd.setCursor(3,1);lcd.print(!avaria);lcd.setCursor(6,1);lcd.print(!avaria2);lcd.setCursor(9,1);lcd.print(!avaria3);lcd.setCursor(12,1);lcd.print(!avaria4);}else{lcd.setCursor(1,1);lcd.print(analog);lcd.setCursor(5,1);lcd.print(analog2);lcd.setCursor(9,1);lcd.print(analog3);lcd.setCursor(13,1);lcd.print(analog4);}}}else{if(analogRead(0)>=1010){obriv=0;delay(1000);}else{obriv=1;}if(analogRead(1)>=1010){obriv2=0;delay(1000);}else{obriv2=1;}if(analogRead(2)>=1010){obriv3=0;delay(1000);}else{obriv3=1;}if(analogRead(3)>=1010){obriv4=0;delay(1000);}else{obriv4=1;}lcd.setCursor(2,0);lcd.print("OBRIV DATCHIKA");lcd.setCursor(3,1);lcd.print(obriv);lcd.setCursor(6,1);lcd.print(obriv2);lcd.setCursor(9,1);lcd.print(obriv3);lcd.setCursor(12,1);lcd.print(obriv4);digitalWrite(9,HIGH);digitalWrite(10,HIGH);digitalWrite(11,HIGH);digitalWrite(8,HIGH);digitalWrite(7,HIGH);digitalWrite(6,HIGH);digitalWrite(5,HIGH);digitalWrite(4,HIGH);}}} учитывая очень малое количество компонентов собрать можна на небольшой макетке. Изменено 20 января, 2013 пользователем bemba74 короче.. greega 1
artgslv86 Опубликовано 20 января, 2013 Жалоба Опубликовано 20 января, 2013 интересный вариант. и какая у него получается стоимость?
Cuda Опубликовано 20 января, 2013 Жалоба Опубликовано 20 января, 2013 В 20.01.2013 в 03:39, greega сказал: Судя по железу, около 1000-1500р ))) 50$ ))) Прошу вам залили на халяву......... Вот повторить только смогут еденицы, а настроить это, вообще не многие....... нее,халявы не надо,можно и за 100 и за 200уе,главное чтоб все собранно ,работало,настраивалось и програмировалось=)
traff Опубликовано 20 января, 2013 Жалоба Опубликовано 20 января, 2013 (изменено) Хех, какое совпадение, я тоже смотрел на Ардуино, но только на модель Мега 1280 или 2560. PS. Цена того что представлена в начале темы стоит приблизительно 530 грн. или 66 долл. Изменено 20 января, 2013 пользователем traff
SERG Опубликовано 20 января, 2013 Автор Жалоба Опубликовано 20 января, 2013 В 20.01.2013 в 11:22, traff сказал: Хех, какое совпадение, я тоже смотрел на Ардуино, но только на модель Мега 1280 или 2560. PS. Цена того что представлена в начале темы стоит приблизительно 530 грн. или 66 долл. неа, около 50 долларов, где диисплей 5 баксов, ардуина 20 баксов, росширитель 13, блок реле 12 баксов. итого получаем 50 баксов. а если руки не из жо, то бюджет можна еще меньше сделать, до баксов 30 смело можна затратную часть уменьшить. для данного контролера и этого камня замного...
SERG Опубликовано 20 января, 2013 Автор Жалоба Опубликовано 20 января, 2013 (изменено) В 20.01.2013 в 03:52, Cuda сказал: нее,халявы не надо,можно и за 100 и за 200уе,главное чтоб все собранно ,работало,настраивалось и програмировалось=) на самом деле все очень просто с настройкой, темболее по умолчанию уже есть предустановки. при его себестоимости он может быть отладочным. я ведь неговорю что это полноценный контролер с кучей настроек и всяких плюшек, но в тоже время он может поддерживать заданый уровень... Изменено 20 января, 2013 пользователем SERG
123 Опубликовано 20 января, 2013 Жалоба Опубликовано 20 января, 2013 (изменено) В 20.01.2013 в 01:33, SERG сказал: недавно на одном из форумов посвященных ардуине была выложена прошивка для на небольшой макетке. можешь ссылку на этот форум дать? Изменено 20 января, 2013 пользователем bemba74 Сокращайте по возможности цитируемые посты...это же просто жесть какая то!
traff Опубликовано 20 января, 2013 Жалоба Опубликовано 20 января, 2013 Одна штука в том что на 4 реле никак не постороишь 4-контурную систему.
SERG Опубликовано 20 января, 2013 Автор Жалоба Опубликовано 20 января, 2013 (изменено) В 20.01.2013 в 12:30, traff сказал: Одна штука в том что на 4 реле никак не постороишь 4-контурную систему. тупонул.... 8 реле.... шо значит поздняя ночь.... с вчерашшнего дня макет включен. аки работает.... тоисть имитирую работу датчиков а оно управляет релюхами. но повторяюсь, в реальных условиях на автомобиле проверить немогу из-за отличий в клапанах, у меня не 8 клапанная система.. Изменено 20 января, 2013 пользователем SERG
SERG Опубликовано 20 января, 2013 Автор Жалоба Опубликовано 20 января, 2013 В 20.01.2013 в 13:42, MadeOfGlass сказал: А можно ссылку на реле? http://arduino-ua.com/index.php?categoryID=8&offset=12
SERG Опубликовано 21 января, 2013 Автор Жалоба Опубликовано 21 января, 2013 В 20.01.2013 в 03:19, artgslv86 сказал: интересный вариант. и какая у него получается стоимость? сегодня взял розсыпухи для макета, все обошлось в 25 баксов. решил ради прикола собрать этот контролер на макете, тоисть без использования наборов для ардуины. поскольку ардуина мало подходит для экстремальных условий эксплуатации, сам микроконтролер взял индустриального применения, с росширеными температурными диапазонами, тоже и в отношении дисплея. неприколько когда в мороз он тормозит до разогрева. все остальное обычные деталюшки... для минимизации размеров вместо релюх взял транзисторы, ведь какая разница чем рулить клапанами. для своего макета добавил контроль батареи и давления в ресе и естественно управление компрессором.
Maximus Опубликовано 21 января, 2013 Жалоба Опубликовано 21 января, 2013 (изменено) А сколько у тебя клапанов? если 5 то можно банально диодами всё закомутировать! Система будит думать что управляет 8ю а на самом деле 5ю... А схемку этого всего там не выложили? И ссылочку на сайт не помешало бы! Изменено 21 января, 2013 пользователем Максимус
SERG Опубликовано 21 января, 2013 Автор Жалоба Опубликовано 21 января, 2013 в прошивке каждый контур управляется раздельно, тоисть одновременно может работать на одном колесе подьем а на втором спуск... подобная идея реализации приходила на ум, но эксперименты на столе показали то что есть, а чем изменять нет желания... это так поиграться.. В 21.01.2013 в 22:37, Максимус сказал: А сколько у тебя клапанов? если 5 то можно банально диодами всё закомутировать! Система будит думать что управляет 8ю а на самом деле 5ю... Maximus 1
Maximus Опубликовано 21 января, 2013 Жалоба Опубликовано 21 января, 2013 Ну да, логично!! А что на счет схемки? Не поделишься, или это коммерческий проект?
SERG Опубликовано 21 января, 2013 Автор Жалоба Опубликовано 21 января, 2013 В 21.01.2013 в 23:03, Максимус сказал: Ну да, логично!! А что на счет схемки? Не поделишься, или это коммерческий проект? нет, проэкт не комерческий и таковым небудет ибо я не являюсь владельцем програмной части. да и что здесь делать комерческим... а схемы как таковой нет, это всего-то обьединение в одну схем девайсов применяемых здесь. позже на досуге нарисую... п.с. но если собирать на розсыпухе то все-же нужно будет решить способ как запрограмировать чистый камень. в моем случае все делается посредством ардуины в качестве програматора для чистого камня.
Maximus Опубликовано 22 января, 2013 Жалоба Опубликовано 22 января, 2013 Вот версия программы, с временной задержкой действия и некоторыми функциями самодиагностики. Показать контент #include <LiquidCrystal.h> #include <LiquidCrystalRus.h>LiquidCrystalRus lcd(6, 7, 5, 4, 3, 2); int state=0;int state2=0;int state3=0;int state4=0;int state5=0; int avaria=0;int avaria2=0;int avaria3=0;int avaria4=0; int ustanovka=0;int ustanovka2=0;int ustanovka3=0;int ustanovka4=0; long previousMillis = 0;long previousMillis2 = 0;long previousMillis3 = 0;long previousMillis4 = 0;long previousMillis5 = 0; int obriv = 0;int obriv2 = 0;int obriv3 = 0;int obriv4 = 0; #include <EEPROM.h> int dveknopky=0; int predustanovka=0;int regim=1; int eeprom=0; int knopka=0;int knopka2=0;int knopka3=0; int analog=0;int analog2=0;int analog3=0;int analog4=0; int sek=0;int sek2=0;int sek3=0;int sek4=0; int flag1=0;int flag2=0;int flag3=0;int flag4=0; void setup(){ pinMode(14,INPUT); pinMode(15,INPUT); pinMode(16,INPUT); pinMode(17,INPUT); digitalWrite(14, HIGH); digitalWrite(15, HIGH); digitalWrite(16, HIGH); digitalWrite(17, HIGH); lcd.begin(16, 2); pinMode(19,INPUT); pinMode(18,INPUT); pinMode(0,OUTPUT); pinMode(1,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); } void loop(){ if (millis() -previousMillis5 >=100) { previousMillis5 = millis(); state5=!state5; if(state5==1) { lcd.clear(); } } if(eeprom==0) { regim=EEPROM.read(0); eeprom=1; } if(digitalRead(19)==HIGH&&digitalRead(18)==HIGH&&knopka3==0) { knopka3=1; } if(digitalRead(19)==LOW&&digitalRead(18)==LOW&&knopka3==1) { dveknopky=dveknopky+1; if(dveknopky>1) { dveknopky=0; } if(dveknopky<0) { dveknopky=1; } knopka3=0; delay(500); } if(dveknopky==1) { digitalWrite(0,LOW); digitalWrite(1,LOW); digitalWrite(8,LOW); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(12,LOW); digitalWrite(13,LOW); lcd.setCursor(2,1); lcd.print("Заблокирована"); lcd.setCursor(4,0); lcd.print("Система"); } else { if(analogRead(14)<=1010&&analogRead(15)<=1010&&analogRead(16)<=1010&&analogRead(17)<=1010) { if(digitalRead(19)==HIGH&&knopka==0) { knopka=1; avaria=0; } if(digitalRead(19)==LOW&&knopka==1) { knopka=0; regim=regim+1; if(regim>3) { regim=3; } EEPROM.write(0,regim); sek=0; } if(digitalRead(18)==HIGH&&knopka2==0) { knopka2=1; avaria=0; } if(digitalRead(18)==LOW&&knopka2==1) { knopka2=0; regim=regim-1; if(regim<1) { regim=1; } EEPROM.write(0,regim); sek=0; } if(regim==1) { predustanovka=300; if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0) { lcd.setCursor(4,0); lcd.print("нижний"); } } if(regim==2) { predustanovka=600; if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0) { lcd.setCursor(4,0); lcd.print("средний"); } } if(regim==3) { predustanovka=900; if(avaria==0&&avaria2==0&&avaria3==0&&avaria4==0) { lcd.setCursor(4,0); lcd.print("верхний"); } } if(flag1==1) { if (millis() -previousMillis >=500) { previousMillis = millis(); state=!state; if(state==1) { sek++; } if(sek>=30) { sek=30; } } } analog=analogRead(14); if(analog>999){ analog=999;}if(analog<100){ analog=100;} if(analog>(predustanovka+5)&&sek>=3) { flag1=1; if(sek<30) { digitalWrite(13,LOW); digitalWrite(0,HIGH); } else { avaria=1; digitalWrite(13,LOW); digitalWrite(0,LOW); } } if(analog>=(predustanovka-10)&&analog<=(predustanovka+10)) { ustanovka=1; avaria=0; flag1=0; digitalWrite(0,LOW); digitalWrite(13,LOW); sek=0; } else { ustanovka=0; flag1=1; } if(analog<(predustanovka-5)&&sek>=3) { flag1=1; if(sek<30) { digitalWrite(0,LOW); digitalWrite(13,HIGH); } else { avaria=1; digitalWrite(0,LOW); digitalWrite(13,LOW); } } if(flag2==1) { if (millis() -previousMillis2 >=500) { previousMillis2 = millis(); state2=!state2; if(state2==1) { sek2++; } if(sek2>=30) { sek2=30; } } } analog2=analogRead(15); if(analog2>999){ analog2=999;}if(analog2<100){ analog2=100;} if(analog2>(predustanovka+5)&&sek2>=3) { flag2=1; if(sek2<30) { digitalWrite(12,LOW); digitalWrite(1,HIGH); } else { avaria2=1; digitalWrite(12,LOW); digitalWrite(1,LOW); } } if(analog2>=(predustanovka-10)&&analog2<=(predustanovka+10)) { ustanovka2=1; avaria2=0; flag2=0; digitalWrite(1,LOW); digitalWrite(12,LOW); sek2=0; } else { ustanovka2=0; flag2=1; } if(analog2<(predustanovka-5)&&sek2>=3) { flag2=1; if(sek2<30) { digitalWrite(1,LOW); digitalWrite(12,HIGH); } else { avaria2=1; digitalWrite(1,LOW); digitalWrite(12,LOW); } } if(flag3==1) { if (millis() -previousMillis3 >=500) { previousMillis3 = millis(); state3=!state3; if(state3==1) { sek3++; } if(sek3>=30) { sek3=30; } } } analog3=analogRead(16); if(analog3>999){ analog3=999;}if(analog3<100){ analog3=100;} if(analog3>(predustanovka+5)&&sek3>=3) { flag3=1; if(sek3<30) { digitalWrite(11,LOW); digitalWrite(8,HIGH); } else { avaria3=1; digitalWrite(11,LOW); digitalWrite(8,LOW); } } if(analog3>=(predustanovka-10)&&analog3<=(predustanovka+10)) { ustanovka3=1; avaria3=0; flag3=0; digitalWrite(8,LOW); digitalWrite(11,LOW); sek3=0; } else { ustanovka3=0; flag3=1; } if(analog3<(predustanovka-5)&&sek3>=3) { flag3=1; if(sek3<30) { digitalWrite(8,LOW); digitalWrite(11,HIGH); } else { avaria3=1; digitalWrite(8,LOW); digitalWrite(11,LOW); } } if(flag4==1) { if (millis() -previousMillis4 >=500) { previousMillis4 = millis(); state4=!state4; if(state4==1) { sek4++; } if(sek4>=30) { sek4=30; } } } analog4=analogRead(17); if(analog4>999){ analog4=999;}if(analog4<100){ analog4=100;} if(analog4>(predustanovka+5)&&sek4>=3) { flag4=1; if(sek4<30) { digitalWrite(10,LOW); digitalWrite(9,HIGH); } else { avaria4=1; digitalWrite(10,LOW); digitalWrite(9,LOW); } } if(analog4>=(predustanovka-10)&&analog4<=(predustanovka+10)) { ustanovka4=1; avaria4=0; flag4=0; digitalWrite(9,LOW); digitalWrite(10,LOW); sek4=0; } else { ustanovka4=0; flag4=1; } if(analog4<(predustanovka-5)&&sek4>=3) { flag4=1; if(sek4<30) { digitalWrite(9,LOW); digitalWrite(10,HIGH); } else { avaria4=1; digitalWrite(9,LOW); digitalWrite(10,LOW); } } if(ustanovka==1&&ustanovka2==1&&ustanovka3==1&&ustanovka4==1) { lcd.setCursor(3,1); lcd.print("Установлен"); } else { if(avaria==1||avaria2==1||avaria3==1||avaria4==1) { delay(1000); lcd.setCursor(5,0); lcd.print("АВАРИЯ"); lcd.setCursor(3,1); lcd.print(!avaria); lcd.setCursor(6,1); lcd.print(!avaria2); lcd.setCursor(9,1); lcd.print(!avaria3); lcd.setCursor(12,1); lcd.print(!avaria4); } else { lcd.setCursor(1,1); lcd.print(analog); lcd.setCursor(5,1); lcd.print(analog2); lcd.setCursor(9,1); lcd.print(analog3); lcd.setCursor(13,1); lcd.print(analog4); } } } else { if(analogRead(14)>=1010) { obriv=0; delay(1000); } else { obriv=1; } if(analogRead(15)>=1010) { obriv2=0; delay(1000); } else { obriv2=1; } if(analogRead(16)>=1010) { obriv3=0; delay(1000); } else { obriv3=1; } if(analogRead(17)>=1010) { obriv4=0; delay(1000); } else { obriv4=1; } lcd.setCursor(2,0); lcd.print("ОБРЫВ ДАТЧИКА"); lcd.setCursor(3,1); lcd.print(obriv); lcd.setCursor(6,1); lcd.print(obriv2); lcd.setCursor(9,1); lcd.print(obriv3); lcd.setCursor(12,1); lcd.print(obriv4); digitalWrite(9,LOW); digitalWrite(10,LOW); digitalWrite(11,LOW); digitalWrite(8,LOW); digitalWrite(12,LOW); digitalWrite(1,LOW); digitalWrite(13,LOW); digitalWrite(0,LOW); } }} нашел тут
SERG Опубликовано 22 января, 2013 Автор Жалоба Опубликовано 22 января, 2013 да, это отсюда. я только немного изменил её под используемую ардуино, сам код основной полностью от автора. и в этом коде нет временной защиты. bemba74 1
Maximus Опубликовано 30 января, 2013 Жалоба Опубликовано 30 января, 2013 @SERG, Будь другом, дай схемы или ссылки на схемы! А где платы покупал, в частности "расширитель портов для дисплея"???
SERG Опубликовано 30 января, 2013 Автор Жалоба Опубликовано 30 января, 2013 \\\покупаю здесь- http://parts.dn.ua/category_24_show_all.html\ и здесь- http://arduino.shopium.ua/catalog/\ да и у вас в Харькове думаю тоое мо\жно прикупить\.\\\\\\\\\\\\
SERG Опубликовано 30 января, 2013 Автор Жалоба Опубликовано 30 января, 2013 а схемы у мня как таковы и нет... все входы и выходы прописаны в прогррамме, поэтому их можна менять на свое усмотрение. хотел было нарисовать схемку но поскольку мне этот вариант контролера неочень интересен то и нестал заморачиваться. та набросок есть и всё.
traff Опубликовано 30 января, 2013 Жалоба Опубликовано 30 января, 2013 млин, снова почистили мои сообщения. надоело.
SERG Опубликовано 30 января, 2013 Автор Жалоба Опубликовано 30 января, 2013 В 30.01.2013 в 15:38, traff сказал: млин, снова почистили мои сообщения. надоело. цензура, админы с модерами шашками маут.... а ты пиши, пиши....
Maximus Опубликовано 30 января, 2013 Жалоба Опубликовано 30 января, 2013 В Харькове много чего есть, но плат с первого поста нет :(( http://www.kosmodrom.com.ua/prodlist.php?page=0&name=Arduino+&okbutton=%CF%EE%E8%F1%EA Можешь хотя бы расписать (для чайников) на какие порты к Arduino Nano цепляются датчики, дисплей (с задней платой), кнопки управления? Сфоткать твою рабочую модель на столе, если еще не разобрал? Дисплей 2х20 или 2х16?
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти