Как обсуждалось в предыдущем обзоре, 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. Код выглядит следующим образом:
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 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, чтобы изменить код на:
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 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» и наоборот, используя пьезо-зуммер. Для этого нам нужно заполнить частоты в Гц для каждой музыкальной ноты в массиве. Вот наша небольшая программа:
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 |
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.
Оригинал статьи вы можете прочитать здесь.