Судя по ошибке в Tinkercad, проблема может быть связана с тем, что функции setup() и loop() объявлены с неправильной линковкой. Давайте исправим ваш код, чтобы он компилировался правильно. Вот как должен выглядеть исправленный код:
#include
const int buzzerPin = 9;
const int buttonPin = 2;
const int potPin = A0;
int melodyIndex = 0;
long lastDebounceTime = 0;
long debounceDelay = 50;
bool buttonState = false;
bool lastButtonState = LOW;
int melody[][2] = {
{262, 500}, {294, 500}, {330, 500}, {349, 500}, // Первая мелодия
{392, 500}, {440, 500}, {494, 500}, {523, 500} // Вторая мелодия
// Добавьте больше мелодий, если нужно
};
void setup() {
pinMode(buzzerPin, OUTPUT);
pinMode(buttonPin, INPUT);
Serial.begin(9600);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == HIGH) {
melodyIndex = (melodyIndex + 1) % (sizeof(melody) / sizeof(melody[0]));
}
}
}
lastButtonState = reading;
int potValue = analogRead(potPin);
int melodyDuration = melody[melodyIndex][1] * potValue / 1023;
tone(buzzerPin, melody[melodyIndex][0], melodyDuration);
delay(melodyDuration + 50); // Добавляем небольшую паузу между звуками
}