Vlad-bodryi Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 (изменено) @kort, сам-то что не напишешь? я думаю что любой знающий основы программирования способен написать алгоритм на мегах. ну а если незнаешь основ(как я) - то и изменить под себя не сможешь! Изменено 13 февраля, 2014 пользователем Vlad-bodryi
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 хочу сначала придумать что он должен делать
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Скетч для ардуины: Показать контент #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); } } }
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Это оригинал скетча найденого в тырнете. Переделываю потихоньку, добавляю новые фичи.
vic_le Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Я так думаю что @kort, закинул "утку" и хочет посмотреть, что из этого получится. МЕГА которая будет работать с экраном 3.2" и тач не будет стоить 400-500рэ + переходник под екран. Если задача не стоит получить только картинку.
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 ну у меня этих экранов просто куча, я уже делал на них экран для вывода параметров с мозгов, хочу добавить функционала с другим экраном алгоритм основной все равно не особо изменится
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Дисплей 3,2" 950 р. Блок реле 350 р. Дуина 350 р. Вот и почти весь бюджет.
Vlad-bodryi Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 могу приблизительно накидать смету на стоимость лабуды помимо контроллера: датчики положения - где-то здесь на форуме бесконтактные от ленд ровера в районе 4 тр за 4шт датчики давления - адекватные которые нашёл 5 шт х 1400 мощные ключи управления со всей мелочёвкой - до 2 тр ардуина - средне 1500 модуль связи+гироскоп - ? условно возьмём 1тр или тот-же модуль отображения будет стоить намного дороже(около 4тр), не считая приятной установки в авто как видно из всего перечня, стоимость датчиков переваливает в два раза стоимости контроллера. поэтому стоимость трудозатрат грамотного специалиста на программу - навскидку приблизительно пятак на каждый комплект и будет зависить от жадности его и объёма продаж. но и тут есть выгода нам, ему эта всякая лабуда будет дешевле за оптовые закупки + уверенность работы в проверенных датчиках. итого: 15-20тр за мозг управления, без блока клапанов и всей механической лабуды.
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:24, Obrokoff сказал: Дисплей 3,2" 950 р. Блок реле 350 р. Дуина 350 р. Вот и почти весь бюджет. ну можно и 2,4 дюйма взять за 250р для уны http://www.ebay.com/itm/2-4-inch-TFT-lcd-shield-for-Arduino-UNO-/301094536907?pt=LH_DefaultDomain_0&hash=item461aa206cb
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:29, Vlad-bodryi сказал: могу приблизительно накидать смету на стоимость лабуды помимо контроллера: датчики положения - где-то здесь на форуме бесконтактные от ленд ровера в районе 4 тр за 4шт датчики давления - адекватные которые нашёл 5 шт х 1400 мощные ключи управления со всей мелочёвкой - до 2 тр ардуина - средне 1500 модуль связи+гироскоп - ? условно возьмём 1тр или тот-же модуль отображения будет стоить намного дороже(около 4тр), не считая приятной установки в авто если датчики высоты стоят то зачем еще датчики давления? еще и 5 штук? деньги на ветер -8 тыщ сразу. Ардуина не 1500 а 500 макс.
Smitt Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 проект опенсурс, что же делать в первую очередь ну да конечно продажи и сметы
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 на ходу есть смысл что-то регулировать? или надо какую-то блокировку предусмотреть в движении?
Vlad-bodryi Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:34, kort сказал: если датчики высоты стоят то зачем еще датчики давления? еще и 5 штук? деньги на ветер -8 тыщ сразу. Ардуина не 1500 а 500 макс. датчики давления нужны для определения нижнего уровня давления в каждом контуре, особенно на подушках рукавного типа(срыв рукава), плюс аварийный режим(на джипах легко оторвать датчик положения) 5-й - для показания давления в ресивере. цены условно-рыночные привёл из наличия в моём городе и москве(датчики давления), можно конечно и дешевле нарыть, но конечная стоимость не намного изменится и ниже 15тр вряд-ли можно уронить для единичного случая!
vic_le Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Видать продажи Arduin -ов стали падать.
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:29, Vlad-bodryi сказал: могу приблизительно накидать смету на стоимость лабуды помимо контроллера итого: 15-20тр за мозг управления, без блока клапанов и всей механической лабуды. Усложнил. Дуина со всей лабудой примерно 1600, 4 датчика высоты примерно 4500, коннекторы, проводка и мелочевка еще 500 р. Итого контроллер и датчики примерно 6600. Контроллер Paln'a с датчиками обойдется в большую сумму. И есть одно но, его программу не изменить. На ардуине реально реализовать все фичи, которые нужны конкретно тебе. У меня есть несколько идей, которые облегчат мне жизнь, никто в свой контроллер, по моей просьбе, их не добавит. Более менее рабочий скетч уже есть, можно его малыми силами доработать под себя.
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:43, kort сказал: на ходу есть смысл что-то регулировать? или надо какую-то блокировку предусмотреть в движении? Есть, контроль положения во избежании кренов и, например, занижение по скорости.
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:43, Vlad-bodryi сказал: датчики давления нужны для определения нижнего уровня давления в каждом контуре, особенно на подушках рукавного типа(срыв рукава), плюс аварийный режим(на джипах легко оторвать датчик положения). Датчик положения кузова все это покажет. Обрыв легко диагностируется отсутствием сигнала с датчика.
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Показулька давления в ресе не обязательна для контроллера.
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:43, vic_le сказал: Видать продажи Arduin -ов стали падать. в смысле? они есть оригиналы итальянские дорогие, а есть китайские полные копии, вот они копейки стоят
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:51, Obrokoff сказал: Есть, контроль положения во избежании кренов и, например, занижение по скорости. крены на ходу править? это по-моему бесмысленная и очень опасная затея
Obrokoff Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:56, kort сказал: крены на ходу править? это по-моему бесмысленная и очень опасная затея Любой брендовый контроллер так работает.
Kostya86 Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 Вот эти цены очень приятные. http://www.tinydeal.com/index.php?main_page=ws_search_result&keyword=arduino&categories_id=&cat_change=true Думаю соберу заказик и начну собирать.
vic_le Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 11:55, kort сказал: в смысле? они есть оригиналы итальянские дорогие, а есть китайские полные копии, вот они копейки стоят Если есть представление как строится электронный блок для автомобиля то сразу возникнут множество требований которым не отвечает в принцыпе кружковый набор под названием "Arduino". Если представления нет то совет разобрать и посмотреть как устроены подобные блоки, очень много можно почерпнуть интересного. В оисаниях кто-нить читал для чего "Arduino" вобще придуман. Даже если откатать скетчи под дуину до более менее работоспособного состояния то схемотехнические решения всё равно придется допиливать-допаивать ручками. И надеятся что китайцы всё сделают в своих копеечных поделках не стоит!
kort Опубликовано 13 февраля, 2014 Автор Опубликовано 13 февраля, 2014 Не надо мне автомобильные блоки советовать разбирать, у меня обычная атмега двигателем и навесным оборудованием управляет и ничего.
vic_le Опубликовано 13 февраля, 2014 Опубликовано 13 февраля, 2014 В 13.02.2014 в 12:33, kort сказал: Не надо мне автомобильные блоки советовать разбирать, у меня обычная атмега двигателем и навесным оборудованием управляет и ничего. Дуина или АТМега?
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти