идея у меня такая - вывести на экран показания с датчиков температуры, давления и т.д. с возможностью кнопкой поочередного листания этих данных на экране.
решил для начала попрактиковаться на динамиках с двумя тонами.
- Код: Выделить всё • Развернуть
int regim = 1;
int flag = 0;
int buzzer1 = 9;
int buzzer2 = 10;
void setup()
{
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(buzzer1, OUTPUT); //объявляем пин как выход1
pinMode(buzzer2, OUTPUT); //объявляем пин как выход2
}
void loop()
{
if (digitalRead(A0) == HIGH && flag == 0) //если кнопка нажата
// и перемення flag равна 0 , то ...
{
regim++;
flag = 1;
//это нужно для того что бы с каждым нажатием кнопки
//происходило только одно действие
// плюс защита от "дребезга" 100%
if (regim > 4) //ограничим количество режимов
{
regim = 1; //так как мы используем только одну кнопку,
// то переключать режимы будем циклично
}
}
if (digitalRead(14) == LOW && flag == 1) //если кнопка НЕ нажата
//и переменная flag равна - 1 ,то ...
{
flag = 0; //обнуляем переменную "knopka"
}
if (regim == 1) //первый режим
{
digitalWrite(11, LOW); //выключаем все светодиоды
digitalWrite(12, LOW);
//здесь может быть любое ваше действие
}
if (regim == 2) //второй режим
{
digitalWrite(12, HIGH); //включае красный светодиод
digitalWrite(11, LOW);
tone (buzzer1, 261); //включаем на 261 Гц
delay(500); //на 500 миллисекунд
noTone(buzzer1); //выключаем динамик на 1 секунду
delay(1000);
tone(buzzer1, 493); //включаем на 493 Гц
delay(500); //на 500 миллисекунд
noTone(buzzer1);//выключаем динамик на 1 секунду
delay(1000);
//здесь может быть любое ваше действие
}
if (regim == 3) //третий режим
{
digitalWrite(11, HIGH); //включае зеленый светодиод
digitalWrite(12, LOW);
//здесь может быть любое ваше действие
}
if (regim == 4) //четвертый режим
{
digitalWrite(11, HIGH); //включаем светодиоды одновременно
digitalWrite(12, HIGH);
//здесь может быть любое ваше действие
}
}
нашел два скетча в интернете и соединил их. то есть добавил в скетч со светодиодами regim2 еще срабатывание динамика...
при работе выяснилось, что когда срабатывает динамик кнопку хоть затыкайся но динамик продолжает работать.
вопрос как прервать цикл работы динамика и продолжить действие скетча дальше?