Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слеваПредыдущая версия | |||
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()) { |
</ | </ | ||