Загрузка данных


// ===== Пианино на 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); // небольшая задержка для стабильности
}