Приветствую.
Не прошло и полгода как удалось довести до ума идею. Дарю к Новому году
Во вложении архив с прошивками для частот 56 кГц и 36 кГц(не тестировалась).
Тир с мишенями, максимальное количество - 15. Тестировал на 3-х.
Порядок включения описан выше - это важно.
Одна из мишеней должна иметь 3 кнопки, остальным они не нужны, можно только оставить Старт игры . Если кнопки не делать, обязательно подтянуть вход , к которому подключены кнопки, резистором 10К к питанию.
Назначение кнопок:
Mode - выбор режима. Режимов 3. При нажатии на кнопку (на одной мишени) все мишени отображают режим количеством вспышек - 1,2 или 3.
Режим 1 (при включении) - активация мишеней по порядку присвоенных при включении номеров, начиная с мишени, на которой нажата кнопка.
Режим 2 - активация мишеней в случайном порядке без повторений, т.е. каждая мишень будет обязательно активирована единожды.
Режим 3 - активация мишеней в случайном порядке с возможностью повторений. Количество активаций равно количеству мишеней. Т.е. возможна ситуация, когда только 2 мишени будут по очереди активироваться всю игру.
Timer - выбор времени активации каждой мишени. Диапазон 0,5 - 5 секунд с шагом 0,5 секунд. При включении 2,5 секунды.
При нажатии этой кнопки (на одной мишени) все мишени вспыхивают на время активации. Т.е. при каждом нажатии время вспышки будет уменьшаться, после 0,5 секунд выбирается 5 секунд и далее вниз.
Идея описана в сообщениях выше, главное что добавил - 2 канала приема.
Один канал - IR_Receiver_Shot реагирует и на выстрели и на команды обмена между мишенями, т.е. в простом случае можно использовать только его.
Второй канал - IR_Receiver_Cmd реагирует только на команды. Т.е. попадания в него мишень не фиксирует. Зачем это сделано?
1. Можно изолировать в трубке приемник IR_Receiver_Shot , оставив приемник IR_Receiver_Cmd открытым. Для повышения точности реанирования мишени на выстрелы. Т.к. реальный тест пока не устраивал, подозреваю, что будут рикошеты в помещении и один приемник будет сильно реагировать на отраженный сигнал выстрела. Сергей предлагал снижать мощность выстрела, я решил ввести второй канал.
2. Можно сделать обмен между мишенями по Радио, подключив на вход IR_Receiver_Cmd сигнал с Радиоприемника, радиопередатчик включив вместо ИК диода. Это потребует доработки программы - только отключения модуляции 56 кГц (36 кГц). В любом случае пока нет под руками готовых радиомодулей, не проверял.
После окончания Игры и паузы в 1 секунду пораженные мишени загораются на 5 секунд.
Пока игра идет, включая время отображения результата, кнопки не работают.
Из особенностей - мишень, с которой запущена игра, в процессе игры может быть активирована повторно (в зависимости от режима). Можно это убрать.
В конце игры передается ИК сигнал Конец игры, содержащий количество пораженных мишеней. Можно сделать отдельное устройство - дисплей - для отображения результата.
Сделал возможность запуска Игры сигналом Respawn, но не проверил.
Никогда не тратил столько времени на оптимизацию кода
, еще 26 байт свободны;).
Считаю проект закрытым
Самый главный недостаток - если в процессе игры одна мишень пропадает (сбой питания, не получена ИК посылка и т.п.) то цепочка рушится,
поэтому считаю вариант с Радиопередачей более надежным. И наверно должно быть отдельное устройство (База) , управляющее всеми мишенями.
Но это уже совсем другая история...