Начало работы с Maker Nano RP2040 с использованием CircuitPython: Blinky, RGB LED и воспроизведение мелодии с использованием пьезо-зуммера

Как обсуждалось в предыдущем обзоре, 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.

Оригинал статьи вы можете прочитать здесь.

5 1 vote
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments