จากบทความที่แล้ว Cytron Maker Nano RP2040 เป็นบอร์ดในฟอร์มแฟคเตอร์ของ Arduino Nano, ขับเคลื่อนด้วยขุมพลังของชิพตัวแรงอย่าง RP2040 ที่ทรงพลังจาก Raspberry Pi, บอร์ด Maker Nano RP2040 มาพร้อมกับ LED มากมาย และ Piezo Buzzer สำหรับเอาต์พุตเสียง
ตอนนี้ฉันได้รับ Maker Nano RP2040 จากคุณฌ็อง ลุค โอฟรังค์ ที่ได้รับจาก Cytron เพื่อตรวจสอบ เพื่อให้ทำการรีวิวในสิ่งที่เริ่มต้น แต่ฉันยังไม่เคยใช้บอร์ดมาก่อน ใดังนั้น นี่เป็นประสบการณ์ครั้งแรกของฉัน และในบทความนี้ ฉันจะพยายามตั้งโปรแกรม Maker Nano RP2040 ด้วย CircuitPython ด้วยการสาธิตสามแบบ: ไฟกระพริบ การเปลี่ยนสีของไฟ LED RGB และการเล่น เมโลดี้ผ่าน Piezo Buzzer มาดูกันว่าฉันจะทำได้ไหม
เรามาเริ่มกันเลย….โดยเริ่มจากการฉันดาวน์โหลดเฟิร์มแวร์ CircuitPython จากเว็บไซต์ทางการ เลือกภาษาแล้วคลิก “DOWNLOAD.UF2 NOW”
หลังจากดาวน์โหลดไฟล์ ฉันเชื่อมต่อบอร์ดกับแล็ปท็อป Ubuntu ด้วยสาย Micro USB จะเห็นไดรฟ์ชื่อ “CIRCUITPY” โดยอัตโนมัติ อ้าว! นั่นหมายความว่าบอร์ด Maker Nano RP2040 มาพร้อมกับ CircuitPython ที่ติดตั้งมาล่วงหน้า ดังนั้นเราจึงสามารถใช้บอร์ดนี้ตั้งแต่แกะกล่อง!
เมื่อดับเบิ้ลคลิกที่ code.py จะมีตัวอย่างโปรแกรมที่ติดตั้งไว้ล่วงหน้าบนบอร์ด ซึ่งมีโค้ดเยอะมาก และยากสำหรับมือใหม่อย่างฉันที่จะเข้าใจ
ตัวอย่าง CircuitPythonไฟกระพริบ “Blinky”
ดังนั้น ฉันจึงอยากเขียนโปรแกรมง่ายๆ คือ โปรแกรม “blinky” ทั่วไปเป็นไฟ LED กระพริบโดยใช้ CircuitPython โดยเขียนโค้ดดังนี้:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import board import digitalio import time # Set pin 0 as digital output ตั้งค่าพิน 0 เป็นดิจิตอลเอาต์พุต led = digitalio.DigitalInOut(board.GP0) led.direction = digitalio.Direction.OUTPUT # ------------------------------------------------- # FOREVER LOOP - Blink the LED every second สร้างฟังก์ชั่น loop() ขึ้นมา เพื่อกะพริบไฟ LED ทุกวินาที # ------------------------------------------------- while True: led.value = True time.sleep(0.5) led.value = False time.sleep(0.5) |
ราจะเห็น LED สีน้ำเงินที่เชื่อมต่อกับ GPIO 0 เปิดและปิดทุกๆ 0.5 วินาที (รอบ 1 วินาที) ดังแสดงในวิดีโอด้านล่าง
วิธีใช้ RGB LED บน Maker Nano RP2040
ต่อจากนั้นเราจะเขียนโปรแกรมใน CircuitPython ที่เปลี่ยนสีของไฟ LED RGB สองดวงเมื่อกดปุ่มที่เชื่อมต่อกับ GPIO 20 การกดครั้งแรกจะเปลี่ยนเป็นสีแดง การกดครั้งที่สองเป็นสีเขียว และครั้งที่สามเป็นสีน้ำเงิน เริ่มต้นด้วยการดับเบิลคลิกที่ code.py เพื่อเปลี่ยนโค้ดเป็น :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
import board import digitalio import neopixel import simpleio import time import pwmio # Initialize Neopixel RGB LEDs การควบคุมความสว่างของ LED pixels = neopixel.NeoPixel(board.GP11, 2) pixels.fill(0) pixels.brightness = 0.1 # Initialize button btn1 = digitalio.DigitalInOut(board.GP20) btn1.direction = digitalio.Direction.INPUT btn1.pull = digitalio.Pull.UP color = 0 state = 0 # ------------------------------------------------- # FOREVER LOOP: Check buttons & animate RGB LEDs สร้างฟังก์ชั่น loop() ขึ้นมา เเปลี่ยนสีของไฟ LED RGB # ------------------------------------------------- while True: # Check button 1 (GP20) if not btn1.value: # button 1 pressed # Change RGB LED color if state == 0: color = 0xFF0000 # RED state += 1 elif state == 1: color = 0x00FF00 # GREEN state += 1 else: color = 0x0000FF # BLUE state = 0 pixels.fill(color) # fill the color on both RGB LEDs # Sleep to debounce button รอ 0.2 วินาที ถ้าเราไม่รอโปรแกรมจะเร็วและคิดว่าเรากดหลายๆครั้ง time.sleep(0.2) |
ตอนนี้เราสามารถเปลี่ยนสีเป็นสีแดง สีเขียว และสีน้ำเงินได้โดยทำตามขั้นตอนในวิดีโอด้านล่าง :
เล่นเมโลดี้ผ่าน Piezo Buzzer
ต่อจากนั้นเราจะใส่เสียงทำนองดนตรี “โด เร มี ฟา ซอล ลา ที <-> ที ลา ซอล ฟา มี เร โด” โดยใช้ Piezo Buzzer เริ่มจากหาความถี่ของตัวโน๊ตแต่ละตัว แล้วมาเริ่มเขียนโค้ดกันเลย
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import board import digitalio import neopixel import simpleio import time import pwmio # Initialize Neopixel RGB LEDs ควบคุมความสว่างของ LED pixels = neopixel.NeoPixel(board.GP11, 2) pixels.fill(0) pixels.brightness = 0.2 # Melody ทำนอง ความถี่ของตัวโน๊ต โดถึงฟา/เวลา 0.5 วินาที MELODY_NOTE = [262, 294, 330, 349, 392, 440, 494] MELODY_DURATION = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5] # Define pin connected to piezo buzzer กำหนดพินที่เชื่อมต่อกับ piezo buzzer ที่ทำให้เกิดเสียง PIEZO_PIN = board.GP22 for i in range(len(MELODY_NOTE)): # Play melody tones simpleio.tone(PIEZO_PIN, MELODY_NOTE[i], duration=MELODY_DURATION[i]) color = 0x7FFF * MELODY_NOTE[i] # Frequency based color pixels.fill(color) # fill the color on both RGB LEDs for x in range(len(MELODY_NOTE)-1, -1, -1): # Play melody tones in reverse order simpleio.tone(PIEZO_PIN, MELODY_NOTE[x], duration=MELODY_DURATION[x]) color = 0x1FFF * MELODY_NOTE[x] # Frequency based color pixels.fill(color) # fill the color on both RGB LEDs # ------------------------------------------------- # FOREVER LOOP # ------------------------------------------------- while True: time.sleep(1) |
เราจะได้เสียงทำนองดนตรีตามวีดีโอข้างล่างนี้ :
ในที่สุดฉันก็สามารถตั้งโปรแกรมบอร์ดได้สำเร็จ! สุดท้ายนี้ฉันต้องขอขอบคุณ คุณฌ็อง ลุค โอฟรังค์ สำหรับคำแนะนำในการทดสอบนี้
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT