когда я компилирую свой код, я получаю сообщение об ошибке, указывающее, что «checkbutton» не объявлен в этой области
// По прошествии 2 секунд прекращаем игнорировать кнопку.
// Если кнопка нажата, вызываем функцию checkbutton.
if (millis() > ignore && digitalRead(0) == LOW)
{
checkbutton();
}
}
// Эта функция ожидает отпускания кнопки,
// затем ждет, пока она будет нажата, чтобы начать следующий запуск.
void checkbutton(){
delay (50); // Кнопка нажата, устранение дребезга.
while (digitalRead(0) == LOW) // Пока кнопка нажата,
{} // ничего не делать во время ожидания.
delay (50); // Кнопка нажата, устранение дребезга.
while (digitalRead(0) == HIGH)// Пока кнопка отпущена,
{} // ничего не делать во время ожидания.
ignore = 2000 + millis(); // Установить время игнорирования,
} // и возвращаемся в основной цикл.
@John Pfeffer, 👍-1
Обсуждение1 ответ
Вы используете checkbutton()
до того, как сообщили программе, что такое checkbutton()
.
Вам необходимо переместить все определение метода void checkbutton(){ ...
выше, т. е. перед любым вызовом этого метода (checkbutton();
).
Другим вариантом может быть упреждающее объявление, но я сомневаюсь, что он широко используется в проектах Arduino.
@jsotola: это правда. Я не думаю, что это широко используется в проектах Arduino. Во всяком случае, я добавил это к ответу, @Thomas Weller
Единственная причина, по которой он не используется широко, заключается в том, что IDE делает это за вас - незаметно. Хотя это помогает людям, только изучающим C и C++, быстро запустить что-то, они упускают возможность узнать о предварительных объявлениях, что неизбежно кусает их, когда они переходят в другую среду., @JRobert
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Пожалуйста, обновите свой скетч, чтобы добавить функции
setup()
иloop()
, а затем добавьте в него свой код с правильным форматированием., @VE7JROпожалуйста, не обижайтесь, но я проголосовал за ваш вопрос, потому что вы написали полный беспорядок ... вы не смотрели на то, что вы разместили? ... пожалуйста, отформатируйте свой код ... используйте кнопку
{}
для форматирования ... также, пожалуйста, задайте вопрос, @jsotolaВы должны предоставить полностью функциональный код, а не только его фрагмент. В одиночку это не сработает. Также вам необходимо включить полное сообщение об ошибке, включая номер строки, в которой произошла ошибка., @chrisl
Вы используете Arduino IDE для компиляции? Он автоматически добавит прототипы функций в начало вашего кода. Когда вы используете что-то еще для компиляции, вам нужно объявить каждую функцию выше, где вы ее используете., @chrisl