Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
products:laboratory_iot_c:exp45 [2024/11/30 17:20] labuser30products: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, INPUT);       pinMode(pin, INPUT);
Строка 57: Строка 57:
 </file> </file>
  
-Разберем класс кнопки. У него есть конструктор ''__init__'': +Разберем класс кнопки. У него есть конструктор ''Button()'': 
-<code arduino[enable_line_numbers="2", start_line_numbers_at="9"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="10"]> 
-    def __init__(selfp, pressSate): +    Button(int _pinbool _pressState{ 
-        self.pin = Pin(pPin.IN+      pin = _pin; 
-        self.pressSate pressSate +      pinMode(pinINPUT); 
-        self.oldState = not pressSate+      pressState _pressState; 
 +      oldState = not _pressState; 
 +    }
 </code> </code>
 Здесь настраивается вывод микроконтроллера, записывается какое состояние считать нажатым — логический 0 или логическую 1. Ведь это зависит от схемотехники. Если кнопка подтянута к питанию, а при нажатии соединяется с землей, то в нажатом состоянии на выводе будет 0. А если наоборот, то 1. Здесь настраивается вывод микроконтроллера, записывается какое состояние считать нажатым — логический 0 или логическую 1. Ведь это зависит от схемотехники. Если кнопка подтянута к питанию, а при нажатии соединяется с землей, то в нажатом состоянии на выводе будет 0. А если наоборот, то 1.
  
 И у кнопки есть метод определения факта нажатия: И у кнопки есть метод определения факта нажатия:
-<code arduino[enable_line_numbers="2", start_line_numbers_at="14"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="17"]> 
-    def onPress(self): +    bool onPress() { 
-        state = self.pin.value() +      bool state = digitalRead(pin); 
-        if state != self.oldState: +      if (state != oldState){ 
-            self.oldState = state +        oldState = state; 
-            if state == self.pressSate: +        if (state == pressState) return true; 
-                return True +      } 
-        return False+      return false; 
 +    }
 </code> </code>
 Здесь считывается текущее состояние кнопки и сравнивается со старым. Состояние сохраняется как старое. Проверяется соответствие состояния кнопки состоянию нажатой кнопки, которое было задано при создании объекта. Если совпадает — значит кнопка нажата, возвращаем True, иначе False. Здесь считывается текущее состояние кнопки и сравнивается со старым. Состояние сохраняется как старое. Проверяется соответствие состояния кнопки состоянию нажатой кнопки, которое было задано при создании объекта. Если совпадает — значит кнопка нажата, возвращаем True, иначе False.
  
 Создаем объект кнопки. Она на 16 выводе и нажатым будем считать состояние логической 1. Создаем объект кнопки. Она на 16 выводе и нажатым будем считать состояние логической 1.
-<code arduino[enable_line_numbers="2", start_line_numbers_at="23"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="27"]> 
-btn = Button(16, 1)+Button btn(16, HIGH);
 </code> </code>
  
-Использование кнопки стало предельно простым. Нам больше не нужна переменная для хранения прошлого состояния кнопки и вычисление события нажатия. Все это реализовано в классе кнопки. Мы просто создали объект кнопки, передали ей в качестве параметра номер пина и состоние которое считается нажатым. В нашем случае состояние логической единицы когда кнопка нажата. И обращаемся к методу ''onPress()'', чтобы узнать было ли событие нажатия.+Использование кнопки стало предельно простым. Нам больше не нужна переменная для хранения прошлого состояния кнопки и вычисление события нажатия. Все это реализовано в классе кнопки. Мы просто создали объект кнопки, передали ей в качестве параметра номер пина и состояние которое считается нажатым. В нашем случае состояние логической единицы когда кнопка нажата. И обращаемся к методу ''onPress()'', чтобы узнать было ли событие нажатия.
  
-<code arduino[enable_line_numbers="2", start_line_numbers_at="26"]> +<code arduino[enable_line_numbers="2", start_line_numbers_at="34"]> 
-if btn.onPress():+  if (btn.onPress()) {
 </code> </code>