ESP8266 D1 Mini и MicroPython: изчитане на дигитален вход (бутон)

ESP8266 D1 Mini и MicroPython изчитане на дигитален вход

В тази статия ще разгледаме как да изчитаме дигитален вход, като използваме бутон, свързан с микроконтролера ESP8266 D1 Mini. За целта ще използваме два различни скрипта. Първият скрипт ще изчита състоянието на бутона и ще го отпечатва в конзолата, а вторият ще използва бутона за контролиране на светодиод (LED). За да разберете как да свържете схемата ще ви трябва пин диаграма на платформата ESP8266 D1 Mini. Описани на тази процесорна платформа може да намерите в нашата страница: ESP8266 D1 Mini – Малък, но Мощен Wi-Fi Микроконтролер.

Изчитане на състоянието на бутон ESP8266 D1 Mini и MicroPython

Схема на свързване

ESP8266 D1 Mini и MicroPython изчитане бутон схема

Този скрипт има за цел да изчита състоянието на бутона и да го показва в конзолата. Това е основна стъпка при работа с дигитални входове.

from machine import Pin
from time import sleep

button = Pin(4, Pin.IN, Pin.PULL_UP)
button_value = 0

while True:
    try:
        button_value = button.value()
        print(button_value)
        sleep(0.5)
                    
    except KeyboardInterrupt:
        print("exit")
        break

Обяснение на кода:

Импортиране на необходимите модули:

from machine import Pin
from time import sleep
  • machine.Pin: Класът Pin се използва за управление на пиновете на микроконтролера.
  • time.sleep: Функцията sleep създава пауза в изпълнението на програмата.

Дефиниране на бутона:

button = Pin(4, Pin.IN, Pin.PULL_UP)
button_value = 0
  • Pin(4, Pin.IN, Pin.PULL_UP): Пин номер 4 е конфигуриран като вход с вграден вътрешен pull-up резистор. Това означава, че стойността на пина ще бъде 1 (високо ниво), докато бутонът не бъде натиснат, при което стойността ще стане 0 (ниско ниво).

Основен цикъл:

while True:
    try:
        button_value = button.value()
        print(button_value)
        sleep(0.5)
  • button_value: Тази променлива приема стойността получена от изчитането на дигиталния вход (0 или 1).
  • print(button_value): Принтира в конзолата стойността на променливата button_value.
  • sleep(0.5): Закъснение на кода с 0.5 секунди

Обработка на прекъсвания:

except KeyboardInterrupt:
        print("exit")
        break
  • В случай на натискане на Ctrl+C, програмата се прекъсва и излиза от цикъла.

Контрол на LED с бутон

Във втория скрипт ще използваме бутона, за да включваме и изключваме LED. Всеки път, когато натиснем бутона, светодиодът ще променя състоянието си.

Схема на свързване

ESP8266 D1 Mini и MicroPython изчитане бутон и управление на LED диод схема

Код на скрипта

from machine import Pin
from time import sleep

led = Pin(5,Pin.OUT)

button = Pin(4, Pin.IN, Pin.PULL_UP)
button_value = 0
button_count = 0

while True:
    try:
        button_value = button.value()
        
        if button_value is not button.value():
        
            if button_value == 0:
                button_count += 1
                print(button_count)
                print('Button pressed!')
                
                
                if button_count == 1:
                    led.value(True)
                    print("button count = " , button_count)
                
                if button_count == 2:
                    print("button count = " , button_count)
                    led.value(False)
                    button_count = 0
                    
    except KeyboardInterrupt:
        print("exit")
        break

Обяснение на кода:

Конфигуриране на LED и бутон:

led = Pin(5,Pin.OUT)

button = Pin(4, Pin.IN, Pin.PULL_UP)
button_value = 0
button_count = 0
  • LED е свързан към пин номер 5 и е конфигуриран като изход.
  • Бутонът е свързан към пин номер 4 и е конфигуриран като вход с pull-up резистор.
  • button_count е променлива, която брои натисканията на бутона.

Основен цикъл и изчитане на бутона:

while True:
    try:
        button_value = button.value()
        
        if button_value is not button.value():
        
            if button_value == 0:
                button_count += 1
                print(button_count)
                print('Button pressed!')
  • Извършва се проверка на състоянието на бутона. Ако бутонът е натиснат (стойност 0), броячът на натисканията се увеличава с 1 и се отпечатва съобщение в конзолата.

Контрол на LED:

                if button_count == 1:
                    led.value(True)
                    print("button count = " , button_count)
                
                if button_count == 2:
                    print("button count = " , button_count)
                    led.value(False)
                    button_count = 0
  • При първото натискане на бутона LED се включва.
  • При второто натискане LED се изключва и броячът се нулира.

Обработка на прекъсвания:

    except KeyboardInterrupt:
        print("exit")
        break
  • Кодът се прекъсва при натискане на Ctrl+C, като програмата излиза от цикъла.

Заключение

Тези два скрипта предоставят основа за работа с дигитални входове (бутони) и управление на изходи като LED с помощта на ESP8266 D1 Mini и MicroPython. Първият скрипт ни запознава с основната концепция за изчитане на бутони, а вторият показва как можем да използваме този вход за управление на изходен елемент като светодиод. Това е основна стъпка при създаването на по-сложни проекти с микроконтролери.