Делаем мини-пианино с помощью Arduino

В этом уроке сделаем пианино с помощью Arduino и сыграем свою первую мелодию на этом мини-пианино.

Arduino - платформа с открытым исходным кодом, используемая для создания проектов в электронике.

Arduino состоит из программируемой платы (часто называемой микроконтроллером) и части программного обеспечения или интегрированной среды разработки Arduino IDE, которая работает на вашем компьютере, используется для написания и загрузки компьютерного кода на плату.

Делаем мини-пианино с помощью Arduino

Шаг 1. Компоненты

Платформа Arduino стала довольно популярной среди людей только начинающих в электронике, и не зря. В отличие от большинства предыдущих программируемых печатных плат, Arduino не нуждается в отдельном аппаратном обеспечении для загрузки нового кода на плату - вы можете просто использовать USB-кабель.

Кроме того, в Arduino IDE используется упрощенная версия C ++, что упрощает обучение программе. Наконец, Arduino предоставляет стандартный форм-фактор, который разбивает функции микроконтроллера на более доступные пакеты.

Необходимые компоненты для нашего урока по списку:

  1. Arduino UNO - 1 шт.
  2. Провода-переходники папа-папа
  3. Клавиатура - 14 Ом
  4. Динамики - 1 A
  5. ПК или ноутбук

Как подключать всю схему мы рассмотрим на втором шаге.

Шаг 2. Соединяем компоненты

Подключите Клавиатуру строки к 3 2 8 0 контактам Arduino и столбцы к 7 6 5 4 выводам Arduino.

Шаг 2: Соединяем компоненты

Подключите провода Динамика к клеммам 11 и Земля (GND).

Шаг 3. Как настроить оборудование

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

Для этого проекта мы использовали C4, D4, E4, F4, G4, A4, B4, C5, D5, E5, F5, G5, A5 и B5, причем C4 был переключателем '0', D4 - переключателем '1' и так далее. Измените значения частот или добавьте дополнительные переключатели, чтобы полностью настроить собственный проект. Динамик просто подключен одним концом к контакту 11 Arduino, а другой - к земле.

Функция «тон» ("tone") в коде будет искать этот вывод для воспроизведения вызываемой ноты.

Шаг 4. Рабочий код

Вставьте код ниже в Arduino IDE и затем загрузите его в микроконтроллер. Нажмите кнопку сброса, если что-то пойдет не так. Вам также необходимо загрузить и установить библиотеку Arduino Keypad, которая доступна на официальном сайте микроконтроллера по этой ссылке.

#include <Keypad.h>
#include "pitches.h" #
define GND 12 
const byte ROWS = 4; //four rows 
const byte COLS = 4; //four columns 
const int SPEAKER=11;
//define the symbols on the buttons of the keypads 
char hexaKeys[ROWS][COLS] = {  
{'0','1','2','3'},   
{'4','5','6','7'},   
{'8','9','A','B'},   
{'C','D','E','F'} }; 
byte rowPins[ROWS] = {3, 2, 8, 0}; //connect to the row pinouts of the keypad 
byte colPins[COLS] = {7, 6, 5, 4}; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad 
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
void setup()
{   
Serial.begin(9600);  
pinMode(GND,OUTPUT);   
digitalWrite(GND,LOW); 
}    
void loop()
{   
char customKey = customKeypad.getKey();      
if (customKey=='0')
{     
Serial.println(customKey);     
tone(SPEAKER,NOTE_C4,350);   
}   
if (customKey=='1')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_D4,350);
 }   
if (customKey=='2')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_E4,350);
  }
  if (customKey=='3')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_F4,350);
  }
  if (customKey=='4')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_G4,350);
  }   
if (customKey=='5')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_A4,350);
  }
  if (customKey=='6')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_B4,350);
  }
  if (customKey=='7')
{ 
    Serial.println(customKey);
    tone(SPEAKER,NOTE_C5,350);
  }
  if (customKey=='8')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_D5,350);
  }
  if (customKey=='9')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_E5,350);
  }
  if (customKey=='A')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_F5,350);
  }
  if (customKey=='B')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_G5,350);
  }
  if (customKey=='C')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_A5,350);
  }
  if (customKey=='D')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_B5,350);
  }
  if (customKey=='E')
{ 
    Serial.println(customKey);
    tone(SPEAKER,NOTE_C6,350);
  }
  if (customKey=='F  ')
{
    Serial.println(customKey);
    tone(SPEAKER,NOTE_D6,350);
  }
}

Шаг 5. Как работает код?

Эскиз (скетч) начинается с импорта библиотек Keypad.h и pitches.h, поэтому мы сможем ссылаться на различные элементы из них позже в коде. Далее, код настраивается путем определения количества ROWS и COLUMNS, определяющих, какие контакты входы и выходы, а также устанавливаем контакт Динамика как 11-й вывод Arduino.

Затем мы определяем значение каждой ноты в форме Матрицы и назначаем, какой вывод нам нужно связать со строками и столбцами:

  • в этом проекте мы использовали 3, 2, 8, 0 выводы как ROWS - строк,
  • 7, 6, 5, 4 в качестве COLUMNS - столбцов.

Основной цикл. Мы сохраняем каждое значение ноты в переменную customkey, а также печатаем значение в серийном мониторе Arduino IDE. Далее мы сравниваем каждую пользовательскую ноту и отправляем вывод SPEAKER NOTE (нота динамика) и DURATION (длительность) на функцию "тона".

На предыдущем шаге мы скачали библиотеку Arduino Keypad. Разархивируйте её в папку Arduino в Arduino IDE и далее пройдите:

Files → Example → Keypad → Custom Keypad

Шаг 6. Играем песню "С Днем Рождения"

Динамик должен быть подключен только к любым штыревым (PWM) разъемам ARDUINO, иначе настройка не будет работать.

Как играть песню "С Днем Рождения" на клавиатуре:

4 4 5 4 B 6 4 4 5 4 7 B
4 4 C 8 B 6 5
9 9 9 B 7 B

Желаем музыкальных успехов! До новых уроков, пока.

9 сентября 2017 в 23:45 | Обновлено 7 декабря 2019 в 02:25 (редакция)
Опубликовано:
Уроки,

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

Ваш E-mail не будет никому виден. Обязательные поля отмечены *