Светодиод мигает с помощью кнопки

Каждый раз, когда я загружаю следующую программу, я получаю сообщение об ошибке показывает "ожидаемый инициализатор перед интервалом".

Пожалуйста, помогите мне решить эту проблему.

const byte button=2;
const byte LED=10;
bool blinking =false;//определяет, когда должно происходить мерцание
unsigned long blink Interval=250;// количество миллисекунд для мигания
unsigned long currentMillis;// переменные для отслеживания millis()
unsigned long previousMillis;
void setup()
{
    pinMode(button,INPUT);
    pinMode(LED,OUTPUT);
}
void loop()
{
    // этот код мигает светодиодом
    if(blinking) {
        currentMillis =millis();// лучше хранить в переменной для меньшего джиттера

        if((unsignedlong)(currentMillis-previousMillis) >=blinkInterval) { // уже прошло достаточно времени?
            digitalWrite(LED,!digitalRead(LED)); // ярлык для переключения светодиода
            previousMillis =currentMillis;// устанавливаем время ожидания "от"
        }
    } else {
        digitalWrite(LED,LOW); // заставить светодиод выключаться, если он не мигает
    }

    int reading=digitalRead(button);
    delay(50); // грубое устранение дребезга

    if(reading==LOW) // кнопки с подтяжкой нажимаются при LOW
    { blinking =true; }// начинаем мигать
    else
    { blinking =false; }// прекращаем мигать
}

, 👍0


2 ответа


3

Это blinkInterval, а не blinkInterval. У вас есть пробел в имени в объявлении:

unsigned long blinkInterval=250; // количество миллисекунд для мерцания
// ....
if((unsigned long)(currentMillis-previousMillis) >= blinkInterval) { 
,

Спасибо! Это сработало, как вы предлагаете, но теперь моя проблема в том, что когда я продолжаю удерживать кнопку, светодиод мигает, а когда я отпускаю кнопку, он останавливается. Я хочу, чтобы это было, когда я удерживаю кнопку в течение 5 секунд, затем светодиод должен начать мигает в течение 10 минут или в определенное время. Пожалуйста, помогите мне решить эту проблему., @Josephazim

@Josephazim Посмотрите мой ответ. Это будет полезно для вас., @Hasan

@NickGammon Я думаю, вам нужно проверить этот раздел комментариев. Я ответил в соответствии с этой проблемой., @Hasan


0

Полностью рабочий скетч

const byte button=2;                     
const byte LED=10;                 
bool blinking =false;
unsigned long blinkInterval=250;                      
unsigned long currentMillis;                        
unsigned long previousMillis;                       
void setup()
{
    pinMode(button,INPUT);
    pinMode(LED,OUTPUT);
}
void loop()
{

    if(blinking) {
        currentMillis =millis();

        unsigned long blinkInterval=100;
        if((unsigned long)(currentMillis-previousMillis) >= blinkInterval) { 
            digitalWrite(LED,!digitalRead(LED)); LED
            previousMillis =currentMillis;
        }
    } else {
        digitalWrite(LED,LOW); 
    }

    int reading=digitalRead(button);
    delay(100); 

    if(reading==LOW) 
    { blinking =true; }
    else
    { blinking =false; }
}
,