// ===== Пианино на Arduino UNO =====
// 7 кнопок -> 7 нот, зуммер на аналоговом пине A0
const uint8_t BUZZER_PIN = A0; // зуммер на аналоговом пине
// Пины кнопок
const uint8_t NUM_BUTTONS = 7;
const uint8_t buttonPins[NUM_BUTTONS] = {2, 3, 4, 5, 6, 7, 8};
// Частоты нот (Гц): До, Ре, Ми, Фа, Соль, Ля, Си (первая октава)
const unsigned int noteFreq[NUM_BUTTONS] = {
262, // До (C4)
294, // Ре (D4)
330, // Ми (E4)
349, // Фа (F4)
392, // Соль(G4)
440, // Ля (A4)
494 // Си (B4)
};
void setup() {
// Кнопки с подтяжкой к питанию (нажатие = LOW)
for (uint8_t i = 0; i < NUM_BUTTONS; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
// Зуммер как выход
pinMode(BUZZER_PIN, OUTPUT);
noTone(BUZZER_PIN);
}
void loop() {
int activeNote = -1; // индекс нажатой ноты (-1 = ничего не нажато)
// Ищем нажатую кнопку
for (uint8_t i = 0; i < NUM_BUTTONS; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
activeNote = i;
break; // играем только одну ноту одновременно
}
}
// Управляем звуком
if (activeNote >= 0) {
tone(BUZZER_PIN, noteFreq[activeNote]);
} else {
noTone(BUZZER_PIN);
}
delay(5); // небольшая задержка для стабильности
}