Помогите с телом программы по стеклоподъемникам
- Войдите на сайт для отправки комментариев
Друзья, помогите пожалуйста написать тело программы. Пытаюсь реализовать функцию доводчиков стекол в автомобиле. Алгоритм следующий:
1. Сел, включил зажигание(pin1=Hi), на блок стеклоподъемников пошло питание (pin4=Hi). Ничего не происходит, стекла управляются вручную.
2. Выключил зажигание (Pin1=low). Ардуина ждет 5 секунд и поднимает окна (pin3)б т.е. (Pin4=Hi, Pin3=Hi).
3. Если с момнта первого отключения я в течении 5 секунд включил и опять выключил зажигание, то ардуина переходит в режим закрывания стекол от сигналки (pin2) (Если Pin2=Hi,то Pin3=Hi,Pin=4 Hi), Затем отключает питание с блока стеклоподъемников (Pin4=Low) (так планирую реализовать функцию отмены автоматического поднятия, например когда заглушил,но сижу в автомобиле)
4. если я во второй раз включил зажигание но не выключил в течении 2 секунд, то возврат к первому пункту.
начал писать сам но запутался с if и elso. да и не знаю как организовать чтение портов за определенное время (5 и 2 секунды)
Я так себе представляю:
Есть таймер, отсчитывающий секунды (отдельная переменная, даже две) на функции millis().
Ардуино должна быть запущена постоянно, т.е. питаться почти напрямую от АКБ, потому как она сама запускается около 3-5 сек.
На пин1 появился синал и переменная1 равна 0, то поднять напряжение на пин4, присвоить переменной значение 1.
На пин1исчез сигнал, начинается отсчет в отдельную переменную 2, каждую секунду, если переменная достигла значения 5, дать сигнал на пин4 и 5, до срабатывания датчика закрытия.
Если нет, переменная 2 больше 0 и меньше 5, то:
"(Если Pin2=Hi,то Pin3=Hi,Pin=4 Hi), Затем отключает питание с блока стеклоподъемников (Pin4=Low)"
Если пин1 появился сигнал и переменная1 равна 1, то начать отсчет в переменную 3, если она достигла значения 2, то сбросить все переменные в 0.
ELSE использовать не обязательно.
Закинь, хоть какой-нибудь код, чтоб было от чего плясать.