Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| products:laboratory_iot_c:exp36 [2024/11/17 16:34] – [Программный код эксперимента] labuser30 | products:laboratory_iot_c:exp36 [2024/11/17 17:04] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 65: | Строка 65: | ||
| } | } | ||
| - | void ICACHE_RAM_ATTR callback(){ | + | void ICACHE_RAM_ATTR callback() { |
| bool value_a = digitalRead(ENC_A); | bool value_a = digitalRead(ENC_A); | ||
| bool value_b = digitalRead(ENC_B); | bool value_b = digitalRead(ENC_B); | ||
| Строка 125: | Строка 125: | ||
| </ | </ | ||
| - | + | Рассмотрим функцию-обработчик прерывания, она в свою очередь объявлена с атрибутом ICACHE_RAM_ATT. Причина аналогична указанной для переменных выше. | |
| - | Рассмотрим функцию-обработчик прерывания: | + | <code arduino[enable_line_numbers=" |
| - | <code arduino[enable_line_numbers=" | + | void ICACHE_RAM_ATTR callback() { |
| - | void ICACHE_RAM_ATTR callback(){ | + | |
| bool value_a = digitalRead(ENC_A); | bool value_a = digitalRead(ENC_A); | ||
| bool value_b = digitalRead(ENC_B); | bool value_b = digitalRead(ENC_B); | ||
| Строка 154: | Строка 153: | ||
| Она начинается с | Она начинается с | ||
| - | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | | + | bool value_a = digitalRead(ENC_A); |
| - | | + | bool value_b = digitalRead(ENC_B); |
| - | global encA | + | |
| - | global states | + | |
| - | global old_state | + | |
| </ | </ | ||
| - | Ключевое слово '' | + | Здесь мы впервые объявляем переменные внутри функции. По умолчанию, |
| Потом, как и раньше, | Потом, как и раньше, | ||
| Строка 168: | Строка 164: | ||
| Как мы заметили ранее, при одном щелчке энкодера происходит смена двух состояний энкодера. Чтобы одному щелчку соответствовало изменение счетчика на 1, мы просто проверяем счетчик на четность. | Как мы заметили ранее, при одном щелчке энкодера происходит смена двух состояний энкодера. Чтобы одному щелчку соответствовало изменение счетчика на 1, мы просто проверяем счетчик на четность. | ||
| - | < | + | < |
| - | | + | if (not(count % 2)){ |
| - | print('+'); | + | |
| - | | + | |
| + | } | ||
| </ | </ | ||
| Строка 177: | Строка 174: | ||
| Теперь самое главное. Обратим внимание на основной цикл программы. Мы в нем ничего не делаем. Все действия, | Теперь самое главное. Обратим внимание на основной цикл программы. Мы в нем ничего не делаем. Все действия, | ||
| + | |||
| + | <WRAP center round info 80%> | ||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | </ | ||
| + | |||