Начало работы с Jam Hat
Установка платы на Raspberry Pi
Шаг 1. В комплекте с Jam Hat идут 4 латунные стойки, 8 винтов и 2 колпачка для кнопок.
Шаг 2. Установите четыре стойки на Jam Hat в четыре угловых отверстия, используя маленькую крестовую отвертку.
Шаг 3. После того как стойки установлены, наденьте HAT на Raspberry Pi, убедившись, что четыре стойки совпадают с четырьмя угловыми отверстиями.
Шаг 4. Надежно закрепите Hat, используя оставшиеся четыре винта в нижней части стоек.
Шаг 5. Если колпачки ещё не установлены, наденьте их на кнопки. Мы поставили синий колпачок на кнопку в нижнем левом углу платы, а красный колпачок — на кнопку в нижней средней части платы.
Использование 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?
Светодиоды, кнопки и зуммер доступны для использования через 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, чтобы вы могли экспериментировать в своё удовольствие!