Саймон: кнопки и ноты
Часть раздела Проекты путешествия по Arduino на Coddy. Урок 13 из 24.
Simon — это игра на запоминание: игровое поле воспроизводит последовательность цветных огней и нот, а ты повторяешь её, нажимая кнопки. В каждом раунде последовательность увеличивается на один элемент, пока ты не ошибёшься. Есть четыре цвета, у каждого — кнопка, светодиод и нота.
Когда всего по четыре элемента, массивы помогают сделать скетч короче. Элемент 0 в каждом массиве соответствует красному цвету, 1 — зелёному, 2 — синему, а 3 — жёлтому, поэтому одно число, i, обозначает цвет везде:
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};Цикл for проверяет все четыре кнопки. Реагируй в двух случаях: кнопка нажимается (LOW сейчас, HIGH в прошлый раз) и отпускается (HIGH сейчас, LOW в прошлый раз). Массив lastState хранит последнее показание для каждой кнопки. На следующих этапах нажатие засчитывается, когда кнопку отпускают. Эти кнопки не дребезжат, поэтому проверки переходов состояния достаточны.
Задание
СреднеСделай так, чтобы четыре цвета звучали:
- в
setup()циклforустанавливает выводы LED как выходы, а выводы кнопок — в режимINPUT_PULLUP - когда кнопка
iнажата, зажгиledPins[i]и воспроизведиnotes[i]на выводе 8 - когда кнопку отпускают, выключи LED и вызови
noTone()
Нажми Run, понажимай кнопки, затем нажми Check.
Попробуйте сами
// По одному элементу для каждого цвета: красного, зелёного, синего, жёлтого
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523}; // C, E, G и C высокой октавы
const int buzzerPin = 8;
int lastState[4] = {HIGH, HIGH, HIGH, HIGH}; // последнее считанное состояние каждой кнопки
void setup() {
// Светодиоды — выходы, кнопки — INPUT_PULLUP
}
void loop() {
// для каждой кнопки: при нажатии включить её светодиод и воспроизвести соответствующую ноту;
// при отпускании кнопки выключить светодиод и звук
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Проекты
Потренируйтесь самостоятельно: Песочница Arduino