Мини синтезатор на Arduino с использованием зуммера

Многие задаются вопросом для каких целей можно использовать матричные клавиатуры, в данной статье приведен пример использования матричной клавиатуры в связке с зуммером

Список деталей:

  • (1) Arduino Uno.
  • (1) Макетная плата.
  • (1) Матричная клавитура 4*4
  • (1) Пьезоизлучатель
  • (11) Провода папа-папа

Матричная клавиатура

Они бывают разные(большинство подключаются одинаково), например

В моей программе кнопки задают частоту(Гц). Имея базовые знания программирования, вы можете менять нужную частоту в скетче

Buzzer/зуммер/пищалка

 

 

Сборка

Все собирается на макетной плате с проводами папа-папа

Матричная клавиатура подключается к пинам 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);  } } 

Теперь вы можете играть простейшие мелодии на этом синтезаторе