PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Разработка программ (http://pccar.ru/forumdisplay.php?f=27)
-   -   HELP!! Arduino (http://pccar.ru/showthread.php?t=16136)

Dj Aleks 28.10.2011 22:06

может тогда надо else if????


Оператор If..else

Конструкция if..else предоставляет больший контроль над процессом выполнения кода, чем базовый оператор if, позволяя осуществлять несколько проверок, объединенных вместе. Например, аналоговый вход может быть проверен и выполнено одно действие, если на входе меньше 500, или другой действие, если на входе 500 или больше. Код при этом может выглядеть так:
if (pinFiveInput < 500)
{
// действие A
}
else
{
// действие B
}

Другой способ создания переходов со взаимоисключающими проверками использует оператор switch case.

Else позволяет делать отличную от указанной в if проверку, чтобы можно было осуществлять сразу несколько взаимоисключающих проверок. Каждая проверка позволяет переходить к следующему за ней оператору не раньше, чем получит логический результат ИСТИНА. Когда проверка с результатом ИСТИНА найдена, запускается вложенная в нее блок операторов, и затем программа игнорирует все следующие строки в конструкции if..else. Если ни одна из проверок не получила результат ИСТИНА, по умолчанию выполняется блок операторов в else, если последний присутствует, и устанавливается действие по умолчанию.

Отметим, что конструкция else if может быть использована с или без заключительного else и наоборот. Допускается неограниченное число таких переходов else if.

if (pinFiveInput < 500)
{
// выполнять действие A
}
else if (pinFiveInput >= 1000)
{
// выполнять действие B
}
else
{
// выполнять действие C
}

BlkDem 28.10.2011 22:22

Мы твое видение задачи не представляем, поэтому и советуем, считай, на ощупь. Но смысл ты улавливаешь - эт хорошо. Не спеши, разбирайся, понимание не сразу приходит ;)

Dj Aleks 28.10.2011 22:28

смысл простой...
1. Сделать запуск двигателя по кнопке.
2. Управление питанием усилителей, мониторов, компа. Включение и выключение компа по кнопке.
3. Переключение на камеру заднего вида и назад.

значит...
1 и 2. нажимаем кнопку. Включается АСС. включаем стартер на 10 секунд. через 1 сек подаем питание на блок питания ноутбука и монитора. нажатие кнопки ноутбука. через 30 сек включение усилителей.
нажимаем кнопку еще раз... выключение АСС, усилителей. нажатие на кнопку выключения компа. через 1 минуту выключение блока питания ноутбука...
3. при включении задней передачи, нажатие на кнопку один раз, при выключении нажатие на кнопку 2 раза.. вот весь алгоритм...

Dj Aleks 28.10.2011 22:37

я не прошу написать за меня, мне самому не интересен проект будет... Просто ткнуть как говорится носом :) Пересмотрел по 10 раз весь справочник arduino, перечитал, не могу понять что не так... может протеус глючит... пишу даже простой бегущий огонь на 8 светодиодов с кнопкой... нажимаю кнопку пробегает все и стопорится... нажимаю опять тоже самое... читаю инфу.. loop зацикливает программу... т.е. должны по нажатию кнопки бегать постоянно пока ресет не нажмешь или питание не сдернешь...

Dj Aleks 28.10.2011 22:58

все, для камеры переключение, написал... спасибо Hamster за толчок носом в нужную сторону)))) остальное остается актуальным..

Dj Aleks 29.10.2011 01:15

Уважаемые Гуру. Работаю в эмуляторе proteus. на atmege328P попробовал поставить atmega8 подключил все так же... загружаю скетч, и не тут то было... не работает.. ставлю назад 328Р все ок... в чем может быть трабл?... от ардуины решил отказаться и усложнить себе задачу))) купить атмегу и самому печатку сделать... 8 атмега просто дешевле)))

Dj Aleks 29.10.2011 21:11

Вложений: 1
вот схема подключения

awtoap 30.10.2011 18:35

На вскидку могу сказать отличаются адреса и количество регистров у процов и тд. Поставь мегу 48,88,168 по идее это её братья, только с меньшей памятью программ.

Dj Aleks 30.10.2011 23:25

не идет все равно... на 6 выходе постоянно HIGH...

ide16rus 07.12.2012 22:44

Тоже задумал сделать систему Start/Stop по кнопке с помощью ардуино уно, но, ёптель, я никак не помышлял о том, чтобы тупо стартером 200мс крутить :) Я думал, что нужно для запуска двигателя по кнопке следующее:
1. Контрольный вход кнопки Start/Stop
2. Контрольный вход "Состояние сигнализации" (т.е. проверить на охране или нет)
3. Контрольный вход "ключ зажигания" (т.е. наличие разрешающего сигнала с некоего контрольного устройства, активируемого дистанционно или посредством вставки ключа или совмещённое с ним).
4. Контрольный вход "тахометр".
5. Контрольный вход "спидометр".
6. Управляющий выход "Зажигание".
7. Управляющий выход "Стартер".

Логику работы этого дела представлял себе так:
1. Ардуино без ключа работать не должно. Включаться и запускать циклическую программу должно только при вставке ключа (грубо говоря это дублирует контрольный вход 3. Можно от него отказаться заменив просто подачей питания на ардуино).
2. Далее при вставке ключа циклическая программа запускается и начинает опрашивать контрольные входы. Главным условием для разрешения является состояние "снято в охраны" на входе "состояние сигнализации".
3. Затем каким-то образом требуется проконтролировать состояние скорости. Если на входе "спидометра" нет импульсов (машина стоит на месте), то кнопка старт/стоп сработает... Если авто в движении - кнопка старт/стоп блокирована и не реагирует на нажатия.
4. Также необходимо как-то проконтролировать обороты двигателя. Притом там несколько функций: с одной стороны отсутствие оборотов должно при нажатии кнопки старт/стоп режим запуска двигателя. Если обороты уже есть до нажатия на кнопку, то должна быть выполнена остановка двигателя и через секунду отключение зажигания. Но помимо этого в цикле запуска двигателя этот вход должен помимо всего прочего проконтролировать нарастание оборотов двигателя. Т.е., скажем, ардуина крутит стартером 2,5-3 секунды ИЛИ пока на входе "тахометр" не появятся обороты выше, скажем, 400-500 об/мин. Вот это я вообще пока не знаю как можно реализовать... какими циклами, чтобы и интервал измерений небольшой был, и при этом нормальная разрешающая способность (т.е. чтоб уж обороты не сотнями считать, а хотя бы десятки различать).

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

Короче, может быть кто-нибудь уже сделал нормальный старт/стоп на ардуине? Или может вообще без неё!?


Часовой пояс GMT +4, время: 06:47.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot