В этом уроке сделаем пианино с помощью Arduino и сыграем свою первую мелодию на этом мини-пианино.
Arduino - платформа с открытым исходным кодом, используемая для создания проектов в электронике.
Arduino состоит из программируемой платы (часто называемой микроконтроллером) и части программного обеспечения или интегрированной среды разработки Arduino IDE, которая работает на вашем компьютере, используется для написания и загрузки компьютерного кода на плату.
Шаг 1. Компоненты
Платформа Arduino стала довольно популярной среди людей только начинающих в электронике, и не зря. В отличие от большинства предыдущих программируемых печатных плат, Arduino не нуждается в отдельном аппаратном обеспечении для загрузки нового кода на плату - вы можете просто использовать USB-кабель.
Кроме того, в Arduino IDE используется упрощенная версия C ++, что упрощает обучение программе. Наконец, Arduino предоставляет стандартный форм-фактор, который разбивает функции микроконтроллера на более доступные пакеты.
Необходимые компоненты для нашего урока по списку:
- Arduino UNO - 1 шт.
- Провода-переходники папа-папа
- Клавиатура - 14 Ом
- Динамики - 1 A
- ПК или ноутбук
Как подключать всю схему мы рассмотрим на втором шаге.
Шаг 2. Соединяем компоненты
Подключите Клавиатуру строки к 3 2 8 0 контактам Arduino и столбцы к 7 6 5 4 выводам Arduino.
Подключите провода Динамика к клеммам 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
Желаем музыкальных успехов! До новых уроков, пока.