RGB лента и SR505 скетч
- Войдите на сайт для отправки комментариев
Приветствую вас! У меня к вам просьба, может ли кто то подсказать как правильно написать скетч для Arduino NANO? Суть задачи такова, нужно что бы при срабатывании датчика движения (SR505) поочередно загорались диоды светодиодной ленты и когда очередь дойдет до последнего, это все добро светило определенное количество времени (для теста я взял кусочек ленты с 3мя светодиодами).В общем макет я собрал и протестил скетч что бы просто при включении светодиоды загорались по очереди, так же проверил работает ли датчик движения. Дальше решил вклинить один скетч во второй, по идеи оно должно было заработать, но что то пошло не так)) Скетч не реагирует на датчик движения, а просто зациклил работу ленты....
Хотелось что бы при срабатывании датчика движения, поочередно загорались светодиоды, и продолжали светить некоторое время, далее если датчик движения не шлет сигнал то светодиоды тухли через 2 минуты и цикл завершался, до тех пор пока датчик не пошлет сигнал снова.
Вот тот скетч что я сотворил:
http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
Первое сообщение не редактируется, вставьте новым.
delay() полностью останавливает работу контроллера, посмотрите в сторону http://arduino.ru/tutorials/BlinkWithoutDelay
Плохо - Вы всё время чего-то пишете. Не надо так делать. Используйте промежуточную булеву переменную.
Алгоритм такой
1. Проверяем датчик
2. Если датчик не работает И промежуточная переменная равна 0 - ничего не делаем
3. Если датчик работает И промежуточная переменная равна 1 - ничего не делаем
4. Датчик не работает И промежуточная переменная равна 1 записываем в промежуточную переменную 1 и включаем светодиоды, выводим на ленту.
5. Датчик работает И промежуточная переменная равна 0 записываем в промежуточную переменную 0 и выключаем светодиоды, выводим на ленту.
Кстати, старое значение датчика можно назвать oldvalue :)