квест код

palmer
Offline
Зарегистрирован: 22.05.2016

Доброго времени суток всем))начал писать код под квест и столкнулся с проблемами,а именно:

1.НЕ получается записать несколько действий на одну ардуино,т.е. например нужно чтобы при обнаружении человека-датчиком двжиения,загорелись 3 светодиода,затем нужно передвинуть цифру(геркон+магнит) и повернется серво на 180 градусов.Но при этом нужно чтобы датчик двжиения и серво с герконом были независимы.то есть мне наверно надо несколько void loop но как я понял так нельзя?

2. Тут же вытекает вторая проблема,как сделать так чтобы серво только открывался,а закрывлася обратно когда сделаю перезагрузку?так как магнит с герконом останутся включенными,и серво будет крутиться целый час пока геркон и магнит не разъединят то ест ьпока не пройдут квест.Это же касается и пешалки(пьезлоэлемента) нужно чтобы он попещал ненмого и выключился)то есть нажму на кнопку пещалка поиграет ,я отпущу кнопку оан все еще будет играть сек 20)))

Помогите кто меня понял,очень нужна ваша помощь)))Заранее огромнео спасибо))

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Почитайте blink without delay.

Если Вы это поняли, то, думаю, не составить труда в одном цикле (loop) поочередно вызывать процедуры управления всеми устройствами.

Для каждого из устройств используется своя переменная состояния, при этом на каждом проходе цикла анализируется ситуация и в зависимости от внешних условий (поступления сигналда с датчика, наступления определеннго времени...) и текущего состояния вычисляется новое состояние, а уже по номеру состояния - реакция на него (управление звуком, светом, механическими устройствами).

palmer
Offline
Зарегистрирован: 22.05.2016

Andriano, там вроде через милс используется?)ну то есть там только через время будет меняться поочерёдность?или я неправильно понял?)спасибо большое))))

palmer
Offline
Зарегистрирован: 22.05.2016

И ещё вопрос а если мне нужно просто выполнять последовательно разные действия?))

palmer
Offline
Зарегистрирован: 22.05.2016

Может нужно писать вместо void loop, void...?или же через if ... сделать все последовательно?))

nevkon
Offline
Зарегистрирован: 20.01.2015

Распишите набор приборов для подключения к дуне и пример действий. Тогда будет много проще вам помочь.

А то из той тирады я например весьма смутно понял что вы пытаетесь сделать.

palmer
Offline
Зарегистрирован: 22.05.2016

Хорошо,сейчас пока не дома,приду распишу подробно последовательность и что к чему)

palmer
Offline
Зарегистрирован: 22.05.2016

1)Пройдя в определенном месте сработает датчик движения и замигают 3 светодиода на картине на определенных предметах (датчик движения и 3 светодиода)

2)нужно перевернуть число в дате рождения геркон+магнит +серво(т.е. Магнит соприкоснется с герконом и сработает и серво -повернется на 180 градусов)тут тоже момент(лучше оставить его в том же положении и потом как пройдут квест перезагрузить ардуину и все?))

3)дальше суть та же, дальше фонариком светим на фоторезистор и срабатывает другой серво)затем зажимаем 3 кнопки(простые) и снова срабатывает ещё один серво)всего около 9 серво))

подскажите пожалуйста как лучше сделать?я уже думаю может это все через if сделать,последовательно и все?)

palmer
Offline
Зарегистрирован: 22.05.2016

Пройдя в определенном месте сработает датчик движения и замигают 3 светодиода на картине на определенных предметах (датчик движения и 3 светодиода)

2)нужно перевернуть число в дате рождения геркон+магнит +серво(т.е. Магнит соприкоснется с герконом и сработает и серво -повернется на 180 градусов)тут тоже момент(лучше оставить его в том же положении и потом как пройдут квест перезагрузить ардуину и все?))

3)дальше суть та же, дальше фонариком светим на фоторезистор и срабатывает другой серво)затем зажимаем 3 кнопки(простые) и снова срабатывает ещё один серво)всего около 9 серво))

 

подскажите пожалуйста как лучше сделать?я уже думаю может это все через if сделать,последовательно и все?)

Coolerr
Offline
Зарегистрирован: 30.06.2014

Можно использовать while и выход из него по условию.