Как обсуждалось в предыдущем обзоре, Maker Nano RP2040 — это плата, соответствующая форм-фактору Arduino Nano, но с более мощным микроконтроллером Raspberry Pi RP2040. Плата также оснащена множеством светодиодов, а также двумя светодиодами RGB и пьезо-зуммером для вывода звука.
Жан-Люк Офран на днях передал нам плату Maker Nano RP2040, полученную от Cytron, для проверки. Мы никогда раньше не использовали плату, поэтому это наш первый опыт, и в этом обзоре мы попытаемся запрограммировать Maker Nano RP2040 с помощью CircuitPython с помощью трех демонстраций: мигающий образец, изменение цвета светодиодов RGB и воспроизведение мелодии через пьезо-зуммер. Посмотрим, удастся ли нам это сделать.
Начнем. Сначала мы скачали прошивку CircuitPython с официального сайта. Просто выбрали язык и нажали «СКАЧАТЬ UF2 СЕЙЧАС».
После загрузки файла мы подключили плату к ноутбуку с Ubuntu с помощью кабеля Micro USB-USB. Он автоматически смонтировал диск с именем «CIRCUITPY». Это означает, что плата Maker Nano RP2040 поставляется с предустановленной программой CircuitPython, поэтому мы можем использовать плату прямо из коробки! Но если вы хотите установить последнюю версию прошивки, вы можете сделать это, используя тот же метод обновления прошивки, что и для Raspberry Pi Pico.
Мы можем дважды щелкнуть code.py, чтобы увидеть пример программы, предварительно установленной на плате. Там много кода, и новичку вроде нас было бы сложно его понять.
Образец CircuitPython «Blinky»
Итак, мы хотим написать простую программу: типичную «мигающую» программу — регулярно мигающий светодиод с помощью CircuitPython. Код выглядит следующим образом:
import board
import digitalio
import time
# Set pin 0 as digital output
led = digitalio.DigitalInOut(board.GP0)
led.direction = digitalio.Direction.OUTPUT
# -------------------------------------------------
# FOREVER LOOP - Blink the LED every second (0.5s on, 0.5s off)
# -------------------------------------------------
while True:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
Мы видим, как синий светодиод, подключенный к GPIO 0, включается и выключается каждые 500 мс (1-секундный цикл), как показано на видео ниже.
Использование светодиодов RGB на Maker Nano RP2040
На следующем шаге мы напишем программу на CircuitPython, которая меняет цвет двух RGB-светодиодов при нажатии на кнопку, подключенную к GPIO 20. Первое нажатие будет переключаться на красный, второе — на зеленый, а третье — на синий. Давайте начнем с двойного щелчка на code.py, чтобы изменить код на:
import board
import digitalio
import neopixel
import simpleio
import time
import pwmio
# Initialize Neopixel RGB LEDs
pixels = neopixel.NeoPixel(board.GP11, 2)
pixels.fill(0)
pixels.brightness = 0.1
# Initialize the 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
# -------------------------------------------------
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 (200ms delay to make sure multiple presses are not wrongly detected by the loop)
time.sleep(0.2)
Теперь мы можем изменить цвета на красный, зеленый и синий, следуя инструкциям в видео ниже.
Воспроизведение мелодии через пьезо-зуммер
Теперь воспроизведем мелодию «do re mi fa sol la si/ti» и наоборот, используя пьезо-зуммер. Для этого нам нужно заполнить частоты в Гц для каждой музыкальной ноты в массиве. Вот наша небольшая программа:
import board
import digitalio
import neopixel
import simpleio
import time
import pwmio
# Initialize Neopixel RGB LEDs
pixels = neopixel.NeoPixel(board.GP11, 2)
pixels.fill(0)
pixels.brightness = 0.2
# Melody arrays: NOTE with the frequencies in HZ, and DURATION in seconds
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
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.com.
Оригинал статьи вы можете прочитать здесь.