Начало работы с Jam Hat

Jam Hat для Raspberry Pi

Установка платы на Raspberry Pi

Шаг 1. В комплекте с Jam Hat идут 4 латунные стойки, 8 винтов и 2 колпачка для кнопок.

Комплектация Jam Hat — латунные стойки, винты и колпачки для кнопок

Шаг 2. Установите четыре стойки на Jam Hat в четыре угловых отверстия, используя маленькую крестовую отвертку.

Установка латунных стоек на Jam Hat

Шаг 3. После того как стойки установлены, наденьте HAT на Raspberry Pi, убедившись, что четыре стойки совпадают с четырьмя угловыми отверстиями.

Jam Hat установлен на Raspberry Pi

Шаг 4. Надежно закрепите Hat, используя оставшиеся четыре винта в нижней части стоек.

Закрепление Jam Hat винтами снизу

Шаг 5. Если колпачки ещё не установлены, наденьте их на кнопки. Мы поставили синий колпачок на кнопку в нижнем левом углу платы, а красный колпачок — на кнопку в нижней средней части платы.

Установка колпачков на кнопки Jam Hat

Использование GPIO Zero с Jam Hat

После того как вы установили Hat на Raspberry Pi, включите питание Pi.

Как обновить GPIO Zero до версии 1.5

Код для использования JamHat доступен в GPIOZero версии 1.5 и новее. Чтобы обновить вашу версию GPIOZero, откройте терминал на вашем Pi и введите:

sudo apt-get update
sudo apt-get install python3-gpiozero python-gpiozero

После выполнения этих команд у вас должна быть самая актуальная версия GPIO Zero.

Как плата организована в GPIO Zero?

Схема компонентов Jam Hat в GPIO Zero

Светодиоды, кнопки и зуммер доступны для использования через GPIO Zero, который мы будем применять в приведённых ниже примерах. Каждый компонент является объектом в классе Jam Hat:

  • jamhat.lights_1 — верхний ряд светодиодов, ближайший к разъёму. К каждому цветному светодиоду можно обращаться, добавив .red, .yellow или .green к jamhat.lights_1.

  • jamhat.lights_2 — нижний ряд светодиодов, дальний от разъёма. Аналогично, к каждому цветному светодиоду можно обращаться, добавив .red, .yellow или .green к jamhat.lights_2.

  • jamhat.button_1 — кнопка слева в паре. На нашей плате на ней синий колпачок.

  • jamhat.button_2 — кнопка справа в паре. На картинке это кнопка с красным колпачком.

  • jamhat.buzzer — зуммер в правом нижнем углу платы.

Включение светодиодов

На Jam Hat установлено 6 светодиодов, которые можно включать и выключать с помощью стандартных функций .on(), .off() и .toggle(), а также знакомых функций GPIO Zero blink() и pulse().

from gpiozero import JamHat
from time import sleep

jamhat = JamHat()

jamhat.lights_1.blink()
sleep(0.5)
jamhat.lights_2.blink()

Также мы можем включать отдельные светодиоды, обращаясь к ним по цвету.

from gpiozero import JamHat
from time import sleep

jamhat = JamHat()

# Включаем красные светодиоды
jamhat.lights_1.red.on()
jamhat.lights_2.red.on()
sleep(0.5)
jamhat.off()

# Включаем жёлтые светодиоды
jamhat.lights_1.yellow.on()
jamhat.lights_2.yellow.on()
sleep(0.5)
jamhat.off()

# Включаем зелёные светодиоды
jamhat.lights_1.green.on()
jamhat.lights_2.green.on()
sleep(0.5)
jamhat.off()

Использование кнопок

На Jam Hat есть две кнопки (push to make), которым можно назначить включение и выключение светодиодов и зуммера, а также запуск последовательности свечения или звуков.

from gpiozero import JamHat

jamhat = JamHat()

jamhat.button_1.when_pressed = jamhat.on
jamhat.button_2.when_pressed = jamhat.off

Воспроизведение мелодии зуммером

Зуммер на Jam Hat способен воспроизводить различные тона. Вы можете передать Jam Hat клавиатурные ноты, например 'C4', MIDI-ноты, например 70, или значение частоты в герцах, например 220.0.

from gpiozero import JamHat
from time import sleep

jamhat = JamHat()

jamhat.buzzer.play('C4')
sleep(0.5)
jamhat.off()

jamhat.buzzer.play(70)
sleep(0.5)
jamhat.off()

jamhat.buzzer.play(220.0)
sleep(0.5)
jamhat.off()

Совместное использование светодиодов, кнопок и зуммера

Используя пример скрипта из нашего GitHub, мы можем задействовать все три компонента на нашей плате. Следующий скрипт использует кнопку 1 для воспроизведения звука зуммером, кнопка 2 понижает высоту тона зуммера, а светодиоды показывают, на какой ноте шкалы вы находитесь.

from gpiozero import JamHat
from time import sleep

jh = JamHat()

NOTES = ['A4', 'G4', 'F4', 'E4', 'D4', 'C4']
i = 0
j = 0
note = 0

try:
    while True:
        if(jh.button_2.is_pressed):
            # Если нажата красная кнопка, перемещаем светодиод и понижаем ноту зуммера
            note = (note + 1) % 6
            if(j == 2):
                i = (i + 1) % 2
            j = (j + 1) % 3
            sleep(0.1)
        jh.off()
        jh[i][j].on()

        if(jh.button_1.is_pressed):
            # Если нажата синяя кнопка, воспроизводим текущую ноту
            jh.buzzer.play(NOTES[note])
        sleep(0.1)

except KeyboardInterrupt:
    jh.close()

Дополнительные примеры

На нашей странице GitHub доступно больше интересных примеров. Также доступна полная документация GPIO Zero по реализации Hat, чтобы вы могли экспериментировать в своё удовольствие!