Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версия | |||
| products:laboratory_iot_c:exp45 [2024/11/30 17:20] – labuser30 | products:laboratory_iot_c:exp45 [2024/12/04 14:03] (текущий) – [Программный код эксперимента] labuser30 | ||
|---|---|---|---|
| Строка 25: | Строка 25: | ||
| public: | public: | ||
| - | Button (int _pin, bool _pressState) { | + | Button(int _pin, bool _pressState) { |
| pin = _pin; | pin = _pin; | ||
| pinMode(pin, | pinMode(pin, | ||
| Строка 57: | Строка 57: | ||
| </ | </ | ||
| - | Разберем класс кнопки. У него есть конструктор '' | + | Разберем класс кнопки. У него есть конструктор '' |
| - | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | | + | |
| - | self.pin = Pin(p, Pin.IN) | + | pin = _pin; |
| - | | + | pinMode(pin, INPUT); |
| - | self.oldState = not pressSate | + | |
| + | oldState = not _pressState; | ||
| + | } | ||
| </ | </ | ||
| Здесь настраивается вывод микроконтроллера, | Здесь настраивается вывод микроконтроллера, | ||
| И у кнопки есть метод определения факта нажатия: | И у кнопки есть метод определения факта нажатия: | ||
| - | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | | + | |
| - | state = self.pin.value() | + | |
| - | if state != self.oldState: | + | if (state != oldState){ |
| - | self.oldState = state | + | oldState = state; |
| - | if state == self.pressSate: | + | if (state == pressState) |
| - | | + | } |
| - | return | + | |
| + | } | ||
| </ | </ | ||
| Здесь считывается текущее состояние кнопки и сравнивается со старым. Состояние сохраняется как старое. Проверяется соответствие состояния кнопки состоянию нажатой кнопки, | Здесь считывается текущее состояние кнопки и сравнивается со старым. Состояние сохраняется как старое. Проверяется соответствие состояния кнопки состоянию нажатой кнопки, | ||
| Создаем объект кнопки. Она на 16 выводе и нажатым будем считать состояние логической 1. | Создаем объект кнопки. Она на 16 выводе и нажатым будем считать состояние логической 1. | ||
| - | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | btn = Button(16, | + | Button |
| </ | </ | ||
| - | Использование кнопки стало предельно простым. Нам больше не нужна переменная для хранения прошлого состояния кнопки и вычисление события нажатия. Все это реализовано в классе кнопки. Мы просто создали объект кнопки, | + | Использование кнопки стало предельно простым. Нам больше не нужна переменная для хранения прошлого состояния кнопки и вычисление события нажатия. Все это реализовано в классе кнопки. Мы просто создали объект кнопки, |
| - | <code arduino[enable_line_numbers=" | + | <code arduino[enable_line_numbers=" |
| - | if btn.onPress(): | + | if (btn.onPress()) { |
| </ | </ | ||