В продолжение к разным кодовым замкам.
Появилась идея сделать "минимальный" кодовый замок, т.е. из минимального набора элементов: процессор (обработка инфо), резистор (ввод кода), светодиод (вывод инфо) и сервомотор (исполнительный механизм).
Но это будет чуть позже, т.к. в процессе творчества захотелось добавить блок Block7Seg, для более удобного вывода информации (а если честно, то просто нет под рукой из чего сделать диск с номерами для резистора, а в слепую вводить код не получится, поэтому контроль ввода кода происходит по Block7Seg).
Появилась идея сделать "минимальный" кодовый замок, т.е. из минимального набора элементов: процессор (обработка инфо), резистор (ввод кода), светодиод (вывод инфо) и сервомотор (исполнительный механизм).
Но это будет чуть позже, т.к. в процессе творчества захотелось добавить блок Block7Seg, для более удобного вывода информации (а если честно, то просто нет под рукой из чего сделать диск с номерами для резистора, а в слепую вводить код не получится, поэтому контроль ввода кода происходит по Block7Seg).
Состав
Итак кодовый замок состоит из:
1 шт
| |
1 шт
| |
1 шт
| |
1 шт
| |
сервопривод
| 1 шт |
Фото
Алгоритм работы
Код доступа задается статически (в планах сделать его изменяемым динамически, перепрограммировать и сохранять в постоянной памяти путем нажатия кнопки, которая доступна из "безопасной" зоны, т.е. изнутри сейфа/комнаты).
- ждем пока код не станет отличным от нуля, чтобы начать работу программы (считывается код из аналоговый порта A5, куда подключен резистор CleClo-Pot, и преобразовывается диапазон 0-1023 в 0-9, все это делается в подпрограмме 'ReadCode')
- считываем код
- полученная цифра выводится на дисплей в нужную позицию (начиная с нулевой, т.е. крайней слева)
- зажигается или гасится точка под цифрой (каждые 1/4 секунды)
- сравнивается предыдущая полученная цифра с текущей
- если совпадает, то увеличивается счетчик совпадений
- если не совпадает, то счетчик обнуляется
- проверяется счетчик, если больше 30ти совпадений (примерно равно трем секундам), то код считается считанным и переходим на следующую позицию
- когда все 4 позиции пройдены то сравниваем полученный код с эталоном
- если код совпадает, то:
- открываем замок (выводим на экран надпись 'OPEN', зажигаем светодиод на порту D13, переводим сервомотор в позицию открытия замка)
- ждем пока резистор не переведут в позицию '0'
- закрываем замок (выводим на экран надпись 'SHUT', гасим светодиод на порту D13, переводим сервомотор в позицию закрытия замка
- если код не совпадает, то выводим на экран надпись 'NOPE' (типа облом!) и ждем пока не изменится позиция резистора (для того чтоб не зацикливаться, если резистор оставили в положении отличном от нуля), начинаем все сначала.
Код
Видео отчет
Скоро...
Комментариев нет:
Отправить комментарий