Ошибка объявления 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". Что я должен сделать, чтобы исправить это?

Большое вам спасибо

, 👍0

Обсуждение

Я рекомендую помещать только 1 инструкцию в 1 строку. это значительно улучшает читабельность и облегчает поиск ошибок., @Kerbolosh

Вы забыли круглые скобки ( ) для параметров после определения changelights. Вам это нужно, даже если вы не указали никаких параметров. Хотя это чисто синтаксический вопрос C/C++, поэтому я голосую за закрытие. Исправление таких проблем не помогает другим людям, поэтому я всегда помогаю в комментариях, а затем голосую за закрытие., @chrisl

Отсутствуют двоеточия после вызова " задержка(3000)"., @JRobert


1 ответ


3

Вы забыли поставить скобки () после имени функции changelights. Они существуют для объявления переменных, которые вы можете использовать позже в коде следующим образом:

void function(int a){
  a+=1;
  return a;
}

Чтобы исправить ошибку, просто измените

void changelights{

чтобы

void changelights(){

Имейте в виду, что если вы хотите программировать C++ (что здесь было бы не по теме, но вы упомянули об этом в своем вопросе), вы должны объявить функцию в самом начале или упомянуть ее.

,

Среда разработки Arduino позаботится о добавлении предварительных объявлений для вас., @Edgar Bonet

Проблема в отсутствующих круглых скобках в определении функции. Прямое объявление функций выполняется с помощью Arduino IDE. И я думаю, мы можем предположить, что он этим пользуется. На данный момент работать с Arduino-это самый простой способ., @chrisl

@chrisl Я вижу, я отредактирую ответ., @Python Schlange