Помогите написать программу по алгоритму

Speedflyer
Offline
Зарегистрирован: 18.01.2015

Ждать 40 цифровых импульсов(с 50 например), затем считывать показания с аналогово входа (с А3 например) от 0,38 до 3,78 вольта и строить отношение (от 0 до 1024(напряжение аналогово) как 0 до 10 (миллисекунды)) и затем открывать выход 13 на это значение (от 0 до 10). И повторять цикл,то есть это всё в void loop.  Нужно составить эту программу (для запуска газотурбинного двигателя).

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

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 

vvadim
Offline
Зарегистрирован: 23.05.2012

Ну тебе же bwn уже написал, что нужно толково написать техзадание (а это половина успеха).

По твоим записям вряд ли помощь можно ожидать.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

добавте строку #10A - pinMode( signal , INPUT ); 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

если входной сигнал действительно от 0,38 до 3,78 - строку #29 нужно переделать....

0,38 / 5 * 1024 = 72

3,78 / 5 * 1024 = 774

tImp = map( n , 0 , 1023 , 0 , 10000 );   >>>>>>>>>>>>    tImp = map( n , 72 , 774 , 0 , 10000 );

Speedflyer
Offline
Зарегистрирован: 18.01.2015

БЛАГОДАРЮ ВАС! ВЫ НАСТОЯЩИЙ ЧЕЛОВЕК!

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

пожста; я самолёт :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не просто человек, а человек-истребитель. SU-27-16MAN

Speedflyer
Offline
Зарегистрирован: 18.01.2015

Хорошо, самолет (:

vadim-21
Offline
Зарегистрирован: 26.12.2014

SU-27-16 помоги мне пожалуйста в этои теме 

http://arduino.ru/forum/ishchu-ispolnitelya/nuzhna-pomsh-v-napisanii-prgrammy-0 

 

Прошу прлшения что ни в своей теме но там похоже помоши нидождаться

Speedflyer
Offline
Зарегистрирован: 18.01.2015

БЛАГОДАРЮ ЗА СОДЕЙСТВИЕ) Вот что получилось на моей программе http://www.youtube.com/watch?v=aVZctLVeJV8 Завтра будет на Вашей...

Speedflyer
Offline
Зарегистрирован: 18.01.2015

Еще один вопрос: Вы случайно не две программы написали...?

Roman
Offline
Зарегистрирован: 15.02.2013

Ну ты даешь! А сжечь комнату не боялся?

Speedflyer
Offline
Зарегистрирован: 18.01.2015

SU-27-16 пишет:

 

Что значит "N" и "79"?

bwn
Offline
Зарегистрирован: 25.08.2014

Speedflyer пишет:

БЛАГОДАРЮ ЗА СОДЕЙСТВИЕ) Вот что получилось на моей программе http://www.youtube.com/watch?v=aVZctLVeJV8 Завтра будет на Вашей...

Хрена себе опыты(((. Сочувствую соседям, они и не догадываются, что у них Чернобыль под боком строят.

vvadim
Offline
Зарегистрирован: 23.05.2012

У чела башню снесло.

Если бы у меня за стенкой такие эксперименты делали - яйца оторвал бы.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

N переменная для хранения колва фронтов импульсов пришедших на пин 2

79 = 40 имп * 2 фронта , по логарифмической линейке получилось 79 , я ей верю :)

Speedflyer
Offline
Зарегистрирован: 18.01.2015

1. В какой программе писали программу?

2. Можете ли каждый этап описать..?

Благодарю..

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

Среда разработки Arduino

что значит - каждый этап ? каждую строку ? - неееееее, вам самим надо всё изучить.... на мелкие воросы - отвечу :)

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

А что это такое и зачем ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

это у них смотри #10 - может быть свиную тушку так хотят опалить ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

реактивный ВЫЛЫСЫПЕД !

nsystemst
Offline
Зарегистрирован: 07.02.2015

Приветствую!!! Помогите написать код! Ни в какаую не хочет думать моя голова(

Устройство будет автоматически запускать двигатель автомобиля. 

Есть 2 кнопки: первая с фиксацией (как предохранитель), а вторая непосредственно "ВКЛ/ВЫКЛ". Назовем их "КНОПКА1" и "КНОПКА2"

Есть 2 выхода, которые будут управлять зажиганием и сартером автомобиля. Назовем их "ВЫХОД_З" и "ВЫХОД_С"

В реальности выглядит так: Фиксация КНОПКА1 (она замыкает контакт на землю) обеспечивает работоспособность устройства, если контакта нет - устройство не срабатывает. Далее по однократном нажатии на КНОПКА2 (так же замыкается на землю) включается зажигание (на ВЫХОД_З подается HIGH), далее следует пауза в 4 секунды, что бы бензонасос успел закачать топливо, и запускаеться стартер ровно на 6 секунд (на ВЫХОД_С подается HIGH). Далее зажигание остается включеным (на ВЫХОД_З остается HIGH) до тех пор пока ещё раз не нажмем на КНОПКА2

Так же если в процессе работы устройства размыкается контакт на КНОПКА1 устройство сразу же выключается (или переходит в начало цикла программы)

Вот как-то так...

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

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

 топливный насос контролируется по достижению некоторого давления в рампе - на это есть датчик

стартер включается до начала генерирования генератором тока заряда ( но не более, например 10 сек )

реально что делаете-то ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

какое авто ?

nsystemst
Offline
Зарегистрирован: 07.02.2015

SU-27-16

Устройство очень простое (без всяких вмешательств в штатные датчики и топливную систему), оно по сути эмитирует запуск двигателя с ключа (я собирал подобное устройство на 555NE, и оно прекрасно у меня работает на ВАЗ 2110 в виде запуска двигателя от доп. канала брелка сигнализации). Теперь решил собрать на микроконтроллере, и мне нужен сам код для выполнения конкретной задачи которую я описал, поскольку я новичек в процессинге, многие моменты мне не понятны. Простые программы типа основыных примеров скетчей мне даются без проблем, а вот как описать именно эту задачу опыта не хватает, хотя я уверен там 2-3 конструкций if...else будет достаточно, задача впринципе проста, но не для меня, как оказалось))) Буду признаетелен если кто-то поможет и подробно прокомментирует код. Спасибо)

P.S. Это мне наверное лучше блок схему нарисовать, что бы нагляднее было?

nsystemst
Offline
Зарегистрирован: 07.02.2015

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

R1 и R2 - внутренние резисторы МК

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

с двумя кнопками нужно два допканала на брелке.... зачем ? вот всё от одной кнопки

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

строка 7 - лишняя :)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

вместо кнопки на пин можно подать сигнал с приёмника охрсигнализации, НО - полярность сигнала нужна отрицательная, длительность импкльса > 500 mS ( или уменьшить задержку в строке 41, или строку 41 вообще убрать ), амплитуда < 5 V.

дайте параметры сигнала с приёмника охрсигнализации при нажатии на брелке кнопки допканала - я переделаю программу....

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

:( в строке 23 забыл поставить закрывающую скобку

nsystemst
Offline
Зарегистрирован: 07.02.2015

SU-27-16

Спасибо за пример) Но все же хотелось бы понять сам код на моем примере, и что я делаю не так, потому как суть не именно в устройстве а в программировании подобных схем, я почти достиг цели, всё срабатывает как мне нужно, но только при повторном нажатии на кнопку устройство не отключается а просто заново начинает цыкл, вот тут я и не нашел решения. Вот пример кода:

01const int control = 2;    //переключатель "предохранитель"
02const int on = 3;         //кнопка запуска
03const int engine = 4;     //выход на "зажигание"
04const int starter = 5;    //выход на "запуск стартера"
05int flag = 0;             //переменная состояния кнопки запуска
06 
07void setup()
08{               
09  pinMode(control, INPUT);      //обьявляем вход для пин2
10  pinMode(on, INPUT);           //обьявляем вход для пин3
11  pinMode(engine, OUTPUT);      //обьявляем выход для пин4
12  pinMode(starter, OUTPUT);     //обьявляем выход для пин5
13}
14 
15void loop()
16{
17  if(digitalRead(control)==LOW)       //Если на пин2 НИЗКИЙ уровень, выполняем программу:
18  {
19    if(digitalRead(on)==LOW&&flag==0)   //При первом нажатии на кнопку запуска выполняем программу:   
20    {
21      digitalWrite(engine, HIGH);       //Подаем высокий уровень на пин4 (включаем зажигание)
22      delay(4000);                      //Ждем 4 секунды
23      digitalWrite(starter, HIGH);      //Подаем высокий уровень на пин5 (запускаем двигатель)
24      delay(6000);                      //Ждем 6 секунд
25      digitalWrite(starter, LOW);       //Подаем низкий уровень на пин5 (включаем зажигание)
26      flag=1;                           //Запоминаем состояние кнопки запуска
27    
28    if(digitalRead(on)==LOW&&flag==1)   //При следующем нажатии на кнопку запуска:
29    {
30      digitalWrite(engine, LOW);        //Подаем низкий уровень на пин4 (выключаем зажигание)
31      flag=0;                           //Запоминаем состояние кнопки запуска
32    }
33  
34}

Что именно я делаю не так?

nsystemst
Offline
Зарегистрирован: 07.02.2015

SU-27-16 пишет:

вместо кнопки на пин можно подать сигнал с приёмника охрсигнализации, НО - полярность сигнала нужна отрицательная, длительность импкльса > 500 mS ( или уменьшить задержку в строке 41, или строку 41 вообще убрать ), амплитуда < 5 V.

дайте параметры сигнала с приёмника охрсигнализации при нажатии на брелке кнопки допканала - я переделаю программу....

всё намного проще, при нажатии на кнопку доп канала, сам контролеер сигнализации просто замыкает один из своих контактов на землю, к которому я и собраюсь подключить так называемую "кнопку запуска" (пин3)

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

1...4 - #define - так принято

5 - хватит byte

как подключены переключатель и кнопка ? если на пин и на землю, то надо пины 2 и 3 подтянуть к питанию - в строке 9А digitalWrite(controlHIGH); , аналогично в строке 10А

nsystemst
Offline
Зарегистрирован: 07.02.2015

Пины 2 и 3 подтянуты к +5В через 10КОм

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

зачем внешние ? для этого придуманы внутренние :)

смотрите как сделать чтобы стартер не перетруживался

ниже - почему не работало

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

прога правильная, вас мучал эффект "дребезг контактов" :(

это устранено задержкой в строке 49

но правильнее :

- по железному - параллельно кнопке кондёр 0,01.....0,47 мкФ ( опытным путём )

- по программному - читайте http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku

nsystemst
Offline
Зарегистрирован: 07.02.2015

Спасибо за совет по "штатным" подтяжкам!!! не знал этого, теперь буду знать) 

 

nsystemst
Offline
Зарегистрирован: 07.02.2015

Да, действительно, добавил задержку и всё заработало как нужно)) спасибо тебе добрый человек!!!

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

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

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

схема подключения из #29 - с минимальными затратами при подключении

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012