const int buttonPin = 3; // Номер пина для кнопки
const int buzzerPin = 10; // Номер пина для динамика
float maxFreqWail = 1400; // Максимальная частота сирены
float maxFreqYelp = 1400; // Максимальная частота сирены
const int delayTimeWail = 300; // Задержка в микросекундах
const int delayTimeYelp = 100; // Задержка в микросекундах
bool elinaWail = 0;
bool elinaYelp = 0;
bool increasingWail = false; // Флаг, указывающий на направление изменения частоты
bool increasingYelp = false; // Флаг, указывающий на направление изменения частоты
float currentFrequencyWail = 200; // Текущая частота сирены
float currentFrequencyYelp = 200; // Текущая частота сирены
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // Настраиваем кнопку как входной пин с подтягивающим резистором
pinMode(4, INPUT_PULLUP); // Настраиваем кнопку как входной пин с подтягивающим резистором
}
void loop() {
if (!digitalRead(3)) {
elinaWail = !elinaWail;
}
if (!digitalRead(4)) {
elinaYelp = !elinaYelp;
}
/*else {
elina = 0;
}*/
if (elinaWail) { // Кнопка нажата
if (increasingWail) { // Частота увеличивается
if (currentFrequencyWail < maxFreqWail) { // Пока не достигнута максимальная частота
currentFrequencyWail = (currentFrequencyWail + (currentFrequencyWail * 0.0009)); // Увеличиваем частоту
tone(buzzerPin, currentFrequencyWail); // Изменяем частоту сигнала
} else {
increasingWail = false; // Меняем направление
}
} else { // Частота уменьшается
if (currentFrequencyWail > 200) { // Пока не достигнута минимальная частота
currentFrequencyWail = currentFrequencyWail - (currentFrequencyWail / 700); // Уменьшаем частоту
tone(buzzerPin, currentFrequencyWail); // Изменяем частоту сигнала
} else {
increasingWail = true; // Меняем направление
}
}
delayMicroseconds(delayTimeWail); // Задержка
} else { // Кнопка не нажата
if (currentFrequencyWail > 200) { // Если частота не минимальная
currentFrequencyWail = currentFrequencyWail - (currentFrequencyWail / 4000); // Уменьшаем частоту
tone(buzzerPin, currentFrequencyWail); // Изменяем частоту сигнала
delayMicroseconds(delayTimeWail); // Задержка
}
}
if (elinaYelp) { // Кнопка нажата
if (increasingYelp) { // Частота увеличивается
if (currentFrequencyYelp < maxFreqYelp) { // Пока не достигнута максимальная частота
currentFrequencyYelp = (currentFrequencyYelp + (currentFrequencyYelp * 0.0009)); // Увеличиваем частоту
tone(buzzerPin, currentFrequencyYelp); // Изменяем частоту сигнала
} else {
increasingYelp = false; // Меняем направление
}
} else { // Частота уменьшается
if (currentFrequencyYelp > 200) { // Пока не достигнута минимальная частота
currentFrequencyYelp = currentFrequencyYelp - (currentFrequencyYelp / 700); // Уменьшаем частоту
tone(buzzerPin, currentFrequencyYelp); // Изменяем частоту сигнала
} else {
increasingYelp = true; // Меняем направление
}
}
delayMicroseconds(delayTimeYelp); // Задержка
} else { // Кнопка не нажата
if (currentFrequencyYelp > 200) { // Если частота не минимальная
currentFrequencyYelp = currentFrequencyYelp - (currentFrequencyYelp / 4000); // Уменьшаем частоту
tone(buzzerPin, currentFrequencyYelp); // Изменяем частоту сигнала
delayMicroseconds(delayTimeYelp); // Задержка
}
else {
noTone(10);
}
}
}