Как устранить сообщение об ошибке "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
@Arya, 👍1
Обсуждение1 ответ
Лучший ответ:
У вас есть:
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
- Как запрограммировать 2 ультразвуковых датчика, один на серводвигателе и один прикрепленный на передней стороне автомобиля?
- Какие есть другие IDE для Arduino?
- Использование YS-IRTM с Arduino Uno
- Онлайн-проблема подключения Arduino к базе данных MySQL
- Как определить направление вращения с помощью датчика времени энкодера (фотоэлектрический датчик скорости)?
- Как сохранить данные на SD-карту с помощью модуля защиты памяти SPI
- Получить массив символов с помощью модуля SIM900
- Как преобразовать значения RGB в интенсивность
сообщение об ошибке возникает во время компиляции кода, а не во время загрузки... вы всегда получаете эту ошибку, а не только иногда ... Очевидная вещь, которую нужно сделать, - это просмотреть команду "digitalWrite", чтобы увидеть, не допустили ли вы ошибку... пожалуйста, сделай это, @jsotola