Міні синтезатор на Arduino з використанням зумера
Багато хто задається питанням, для яких цілей можна використовувати матричні клавіатури. У цій статті наведено приклад використання матричної клавіатури у зв'язці з зумером.
Список деталей:
- (1) Arduino Uno.
- (1) Макетна плата.
- (1) Матрична клавіатура 4*4
- (1) П'єзоелемент
- (11) Проводи папа-папа
Матрична клавіатура
Вони бувають різні (більшість підключаються однаково), наприклад:
У моїй програмі кнопки задають частоту (Гц). Маючи базові знання програмування, ви можете змінювати потрібну частоту в скетчі.
Зумер/пищалка
Збирання
Все збирається на макетній платі з проводами папа-папа.
Матрична клавіатура підключається до пінів 2, 3, 4, 5, 6, 7, 8, 10.
Зумер до 9 піна, 5V / 3,3V, землі (зліва направо).
Програма
Прошити Arduino скетчем, який ви можете завантажити внизу статті або скопіювати в текстовому вигляді.
int PinOut[4] {5, 4, 3, 2}; // піни виходи клавіатури int PinIn[4] {10, 8, 7, 6}; // піни входу клавіатури const int value[4][4] { {250, 275, 300, 325}, {350, 375, 400, 425}, {450, 475, 500, 525}, {260, 360, 460, 310} }; // подвійний масив, що позначає частоту для певної кнопки void setup() { pinMode (2, OUTPUT); pinMode (3, OUTPUT); pinMode (4, OUTPUT); pinMode (5, OUTPUT); pinMode (6, INPUT); digitalWrite(6, HIGH); pinMode (7, INPUT); digitalWrite(7, HIGH); pinMode (8, INPUT); digitalWrite(8, HIGH); pinMode (10, INPUT); digitalWrite(10, HIGH); pinMode(9, OUTPUT); } void loop() // створюємо функцію для читання даних з кнопок { for (int i = 1; i <= 4; i++) { digitalWrite(PinOut[i - 1], LOW); for (int j = 1; j <= 4; j++) { if (digitalRead(PinIn[j - 1]) == LOW) { tone(9, value[i - 1][j - 1], 100); // tone(порт зумера, значення масиву, затримка) delay(150); // затримка перед оновленням значення з клавіатури noTone(9); // вимкнення зумера } } digitalWrite(PinOut[i - 1], HIGH); } }
Тепер ви можете грати прості мелодії на цьому синтезаторі.
Прикреплені файли:
- Sintezator_sketch.ino (1 Кб)