Команда, чтобы изменить состояние LED
+------+------+------+------+------+------+------+------+------+
| CLA | INS | P1 | P2 | Lc | DATA |
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | SC | 0x04 | T1 | T2 | #R | 0x00 |
+------+------+------+------+------+------+------+------+------+
, где СК определяет состояние светодиодов (непрерывно вкл/выкл, мигает), Т1/Т2 определяют мигающего форму волны, и #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 |
+------+------+------+------+------+------+------+------+------+
Тогда зеленый светодиод будет выключен, а красный светодиод мигает два раза с помощью следующей формы волны:
RED ON ----------\ /----------\
| | |
RED OFF \--------------------/ \--------------------
\________/ \__________________/ \________/ \__________________/
T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms
\_____________________________/ \_____________________________/
Repetition 1 Repetition 2
Теперь давайте предположим, что вы хотите мигать зеленым светодиодом, но его исходное состояние отключено (чтобы мигание переключалось между красным и зеленым, а не красным и без света). Поэтому вы также устанавливаете бит 7 SC, то есть SC = 0xD0. Таким образом, вы имеете следующую команду:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0xD0 | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 |
+------+------+------+------+------+------+------+------+------+
Затем красный светодиод и зеленый светодиод попеременно мигают два раза с помощью следующей формы волны:
RED ON ----------\ /----------\
| | |
RED OFF \--------------------/ \--------------------
GREEN ON /--------------------\ /--------------------
| | |
GREEN OFF ----------/ \----------/
\________/ \__________________/ \________/ \__________________/
T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms
\_____________________________/ \_____________________________/
Repetition 1 Repetition 2
Теперь предположим, что после того, как моргание закончена, вы хотите, чтобы красный светодиод постоянно включался, а зеленый светодиод постоянно горел. Поэтому вам необходимо установить биты 2 и 3, чтобы иметь возможность определять конечное состояние двух светодиодов. (Если вы не установите эти биты, тогда значения бит 0 и 1 будут просто проигнорированы.) Затем вы хотите определить конечное состояние красного цвета (бит 0 = 1) и значение gree (бит 1 = 0). Следовательно, вы получите SC = 0xDD. Таким образом, вы имеете следующую команду:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x05 | 0x0A | 0x02 | 0x00 |
+------+------+------+------+------+------+------+------+------+
Затем красный светодиод и зеленый светодиод будет попеременно мигать в два раза, красный светодиод будет включен после мигать, а зеленый светодиод будет выключен. Вы получаете следующую форму волны:
RED ON ----------\ /----------\ /--------------...
| | | |
RED OFF \--------------------/ \--------------------/
GREEN ON /--------------------\ /--------------------\
| | | |
GREEN OFF ----------/ \----------/ \--------------...
\________/ \__________________/ \________/ \__________________/
T1 = 500ms T2 = 1000ms T1 = 500ms T2 = 1000ms
\_____________________________/ \_____________________________/ \_____________...
Repetition 1 Repetition 2 Final state
Наконец, вы хотите, чтобы уменьшить количество повторений до 1 (#R = 0x01), и вы хотите, чтобы инвертировать высокие и низкие фазы мигающей формы волны (T1 = 0x0A и T2 = 0x05). Таким образом, вы имеете следующую команду:
+------+------+------+------+------+------+------+------+------+
| 0xFF | 0x00 | 0x40 | 0xDD | 0x04 | 0x0A | 0x05 | 0x01 | 0x00 |
+------+------+------+------+------+------+------+------+------+
Вы получаете следующую форму волны:
RED ON --------------------\ /--------------...
| |
RED OFF \----------/
GREEN ON /----------\
| |
GREEN OFF --------------------/ \--------------...
\__________________/ \________/
T1 = 1000ms T2 = 500ms
\_____________________________/ \_____________...
Repetition 1 Final state
хотел бы дать вам еще один +1 для вашего вопроса редактирования ... –
ли вы на самом деле проверить это? Я не могу заставить состояние светодиода оставаться после завершения команды. Он прекрасно мигает, но, к сожалению, он возвращается к состоянию по умолчанию (красный) после завершения команды. Я использую ваш пример: '[0xFF, 0, 0x40, 0xDD, 0x04, 0x05, 0x0a, 0x02, 0x00]'. –
@ AndréBorie Да, это работает на двух читателей ACR122U, которые у меня есть. –