Пианино на микроконтроллере PIC18F4550

В данном проекте представлен пример простого аудио устройства с использованием PIC-микроконтроллера. При использовании лишь портов ввода/вывода, мы разработали простое пианино/синтезатор в 8-битном стиле. Для программирования 8-битного микроконтроллера PIC18F4550 используется PicPgm.

Мы решили использовать микроконтроллер PIC18F4550 исходя из размера памяти программ (32 КБ).

Для начала каждому порту необходимо присвоить следующие функции:

Зеленые выводы на рисунке определены как входы, красные выводы как выходы.

Далее выводы определены, как указано ниже в программном коде:

Входы с b1 по b11 являются нажимными кнопками в схеме, в то время как вход режима – это переключатель, который отвечает за выбор рабочего режима работы. Выходы с l1 по l11 отвечают за подключение светодиодов. Каждый светодиод располагается вверху над соответствующей нажимной кнопкой и загорается, когда проигрывается соответствующая музыкальная нота. Аудио выход – это вывод контроллера, который подключается к динамику.

Принципиальная схема была разработана с помощью программного обеспечения с открытым исходным кодом KiCad:

Затем был изготовлен макет печатной платы:

Также было создано 3-х мерное изображение готовой печатной платы:

Для изготовления устройства использовалась 2-хсторонняя печатная плата. Схема была напечатана на журнальной бумаге с помощью лазерного принтера, далее перенесена на печатную плату методом ЛУТ. Сначала необходимо перенести на одну сторону, далее засверлить несколько отверстий для выравнивания макета с другой стороной:

После этого печатная плата была опущена в раствор хлорного железа для вытравливания:

Остатки тонера необходимо удалить с помощью губки под потоком теплой воды:

Далее мы просверлили все необходимые отверстия и установили компоненты на свое место. Мы использовали компоненты из старых электронных устройств. Нажимные кнопки — из старого видеомагнитофона, светодиоды — из модема, а динамик — из старого будильника.

Готовая печатная плата имеет следующий вид:

Описание работы устройства:

В режиме Playing (Проигрывание), когда выбран mode=0 (режим=0), нажимные кнопки с b1 по b11 соответствуют клавишам “ пианино”:

b1 – A (440 Гц)
b2 – B (494 Гц)
b3 – C2 (261×2 Гц)
b4 – D2 (293×2 Гц)
b5 – E2 (329×2 Гц)
b6 – F2 (349×2 Гц
b7 – G2 (392×2 Гц)
b8 – A2 (440×2 Гц)
b9 – B2 (494×2 Гц)
b10 – C4 (261×4 Гц)
b11 – D4 (293×4 Гц)

Мы использовали вторую октаву в качестве основной гаммы и далее добавили ещё две музыкальные ноты вверх и вниз. Также можно воспроизвести черные клавиши пианино (диезы и бемоли), нажимая две смежные кнопки.

При нажатии каждой кнопки прямоугольный сигнал соответствующей частоты передается в динамик.

К примеру, когда нажата кнопка b1, проигрывается нота A. Потому для создания звука, прямоугольный сигнал частотой 440 Гц подается на аудио выход. Мы знаем, что период сигнала составляет приблизительно 1/440 = 2272 микросекунд. Потому аудио выход имеет высокий уровень в первую половину времени (1136 микросекунд) и далее низкий уровень во вторую половину.

if (b1)
{
 audio=1;
 delay_us(1136);
 audio=0;
 delay_us(1136);
}

Также, кроме воспроизведения звука ноты A, зажигается соответствующий светодиод l1.

В режиме Memory (Память) каждая кнопка ассоциируется с конкретным музыкальным фрагментом, который воспроизводится при нажатии этой кнопки.

Каждый музыкальный фрагмент в памяти составляется из 2-х массивов, один для частот или музыкальных нот, и другой для временных интервалов. Данные массивы впоследствии считываются функцией Sound_Play(x,y) из используемого компилятора (микроC).

И наконец, кнопка b0  — это сброс всей схемы.

Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

U1
МК PIC 8-битPIC18F45501
C1
Электролитический конденсатор220 мкФ1
R1-R5, R7-R14
Резистор9 кОм13
R6, R15
Резистор220 Ом2
D1
СветодиодКрасный1
D2-D12
СветодиодЗеленый11
SW1-SW12
Кнопка тактоваяTACT-64N-F12
Или другая подобнаяSW13
Переключатель1
SP1
Динамик1
Power IN P1
Разьем питания1
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.