В данном проекте представлен пример простого аудио устройства с использованием 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)
Прикрепленные файлы:
- pianopic.rar (95 Кб)