Міні синтезатор на 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);
 }
}

Тепер ви можете грати прості мелодії на цьому синтезаторі.

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

Top