Как устранить сообщение об ошибке "assignment of function 'void digitalWrite (uint8_t, uint_8)"?

Я новичок в использовании Arduino и программировании на c / c ++. Я пытаюсь подключить 10-сегментный светодиод и датчик влажности к моему Arduino Uno, и когда уровень влажности очень низкий, первые 2 красных светодиода будут включены, когда он немного выше, следующие три оранжевых светодиода будут включены, когда он немного выше. следующие три зеленых светодиода будут включены, и, наконец, когда уровень влажности превысит пороговое значение для зеленых светодиодов, включится последний синий сегмент светодиода.

Я написал программу, которая работает, и я протестировал как датчик влажности, так и 10-сегментный светодиод отдельно, чтобы убедиться, что они работают. Хотя программа работает так, как я задумал, примерно в 30-40% случаев я не могу запустить программу из-за сообщения об ошибке в процессе загрузки. Чтобы было ясно, я вообще не меняю код из рабочего состояния кода в появившееся сообщение об ошибке. Я хотел знать, почему появляется это сообщение и как избежать / решить эту проблему.

Я включил свой код ниже:

/*
   Arduino LED Bar Graph with Moisture Sensor
   Started June 25, 2020

   edited 6/28
    (added blue LED)
*/

int redLED = 13;
int yellowLED = 12;
int greenLED = 11;
int blueLED = 10;

#define SensorPin A0
float sensorValue = 0;
float moistureLevel = 0;

void setup()
{
  // поместите свой установочный код здесь, чтобы запустить один раз:
  Serial.begin(9600);
  pinMode(redLED, OUTPUT);
  pinMode(yellowLED, OUTPUT);
  pinMode(greenLED, OUTPUT);
  pinMode(blueLED, OUTPUT);
}

void loop()
{
  if  (Serial.available() > 900)
  {
    moistureLevel = Serial.read();//установить уровень влажности var
    digitalWrite = (redLED, HIGH);
    digitalWrite = (yellowLED, LOW);
    digitalWrite = (greenLED, LOW);
    digitalWrite = (blueLED, LOW)
  }
  else if (Serial.available() > 750)
  {
    moistureLevel = Serial.read();//установить уровень влажности var
    digitalWrite = (yellowLED, HIGH);
    digitalWrite = (redLED, LOW);
    digitalWrite = (greenLED, LOW);

  }
  else(Serial.available() > 550)
  {
    moistureLevel = Serial.read();//установить уровень влажности var
    digitalWrite = (greenLED, HIGH);
    digitalWrite = (redLED, LOW);
    digitalWrite = (yellowLED, LOW);
    digitalWrite = (blueLED, LOW);
  }
  else(Serial.available() < 549)
  {
    moistureLevel = Serial.read();//установить уровень влажности var
    digitalWrite = (greenLED, HIGH);
    digitalWrite = (redLED, LOW);
    digitalWrite = (yellowLED, LOW);
    digitalWrite = (blueLED, HIGH);
  }
  for (int i = 0; i <= 100; i++)
  {
    sensorValue = sensorValue + analogRead(SensorPin);
    delay(1);
  }
  sensorValue = sensorValue / 100.0;
  Serial.println(sensorValue);
  delay(100);
}

А вот копия точного сообщения об ошибке:

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino: In function 'void loop()':

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:33:33: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = {redLED, HIGH};

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:33:33: error: cannot convert '<brace-enclosed initializer list>' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:34:35: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = (yellowLED, LOW);

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:34:35: error: cannot convert 'int' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:35:34: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = (greenLED, LOW);

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:35:34: error: cannot convert 'int' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:36:33: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = (blueLED, LOW)

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:36:33: error: cannot convert 'int' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:41:36: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = (yellowLED, HIGH);

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:41:36: error: cannot convert 'int' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:42:32: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = (redLED, LOW);

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:42:32: error: cannot convert 'int' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:43:34: error: assignment of function 'void digitalWrite(uint8_t, uint8_t)'

digitalWrite = (greenLED, LOW);

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:43:34: error: cannot convert 'int' to 'void(uint8_t, uint8_t) {aka void(unsigned char, unsigned char)}' in assignment

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:47:3: error: expected ';' before '{' token

{

^

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:54:3: error: 'else' without a previous 'if'

else(Serial.available() < 549)

^~~~

/tmp/777165248/sketch_jun25a/sketch_jun25a.ino:55:3: error: expected ';' before '{' token

{

^

exit status 1

, 👍1

Обсуждение

сообщение об ошибке возникает во время компиляции кода, а не во время загрузки... вы всегда получаете эту ошибку, а не только иногда ... Очевидная вещь, которую нужно сделать, - это просмотреть команду "digitalWrite", чтобы увидеть, не допустили ли вы ошибку... пожалуйста, сделай это, @jsotola


1 ответ


Лучший ответ:

2

У вас есть:

digitalWrite = (redLED, HIGH);

Это неверно, так как digitalWrite - это функция, а не переменная. Вместо этого вы, вероятно, хотите:

digitalWrite(redLED, HIGH);

При этом вызывается функция digitalWrite с двумя аргументами.

,

пожалуйста, не пишите ответы на вопросы о синтаксических ошибках. они не по теме, @Juraj

@Juraj У меня возникли проблемы с поиском того, где политика сайта запрещает такие вопросы или ответы. Пожалуйста, опубликуйте ссылку на него. Спасибо., @jwh20

https://arduino.stackexchange.com/help/on-topic - Не по теме: Общее кодирование:, @Juraj

@Juraj. Вопрос кодирования очень сильно связан с Arduino. Я думаю, что вы читаете гораздо больше в руководстве, чем есть на самом деле., @jwh20

https://arduino.meta.stackexchange.com/questions/2667/trivial-questions-must-be-off-topic, @Juraj

Тривиально для вас - это не тривиально для новичка., @jwh20

отсутствие исследований также является заключительной причиной. основные примеры показывают, как использовать digitalWrite., @Juraj