Ошибка объявления void
Я новичок в Arduino и C++ и практиковался с проектом светофора.
Это мой код:
int red = 10;
int yellow = 9;
int green = 8;
void setup() {
pinMode(red,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(green,OUTPUT);
}
void loop() {
changelights();
delay (15000);
}
void changelights{
// 1st action: green off to yellow
digitalWrite(green, LOW);
digitalWrite(yellow, HIGH);
delay (3000)
// 2nd action: tellow to red
digitalWrite(yellow, LOW);
digitalWrite(red, HIGH);
//3rd action: caution light
digitalWrite(yellow, HIGH);
delay (3000)
//4th action: caution to go
digitalWrite(red,LOW);
digitalWrite(yellow, LOW);
digitalWrite(green, HIGH);
}
Я попытался скомпилировать его и вернул сообщение об ошибке, в котором говорилось, что я не объявлял свою функцию "changelights". Что я должен сделать, чтобы исправить это?
Большое вам спасибо
@Mik Galang, 👍0
Обсуждение1 ответ
Вы забыли поставить скобки ()
после имени функции changelights
. Они существуют для объявления переменных, которые вы можете использовать позже в коде следующим образом:
void function(int a){
a+=1;
return a;
}
Чтобы исправить ошибку, просто измените
void changelights{
чтобы
void changelights(){
Имейте в виду, что если вы хотите программировать C++ (что здесь было бы не по теме, но вы упомянули об этом в своем вопросе), вы должны объявить функцию в самом начале или упомянуть ее.
Среда разработки Arduino позаботится о добавлении предварительных объявлений для вас., @Edgar Bonet
Проблема в отсутствующих круглых скобках в определении функции. Прямое объявление функций выполняется с помощью Arduino IDE. И я думаю, мы можем предположить, что он этим пользуется. На данный момент работать с Arduino-это самый простой способ., @chrisl
@chrisl Я вижу, я отредактирую ответ., @Python Schlange
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Я рекомендую помещать только 1 инструкцию в 1 строку. это значительно улучшает читабельность и облегчает поиск ошибок., @Kerbolosh
Вы забыли круглые скобки
( )
для параметров после определенияchangelights
. Вам это нужно, даже если вы не указали никаких параметров. Хотя это чисто синтаксический вопрос C/C++, поэтому я голосую за закрытие. Исправление таких проблем не помогает другим людям, поэтому я всегда помогаю в комментариях, а затем голосую за закрытие., @chrislОтсутствуют двоеточия после вызова " задержка(3000)"., @JRobert