จุดประสงค์การเรียนรู้
เพื่อสร้างสัญญาณของสัญญาณAnalog output จากสัญญาณพัลส์
สาระการเรียนรู้
1. สัญญาณ Analog Output
สัญญาณAnalog outputเป็นสัญญาณที่มีความละเอียดกว่าสัญญาณDigitalเป็นอย่างมาก ยกตัวอย่างเช่นหากเราต้องการจะเปิดไฟLEDหากใช้สัญญาณDigitalในการสั่งงานจะไม่สามารถทำให้LEDหรี่ไฟแบบปรับระดับได้ ดังนั้นบทความนี้จะพูดถึงการใช้งานAnalog Outputชนิด PWM (Pulse-Width modulation) ซึ่งเป็นเทคนิคในการเข้ารหัสสัญญาณDigitalให้ัมีOuputเฉลี่ยคล้ายสัญญาณAnalog โดยจะสร้างLogic HIGH(3.3V) และ LOW(0V)สลับกันซึ่งจะทำให้คาบเวลาช่วงHIGHของหนึ่งลูกคลื่นมีหน่วยเป็นเปอร์เซนต์หรือที่เรียกกันว่าDuty Cycle ดังภาพข้างล่าง
ที่มาของภาพ : https://blog.thaieasyelec.com/espino32-ch6-how-to-use-analog-output/
2. คำสั่งการใช้งาน
รูปแบบการใช้งานคำสั่งในภาษาซีของArduino IDE ในเนื้อหานี้ จะใช้คำสั่งดังต่อไปนี้
วิธีทดลอง
เป้าหมายในการทำงานของLabนี้ เพื่อให้LEDทำการเปิดปิดไฟ อย่างต่อเนื่อง โดยค่อยเพิ่มและลดความสว่างของหลอดLED
ตอนที่ 1 การใช้งานหลอด LED 1 ช่อง
นำบอร์ดLotus Devkit V.1.0 มาต่อกับModule Lotus LED และพอร์ตMicro USB ตามตารางและขาสัญญาณ ดังรูปข้างล่าง
3. ก่อนทำการUpload Code เลือกบอร์ดเป็นบอร์ด ESP32 Dev Module โดยมีขั้นตอน คือ เข้าไปที่แถบเมนู Tool เลือก Board เลือก ESP32 Arduino แล้วเลือกเป็นESP32 Dev Module ดังรูปข้างล่าง
4. ทำการเลือก Serial port ก่อนทำการUpload ในขั้นตอนนี้ให้ทำการเข้ามีที่แถบเมนูTool แลือก Port แล้วเลือก Com port หมายเลขที่เราต่อสายMicro USB
5. กดปุ่มหัวลูกศรเพื่อทำการUpload Codeลงบนบอร์ดLotus Devkit v.1.0
6. กรณีที่Upload codeลงเป็นที่เรียบร้อยแล้วจะสังเกตเห็นหลอดไฟLED ค่อยๆสว่างขึ้น และค่อยๆหรี่ลงทีละสเต็บทุกๆ 20 มิลลิวินาที
ตอนที่ 2 การใช้งานหลอด LED 3 ช่อง
เป้าหมายในการทำงานของLabนี้ เพื่อให้LEDทำการเปิดปิดไฟ อย่างต่อเนื่อง โดยค่อยเพิ่มและลดความสว่างของหลอดLED ทั้ง 3 หลอด
นำบอร์ดLotus Devkit V.1.0 มาต่อกับModule Lotus LED ทั้ง 3 ตัว และพอร์ตMicro USB ตามตารางและขาสัญญาณ ดังรูปข้างล่าง
2. ทำการเขียนโค้ด และUpload Code ดังรูปแบบข้างล่าง แล้วสังเกตการทำงานของหลอดLEDทั้ง 3 หลอด
ตอนที่ 3 การใช้งานAnalog Input ควบคุมสัญญาณ Analog Output (ปรับค่าความสว่างไฟหัวเตียง)
เป้าหมายในการทำงานของLabนี้ เพื่อปรับค่าความมืดสว่างของหลอดLED ตามการหมุนของตัวต้านทานปรับค่าได้ (Potentiometer หรือ Knob) จำลองจากไฟสว่างหัวเตียงในโรงแรม
คำสั่งในArduino IDE ที่เข้ามาเพิ่มในหัวข้อนี้คือคำสั่ง
int x = map ( ค่าสัญญาณจากโมดูลหรือเซนต์เซอร์, ค่าต่ำสุดเดิม, ค่าสูงสุดเดิม, ค่าต่ำสุดใหม่, ค่าสูงสุดใหม่ );
นำบอร์ดLotus Devkit V.1.0 มาต่อกับModule Lotus LED และพอร์ตMicro USB ตามตารางและขาสัญญาณ ดังรูปข้างล่าง
2. ทำการเขียนโค้ด และUpload Code ดังรูปแบบข้างล่าง แล้วลองหมุนตัวต้านทานปรับค่าได้ GPIO 35 ที่อยู่บนบอร์ด โดยซ้ายสุดจะทำให้หลอดLEDดับ และหากหมุนไปในทิศตามเข็มนาฬิกาจะทำให้หลอดLED ค่อยๆสว่างขึ้นดังวีดีโอข้างล่าง