

Мерзкое пианино
Presentation
•
Professional Development
•
11th Grade
•
Hard
Анастасия Ушакова
Used 5+ times
FREE Resource
9 Slides • 0 Questions
1
Мерзкое пианино
В этом эксперименте мы создаем маленькую клавиатуру, на которой можно сыграть несколько нот.
2
Кнопка
Тактовая кнопка — простой, всем известный механизм, замыкающий цепь пока есть давление на толкатель
3
Схема подключения
Напрашивается подключение напрямую. Но это наивный, неверный способ.
Пока кнопка нажата, выходное напряжение Vout = Vcc, но пока она отпущена, Vout ≠ 0. Кнопка и провода в этом случае работают как антенна, и Vout будет «шуметь», принимая случайные значения «из воздуха».
Пока соединения нет, необходимо дать резервный, слабый путь, делающий напряжение определённым. Для этого используют один из двух вариантов.
4
Список деталей для эксперимента
1 плата Arduino Uno
1 беспаечная макетная плата
1 пьезопищалка
3 тактовых кнопки
3 резистора номиналом 10 кОм
10 проводов «папа-папа»
Для дополнительного задания
еще 2 кнопки
еще 2 резистора номиналом 10 кОм
еще 2 провода
5
Схема на макетке
​
6
Обратите внимание
Ножки тактовой кнопки, расположенные с одной стороны, разомкнуты, когда кнопка не нажата. Ножки, расположенные друг напротив друга на противоположных сторонах макетки находятся на одной «рельсе». Воспользовавшись этим, мы можем расположить резистор с одной стороны макетки, а провод, подключаемый к порту Arduino, с другой стороны.
Для того, чтобы данный вариант программы работал, важно, чтобы кнопки были подключены к портам, находящимся рядом друг с другом, т.е. имеющим соседние номера.
7
Скетч
#define BUZZER_PIN 13 // пин с пищалкой (англ. «buzzer») #define FIRST_KEY_PIN 7 // первый пин с клавишей (англ. «key») #define KEY_COUNT 3 // общее количество клавиш void setup() { pinMode(BUZZER_PIN, OUTPUT); }
8
void loop() {
// в цикле бежим по всем номерам кнопок от 0-го по 2-й
for (int i = 0; i < KEY_COUNT; ++i)
{ // на основе номера кнопки вычисляем номер её пина
int keyPin = i + FIRST_KEY_PIN;
// считываем значение с кнопки. Возможны всего 2 варианта: // * высокий сигнал, 5 вольт, истина — кнопка отпущена // * низкий сигнал, земля, ложь — кнопка зажата
boolean keyUp = digitalRead(keyPin);
9
// проверяем условие «если не кнопка отпущена». Знак «!» // перед булевой переменной означает отрицание, т.е. «не».
if (!keyUp) {
// рассчитываем высоту ноты в герцах в зависимости от // клавиши, которую рассматриваем на данном этапе цикла. // Мы получим значение 3500, 4000 или 4500
int frequency = 3500 + i * 500;
// Заставляем пищалку пищать с нужной частотой в течение // 20 миллисекунд. Если клавиша останется зажатой, пищалка // вновь зазвучит при следующем проходе loop, а мы услышим // непрерывный звук tone(BUZZER_PIN, frequency, 20);
}
}
}
Мерзкое пианино
В этом эксперименте мы создаем маленькую клавиатуру, на которой можно сыграть несколько нот.
Show answer
Auto Play
Slide 1 / 9
SLIDE
Similar Resources on Wayground
10 questions
explanation text
Presentation
•
11th Grade
4 questions
2I: Key features of rational & polyniminal functions
Presentation
•
11th Grade
5 questions
Счет от 1 до 10
Presentation
•
KG
5 questions
Урок на тему "Фотоефект. Закони фотоефекту"
Presentation
•
11th Grade
6 questions
Using Your Voice is a Political Choice-Amanda Gorman
Presentation
•
11th Grade
7 questions
Управление умным домом
Presentation
•
KG
8 questions
Monty Hall Problem: what should you do?
Presentation
•
KG
8 questions
Двумембранные органоиды
Presentation
•
11th Grade
Popular Resources on Wayground
10 questions
GPA Lesson
Presentation
•
9th - 12th Grade
7 questions
Albert Einstein
Quiz
•
3rd Grade
31 questions
Bridge A Review
Quiz
•
3rd Grade
6 questions
Blue Sue and Red Ruth
Quiz
•
3rd Grade
8 questions
(Day12 HW) Inverse Trig Ratios
Quiz
•
9th Grade
20 questions
Summer Geometry QUIZ (Week3)
Quiz
•
9th Grade
16 questions
Theme Practice
Quiz
•
7th Grade
20 questions
Taxes
Quiz
•
9th - 12th Grade