MicroPython ESP32 – 02 : พื้นฐาน PWM อินพุต/เอาต์พุต

บทความนี้กล่าวถึงขั้นตอนการเขียนโปรแกรม โค้ดภาษา ไมโครไพธอน – MicroPython  ให้กับไมโครคอนโทรลเลอร์ ESP32 ด้วย Thonny IDE โดยโค้ดนี้จะสาธิตการใช้คำสั่งเพื่อใช้งาน PWM พื้นฐาน รวมทั้ง อินพุต/เอาต์พุต และ การใช้ Push Button

โดยมีขั้นตอนการทำงานดังนี้

1 : อุปกรณ์ที่ใช้


2 : ทดลองใช้งาน โปรแกรมแรก Blink

โปรแกรมแรกของ การใช้งานไมโครคอนโทรลเลอร์มักจะเป็น Blink ไฟกะพริบ ซึ่งเป็นหนึ่งในโปรแกรมที่ง่ายที่สุดเท่าที่จะเป็นไปได้ในการเขียนภาษาโปรแกรมต่างๆ โดยทำตามขั้นตอนลิงค์ด้านล่าง


3 : หรี่ไฟ (PWM) ด้วย MicroPython


เชื่อมต่ออุปกรณ์ ตามรูปด้านล่าง



เปิดโปรแกรม Thonny IDE ในกรณีที่ถ้าปิดโปรแกรมแล้วเปิดใหม่ แล้วโปรแกรมติดต่อบอร์ด ESP32 ไม่ได้ ขึ้น Error ที่ Shell ตามรูปด้านล่าง ให้กด Ctrl+C ( Ctrl พร้อม C) บนแป้นพิมพ์ (Keyboard


แก้ไขไฟล์ main.py  ที่อยู่ที่คอมพิวเตอร์เรา This computer -> Python-code

โค้ดนี้สาธิตการใช้คำสั่งเพื่อใช้งาน สร้างสัญญาณ PWM ด้วยบอร์ด ESP32 โดยใช้เฟิร์มแวร์ MicroPython ตัวอย่างเช่นเราจะหรี่ความสว่างของ LED โดยการเปลี่ยนรอบการทำงานตลอดเวลา ตามโค้ดด้านล่างนี้

from machine import Pin, PWM
from time import sleep
frequency = 5000
led = PWM(Pin(27), frequency)
while True:
  for duty_cycle in range(0, 1024):
    led.duty(duty_cycle)
    sleep(0.005)


โค้ดทำงานอย่างไร


นำเข้าคลาส Pin จากโมดูล machine และในการสร้างขา PWM ให้นำเข้าคลาส PWM เพิ่มเติมจากคลาส Pin จากโมดูล machine

from machine import Pin, PWM


จากนั้นสร้างวัตถุ PWM ที่ชื่อว่า led กำหนดพินเป็น GPIO 27 และรับค่าจาก frequency

led = PWM(Pin(27), frequency)


ในการสร้างวัตถุ PWM คุณจะต้องผ่านพารามิเตอร์พินที่เชื่อมต่อกับ Frequency และ Duty cycle

Frequency: ความถี่สามารถเป็นค่าระหว่าง 0 ถึง 78125 เราจึงสามารถใช้ความถี่ 5000 Hz เพื่อควบคุมความสว่างของ LED

Duty cycle: รอบการทำงานสามารถเป็นค่าระหว่าง 0 ถึง 1,023 ซึ่ง 1023 สอดคล้องกับรอบการทำงาน 100% (ความสว่างสูงสุด) และ 0 สอดคล้องกับรอบการทำงาน 0% (LED ที่ไฟไม่ติด)


ไปที่ File -> Save


เพื่อป้องกันการ Error ก่อน อัพโหลดไฟล์ ให้หยุดการทำงาน ของบอร์ด ESP32 โดยไปที่ Run -> Stop/Restart backed

ถ้าโปรแกรมติดต่อบอร์ด ESP32 ไม่ได้ ให้กด Ctrl+C ( Ctrl พร้อม C) บนแป้นพิมพ์ (Keyboard


คลิกขวาที่ไฟล์ main.py -> Upload to / เพื่ออัพโหลดไฟล์โค้ดนี้ไปยังบอร์ด ESP32


โปรแกรม ถามว่า จะให้เขียนทับไฟล์เดิมที่มีอยู่หรือไม่ เลือก OK


กดที่ปุ่ม RTS 1 ครั้ง เพื่อเริ่มการทำงาน ของ ESP32


ถึงขั้นตอนนี้ถ้าไม่มีอะไรผิดพลาด สังเกต LED จะค่อยๆสว่างขึ้น จนสว่างที่สุดแล้วกลับไปเริ่มต้นใหม่ แสดงว่าโปรแกรม หรี่ไฟ (PWM) ด้วย MicroPython ของคุณสำเร็จแล้ว


4 : เช็คสถานะปุ่มกด (Push Button) สวิทซ์ กดติดกดดับ


โค้ดนี้สาธิตการคอยอ่านและตรวจสอบค่าลอจิก-อินพุตจากปุ่มกด (Push button) ที่ต่อเพิ่มเข้าที่ขา GPIO32 เมื่อมีการกดแล้วปล่อยปุ่มหนึ่งครั้ง จะทำให้สถานะลอจิก-เอาต์พุตเปลี่ยนหนึ่งครั้ง โดยเลือกใช้ขา GPIO27 เป็นเอาต์พุต

เชื่อมต่ออุปกรณ์ ตามรูปด้านล่าง


เขียนโค้ดและอัพโหลดโค้ดดังนี้

from machine import Pin
from time import sleep
btn = Pin(32, Pin.IN,Pin.PULL_UP)
led = Pin(27, Pin.OUT)
led.value( 0 )
while True:
    if btn.value() == 0:
        led.value( not led.value() )
        while btn.value() == 0:
            sleep(0.1)
    sleep(0.1)


กดที่ปุ่ม RTS 1 ครั้ง เพื่อเริ่มการทำงาน ของ ESP32 แล้วจึงทดสอบ

โดยเมื่อมีการกดแล้วปล่อยปุ่มหนึ่งครั้ง LED จะติด


และเมื่อมีการกดแล้วปล่อยปุ่มอีกหนึ่งครั้ง LED จะดับ แสดงว่าโปรแกรมเช็คสถานะปุ่มกด (Push Button) สวิทซ์ กดติดกดดับสำเร็จแล้ว


5 : เช็คสถานะปุ่มกด (Push Button) สวิทซ์ กดติดปล่อยดับ


โค้ดนี้สาธิตการคอยอ่านและตรวจสอบค่าลอจิก-อินพุตจากปุ่มกด (Push button)  ที่ขา GPIO32 เมื่อมีการกดสวิทซ์แล้วค้างไว้ จะทำให้ LED ติด และเมื่อปล่อยสวิทซ์ LED จะดับ โดยเลือกใช้ขา GPIO27 เป็นเอาต์พุต

เชื่อมต่ออุปกรณ์ ตามรูปด้านล่าง


เขียนโค้ดและอัพโหลดโค้ดดังนี้

from machine import Pin
from time import sleep
led = Pin(27, Pin.OUT)
button = Pin(32, Pin.IN)
while True:
  led.value(button.value())
  sleep(0.1)



กดที่ปุ่ม RTS 1 ครั้ง เพื่อเริ่มการทำงาน ของ ESP32 แล้วจึงทดสอบ


เมื่อมีการกดสวิทซ์ค้างไว้ LED จะติด


และเมื่อมีการปล่อยปุ่มสวิทซ์ LED จะดับ  แสดงว่าโปรแกรม เช็คสถานะปุ่มกด (Push Button) สวิทซ์ กดติดกดดับ สำเร็จแล้ว

Leave a Reply

Your email address will not be published. Required fields are marked *

เราใช้คุกกี้เพื่อพัฒนาประสิทธิภาพ และประสบการณ์ที่ดีในการใช้เว็บไซต์ของคุณ คุณสามารถศึกษารายละเอียดได้ที่ นโยบายความเป็นส่วนตัว และสามารถจัดการความเป็นส่วนตัวเองได้ของคุณได้เองโดยคลิกที่ ตั้งค่า

Privacy Preferences

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

Allow All
Manage Consent Preferences
  • Always Active

Save