ACR122U Светодиодное управление
Кто-нибудь знает, как управлять двухцветным светодиодом ACR122U с помощью метода Reader.control()
на андроид? (библиотека acssmc-1.1.3).
Я читаю API и понятия не имею, что означает описание команды:
Пример:
byte[] command = {(byte) 0xFF, (byte) 0x00, (byte) 0x40, (byte) 0b01110111, (byte) 0x04, (byte) 20, (byte) 30, (byte) 3, (byte) 2};
Эти вещи я не понимаю
- Байт 3 (P2): я не могу понять, как это настроить.
- Байт 5 (T1): продолжительность первого цикла, каким-то образом управляемая из байта 3?
- Байт 6 (T2): Продолжительность состояния второго цикла, которая каким-то образом контролируется из байта 3?
- Байт 7 (количество повторений): количество общих повторений состояний 1-го и 2-го цикла?
Некоторые объясненные примеры были бы потрясающими.
1 ответ
Команда для изменения состояния светодиода
+------+------+------+------+------+------+------+------+------+ | CLA | INS | P1 | P2 | Lc | ДАННЫЕ | +------+------+------+------+------+------+------+------+------+ | 0xFF | 0x00 | 0x40 | SC | 0x04 | T1 | T2 | #R | 0x00 | +------+------+------+------+------+------+------+------+------+
где SC определяет состояние светодиодов (постоянно включается / выключается, мигает), T1/T2 определяет форму мигающей волны, а #R определяет количество повторений формы мигающей волны.
Таким образом, основным параметром, определяющим, как должны мигать светодиоды и как они должны выглядеть после окончания мигания, является SC. Это поле из 8 битов:
- Бит 0: этот флаг определяет состояние красного светодиода после окончания мигания (см. Также бит 2).
- Бит 1: этот флаг определяет состояние зеленого светодиода после окончания мигания (см. Также бит 3).
- Бит 2: только если этот флаг установлен (1), состояние красного светодиода будет установлено на значение бита 0 после окончания мигания. Если этот флажок снят (0), красный светодиод вернется в состояние, в котором он находился до того, как была введена команда управления светодиодом.
- Бит 3: только если этот флаг установлен (1), состояние зеленого светодиода будет установлено на значение бита 0 после завершения мигания. Если этот флажок снят (0), зеленый светодиод вернется в состояние, в котором он находился до того, как была введена команда управления светодиодом.
- Бит 4: этот флаг определяет состояние, в котором красный светодиод должен быть установлен в начале выполнения команды управления светодиодом.
- Бит 5: Этот флаг определяет состояние, в котором должен быть установлен зеленый светодиод в начале выполнения команды управления светодиодом.
- Бит 6: этот флаг определяет, должен ли красный светодиод переключаться с мигающей формой волны.
- Бит 7: этот флаг определяет, должен ли зеленый светодиод переключаться с мигающей формой волны.
Итак, давайте предположим, что вы установили биты 4 и 6 SC (и очистите остальные), то есть SC = 0x50. Кроме того, вы устанавливаете T1 = 5 (0x05), T2 = 10 (0x0A) и #R = 2 (0x02). Таким образом, у вас есть следующая команда:
+ ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + | 0xFF | 0x00 | 0x40 | 0x50 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ +
Затем зеленый светодиод выключится, а красный светодиод мигнет два раза со следующей формой волны:
КРАСНЫЙ НА ----------\ /----------\ | | | КРАСНЫЙ ВЫКЛЮЧЕНО \--------------------/ \-------------------- \________/ \__________________/ \________/ \__________________/ T1 = 500 мс T2 = 1000 мс T1 = 500 мс T2 = 1000 мс \_____________________________/ \_____________________________/ Повторение 1 Повторение 2
Теперь давайте предположим, что вы также хотите мигать зеленым светодиодом, но с его начальным состоянием, установленным в положение "выкл." (Так что мигание переключается между красным и зеленым вместо красного и без подсветки). Поэтому вы также устанавливаете бит 7 SC, то есть SC = 0xD0. Таким образом, у вас есть следующая команда:
+ ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + | 0xFF | 0x00 | 0x40 | 0xD0 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ +
Тогда красный светодиод и зеленый светодиод будут попеременно мигать два раза со следующей формой волны:
КРАСНЫЙ НА ---------- \ / ---------- \ | | | КРАСНЫЙ ВЫКЛЮЧЕНО \ -------------------- / \ -------------------- ЗЕЛЕНЫЙ ВКЛ /--------------------\ /-------------------- | | | ЗЕЛЕНЫЙ ВЫКЛ ----------/ \----------/ \________/ \__________________/ \________/ \__________________/ T1 = 500 мс T2 = 1000 мс T1 = 500 мс T2 = 1000 мс \_____________________________/ \_____________________________/ Повторение 1 Повторение 2
Теперь давайте предположим, что после того, как мигание закончилось, вы хотите, чтобы красный светодиод был постоянно включен, а зеленый светодиод был постоянно выключен. Поэтому вам необходимо установить биты 2 и 3, чтобы можно было определить конечное состояние двух светодиодов. (Если вы не установите эти биты, то значения битов 0 и 1 будут просто игнорироваться.) Затем вы захотите определить конечное состояние: красный включен (бит 0 = 1) и выключен (бит 1 = 0). Следовательно, вы получаете SC = 0xDD. Таким образом, у вас есть следующая команда:
+ ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + | 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 | + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ +
Затем красный светодиод и зеленый светодиод будут попеременно мигать два раза, красный светодиод включится после мигания, а зеленый светодиод выключится. Вы получите следующую форму волны:
КРАСНЫЙ НА ----------\ /----------\ /--------------... | | | | КРАСНЫЙ ВЫКЛЮЧЕНО \--------------------/ \--------------------/ ЗЕЛЕНЫЙ ВКЛ /--------------------\ /--------------------\ | | | | ЗЕЛЕНЫЙ ВЫКЛ ----------/ \----------/ \--------------... \________/ \__________________/ \________/ \__________________/ T1 = 500 мс T2 = 1000 мс T1 = 500 мс T2 = 1000 мс \_____________________________/ \_____________________________/ \_____________... Повторение 1 Повторение 2 Конечное состояние
Наконец, вы хотите уменьшить количество повторений до 1 (#R = 0x01) и инвертировать верхнюю и нижнюю фазы мигающей формы волны (T1 = 0x0A и T2 = 0x05). Таким образом, у вас есть следующая команда:
+ ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + | 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x0A | 0x05 | 0x01 | 0x00 | + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ + ------ +
Вы получите следующую форму волны:
КРАСНЫЙ НА --------------------\ /--------------... | | КРАСНЫЙ ВЫКЛ \ ---------- / ЗЕЛЕНЫЙ ВКЛ / ---------- \ | | ЗЕЛЕНЫЙ ВЫКЛ --------------------/ \--------------... \__________________/ \________/ T1 = 1000 мс T2 = 500 мс \ _____________________________ / \ _____________... Повторение 1 Конечное состояние