Arduino:Примеры/Tone3
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Простая клавиатура при помощи функции Tone [1]
Этот пример показывает, как использовать функцию tone() для генерации разных звуков при нажатии на разные силоизмерительные сенсоры.
Необходимое оборудование
- 8-омовый динамик - 1 шт.
- Силоизмерительный резистор - 3 шт.
- Резистор на 10 кОм - 3 шт.
- Резистор на 100 Ом - 1шт.
- Макетная плата - 1 шт.
- Провода-перемычки;
Цепь
Подсоединяем один контакт динамика к 8-ому цифровому контакту (через 100-омовый резистор), а другой – к «земле» (GND).
Три силоизмерительных резистора (или любые другие аналоговые сенсоры) параллельно подключаем к 5-вольтовому напряжению. Каждый резистор подключаем к аналоговому контакту (0-ому, 1-ому и 2-ому, соответственно) и на тех же линиях (на Breadboard) ставим 10 кОм резисторы, соединенные с «землей».
Схема
Код
Этот скетч считывает данные, идущие от трех сенсоров, подключенных к аналоговым контактам Arduino. Каждый сенсор соответствует определенной ноте. Если нажатие на сенсор превысит заданное пороговое значение, он проиграет ноту.
/*
Клавиатура
Проигрывает звук, изменяющийся в зависимости от изменения входных данных, считанных на аналоговых контактах.
Цепь:
* Три силоизмерительных резистора, подключенные к 0-ому, 1-ому и 2-ому аналоговым контактам и 5-вольтовому напряжению
* Три 10000-омовых резистора, подключенные к 0-ому, 1-ому и 2-ому аналоговым контактам и «земле»
* 8-омовый динамик, подключенный к 8-ому цифровому контакту
Создан 21 января 2010,
модифицирован 9 апреля 2012 Томом Иго (Tom Igoe)
Этот пример кода не защищен авторским правом.
http://arduino.cc/en/Tutorial/Tone3
*/
#include "pitches.h"
const int threshold = 10; // задаем минимальное пороговое значение при нажатии на кнопку (если это значение будет преодолено, сенсор проиграет звук)
// задаем ноты, которые будут проигрываться,
// а также их соответствие трем силоизмерительным сенсорам:
int notes[] = {
NOTE_A4, NOTE_B4,NOTE_C3 };
void setup() {
}
void loop() {
for (int thisSensor = 0; thisSensor < 3; thisSensor++) {
// считываем данные с сенсора:
int sensorReading = analogRead(thisSensor);
// если на сенсор нажали достаточно сильно:
if (sensorReading > threshold) {
// проигрываем ноту, соответствующую этому сенсору:
tone(8, notes[thisSensor], 20);
}
}
}
Скетч использует дополнительный файл – pitches.h. Этот файл содержит все необходимые значения, соответствующие стандартным нотам. К примеру, NOTE_C4 – это среднее «до», а NOTE_FS4 – это «фа-диез» и т.д. Этот нотный «алфавит» был впервые написан Бреттом Хэгменом (Brett Hagman), и в основе функции tone() лежит как раз эта его работа. Она может пригодиться для любого случая, где используются музыкальные ноты.
Чтобы создать этот файл, кликните по кнопке New Tab в правом верхнем углу окна. Она выглядит следующим образом:
Вставьте туда вот этот код:
/*************************************************
* Эти константы являются общественным достоянием
*************************************************/
#define NOTE_B0 31
#define NOTE_C1 33
#define NOTE_CS1 35
#define NOTE_D1 37
#define NOTE_DS1 39
#define NOTE_E1 41
#define NOTE_F1 44
#define NOTE_FS1 46
#define NOTE_G1 49
#define NOTE_GS1 52
#define NOTE_A1 55
#define NOTE_AS1 58
#define NOTE_B1 62
#define NOTE_C2 65
#define NOTE_CS2 69
#define NOTE_D2 73
#define NOTE_DS2 78
#define NOTE_E2 82
#define NOTE_F2 87
#define NOTE_FS2 93
#define NOTE_G2 98
#define NOTE_GS2 104
#define NOTE_A2 110
#define NOTE_AS2 117
#define NOTE_B2 123
#define NOTE_C3 131
#define NOTE_CS3 139
#define NOTE_D3 147
#define NOTE_DS3 156
#define NOTE_E3 165
#define NOTE_F3 175
#define NOTE_FS3 185
#define NOTE_G3 196
#define NOTE_GS3 208
#define NOTE_A3 220
#define NOTE_AS3 233
#define NOTE_B3 247
#define NOTE_C4 262
#define NOTE_CS4 277
#define NOTE_D4 294
#define NOTE_DS4 311
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_FS4 370
#define NOTE_G4 392
#define NOTE_GS4 415
#define NOTE_A4 440
#define NOTE_AS4 466
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_CS5 554
#define NOTE_D5 587
#define NOTE_DS5 622
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_FS5 740
#define NOTE_G5 784
#define NOTE_GS5 831
#define NOTE_A5 880
#define NOTE_AS5 932
#define NOTE_B5 988
#define NOTE_C6 1047
#define NOTE_CS6 1109
#define NOTE_D6 1175
#define NOTE_DS6 1245
#define NOTE_E6 1319
#define NOTE_F6 1397
#define NOTE_FS6 1480
#define NOTE_G6 1568
#define NOTE_GS6 1661
#define NOTE_A6 1760
#define NOTE_AS6 1865
#define NOTE_B6 1976
#define NOTE_C7 2093
#define NOTE_CS7 2217
#define NOTE_D7 2349
#define NOTE_DS7 2489
#define NOTE_E7 2637
#define NOTE_F7 2794
#define NOTE_FS7 2960
#define NOTE_G7 3136
#define NOTE_GS7 3322
#define NOTE_A7 3520
#define NOTE_AS7 3729
#define NOTE_B7 3951
#define NOTE_C8 4186
#define NOTE_CS8 4435
#define NOTE_D8 4699
#define NOTE_DS8 4978
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino