Перейти к содержанию

Рекомендуемые сообщения

Опубликовано (изменено)

@kort, сам-то что не напишешь? я думаю что любой знающий основы программирования способен написать алгоритм на мегах. ну а если незнаешь основ(как я) - то и изменить под себя не сможешь!

Изменено пользователем Vlad-bodryi
  • Ответов 557
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

Изображения в теме

Опубликовано

Скетч для ардуины:

 

 

 

#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);

 

 

 

}

 

}

}

 

 

 

Опубликовано

Это оригинал скетча найденого в тырнете.

Переделываю потихоньку, добавляю новые фичи.

Опубликовано

 Я так думаю  что @kort,  закинул  "утку"  и хочет посмотреть, что из этого получится. МЕГА которая будет работать с экраном 3.2"  и тач  не будет стоить 400-500рэ + переходник под екран.  Если задача не стоит получить только картинку. :smile3:  

Опубликовано

ну у меня этих экранов просто куча, я уже делал на них экран для вывода параметров с мозгов, хочу добавить функционала

 

85365475833d.jpg

 

с другим экраном алгоритм основной все равно не особо изменится

Опубликовано

Дисплей 3,2" 950 р. Блок реле 350 р. Дуина 350 р. Вот и почти весь бюджет.

Опубликовано

могу приблизительно накидать смету на стоимость лабуды помимо контроллера:

 

датчики положения - где-то здесь на форуме бесконтактные от ленд ровера в районе 4 тр за 4шт

датчики давления - адекватные которые нашёл 5 шт х 1400

мощные ключи управления со всей мелочёвкой - до 2 тр

ардуина - средне 1500

модуль связи+гироскоп - ? условно возьмём 1тр или тот-же модуль отображения будет стоить намного дороже(около 4тр), не считая приятной установки в авто

 

как видно из всего перечня, стоимость датчиков переваливает в два раза стоимости контроллера. поэтому стоимость трудозатрат грамотного специалиста на программу - навскидку приблизительно пятак на каждый комплект и будет зависить от жадности его и объёма продаж. но и тут есть выгода нам, ему эта всякая лабуда будет дешевле за оптовые закупки + уверенность работы в проверенных датчиках.

 

итого: 15-20тр за мозг управления, без блока клапанов и всей механической лабуды.

Опубликовано

могу приблизительно накидать смету на стоимость лабуды помимо контроллера:

 

датчики положения - где-то здесь на форуме бесконтактные от ленд ровера в районе 4 тр за 4шт

датчики давления - адекватные которые нашёл 5 шт х 1400

мощные ключи управления со всей мелочёвкой - до 2 тр

ардуина - средне 1500

модуль связи+гироскоп - ? условно возьмём 1тр или тот-же модуль отображения будет стоить намного дороже(около 4тр), не считая приятной установки в авто

если датчики высоты стоят то зачем еще датчики давления? еще и 5 штук? деньги на ветер -8 тыщ сразу. Ардуина не 1500 а 500 макс. 

Опубликовано

на ходу есть смысл что-то регулировать? или надо какую-то блокировку предусмотреть в движении?

Опубликовано

если датчики высоты стоят то зачем еще датчики давления? еще и 5 штук? деньги на ветер -8 тыщ сразу. Ардуина не 1500 а 500 макс. 

датчики давления нужны для определения нижнего уровня давления в каждом контуре, особенно на подушках рукавного типа(срыв рукава), плюс аварийный режим(на джипах легко оторвать датчик положения)

5-й - для показания давления в ресивере.

 

цены условно-рыночные привёл из наличия в моём городе и москве(датчики давления), можно конечно и дешевле нарыть, но конечная стоимость не намного изменится и ниже 15тр вряд-ли можно уронить для единичного случая!

Опубликовано

могу приблизительно накидать смету на стоимость лабуды помимо контроллера

 

итого: 15-20тр за мозг управления, без блока клапанов и всей механической лабуды.

Усложнил.

Дуина со всей лабудой примерно 1600, 4 датчика высоты примерно 4500, коннекторы, проводка и мелочевка еще 500 р.

Итого контроллер и датчики примерно 6600. Контроллер Paln'a с датчиками обойдется в большую сумму. И есть одно но, его программу не изменить. На ардуине реально реализовать все фичи, которые нужны конкретно тебе.

 

У меня есть несколько идей, которые облегчат мне жизнь, никто в свой контроллер, по моей просьбе, их не добавит.

Более менее рабочий скетч уже есть, можно его малыми силами доработать под себя.

Опубликовано

на ходу есть смысл что-то регулировать? или надо какую-то блокировку предусмотреть в движении?

Есть, контроль положения во избежании кренов и, например, занижение по скорости.

Опубликовано

датчики давления нужны для определения нижнего уровня давления в каждом контуре, особенно на подушках рукавного типа(срыв рукава), плюс аварийный режим(на джипах легко оторвать датчик положения).

 

Датчик положения кузова все это покажет. Обрыв легко диагностируется отсутствием сигнала с датчика.
Опубликовано

Видать продажи Arduin -ов стали падать.

в смысле? они есть оригиналы итальянские дорогие, а есть китайские полные копии, вот они копейки стоят

Опубликовано

Есть, контроль положения во избежании кренов и, например, занижение по скорости.

крены на ходу править? это по-моему бесмысленная и очень опасная затея

Опубликовано

крены на ходу править? это по-моему бесмысленная и очень опасная затея

Любой брендовый контроллер так работает.

Опубликовано

в смысле? они есть оригиналы итальянские дорогие, а есть китайские полные копии, вот они копейки стоят

Если есть представление  как строится электронный блок для автомобиля то сразу возникнут множество требований которым не отвечает в принцыпе кружковый набор под названием "Arduino".  Если представления нет то совет разобрать и посмотреть как устроены  подобные блоки,  очень много можно почерпнуть интересного.  В оисаниях  кто-нить  читал для чего "Arduino" вобще придуман. Даже если откатать скетчи под дуину до более менее работоспособного состояния то схемотехнические решения всё равно придется допиливать-допаивать ручками. И надеятся что китайцы всё сделают в своих копеечных поделках не стоит! 

Опубликовано

Не надо мне автомобильные блоки советовать разбирать, у меня обычная атмега двигателем и навесным оборудованием управляет и ничего. 

Опубликовано

Не надо мне автомобильные блоки советовать разбирать, у меня обычная атмега двигателем и навесным оборудованием управляет и ничего. 

Дуина или АТМега?

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×
×
  • Создать...