

Мерзкое пианино
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
6 questions
Gerunds & Gerund Phrases
Presentation
•
10th - 11th Grade
9 questions
Montes Day 4: Impact of the New Deal
Presentation
•
11th Grade
9 questions
Procedure Text.....
Presentation
•
11th Grade
6 questions
Gerunds and Gerund Phrases
Presentation
•
10th - 11th Grade
7 questions
MAPS,GRAPHS,CHARTS
Presentation
•
KG - 12th Grade
6 questions
Unit 3 Ευαγγελία Τριανταφύλλη
Presentation
•
11th Grade
6 questions
Экологические проблемы металлургии
Presentation
•
11th Grade
7 questions
MD 2
Presentation
•
KG
Popular Resources on Wayground
10 questions
Safety Day 2026 – Student Review
Quiz
•
9th Grade
21 questions
Continents and Oceans
Quiz
•
6th Grade
20 questions
Parts of Speech
Quiz
•
5th Grade
16 questions
Subject & Predicate
Quiz
•
5th Grade
25 questions
Multiplication Facts
Quiz
•
5th Grade
12 questions
Map Skills
Quiz
•
3rd Grade
22 questions
Continents and Oceans
Quiz
•
5th Grade
15 questions
Rounding Decimals
Quiz
•
5th Grade