Ошибка компиляции
- Войдите на сайт для отправки комментариев
Пнд, 21/06/2021 - 19:27
Имеется код и в нем ошибка компиляции. Помогите пожалуйста разобраться
Вот ошибка:
Arduino: 1.6.8 (Windows 10), Плата:"Arduino Nano, ATmega328"
exit status 1
could not convert 'digitalWrite(3u, 0u)' from 'void' to 'bool'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
#include <dht11.h> #define DHT11PIN 4 dht11 DHT11; #include <TFT.h> #include <SPI.h> #define cs 10 #define dc 9 #define rst 8 TFT TFTscreen = TFT(cs, dc, rst); float K=0 ; //Переменная для хранения Счётчик кнопки float V=1000 ; //Переменная для хранения счётчика времени работы экрана char H[4]; // переменная влажность char T[4]; // переменная температура void setup() { pinMode(3, OUTPUT); // Реле вентилятора pinMode(12, OUTPUT); // индикатор вентилятора pinMode(12, OUTPUT); // индикатор вентилятора pinMode(5, OUTPUT); // индикатор кнопки pinMode(6, OUTPUT); // питание экрана + pinMode(7, OUTPUT); // питание экрана - pinMode(A0, INPUT); // Кнопки вентилятора TFTscreen.begin(); TFTscreen.setRotation (3); TFTscreen.background(255, 255, 255); TFTscreen.stroke(255, 255, 255); TFTscreen.setTextSize(2); TFTscreen.text("Sensor Value :\n ", 0, 0); TFTscreen.setTextSize(5); } void loop() { { // считываем датчик int chk = DHT11.read(DHT11PIN); String h = String(DHT11.humidity); String t = String(DHT11.temperature); h.toCharArray(H, 4); t.toCharArray(T, 4); // Вывод влажности TFTscreen.stroke(200, 200, 000); TFTscreen.text(H, 10, 40); // Вывод температуры TFTscreen.stroke(000, 255, 255); TFTscreen.text(T, 90, 40); delay(450); // Стираем влажность очистка экрана TFTscreen.stroke(255, 255, 255); TFTscreen.text(H, 10, 40); // Стираем температуру TFTscreen.stroke(255, 255, 255); TFTscreen.text(T, 90, 40); } //======================================================================================================================================================= // —-----------------------читаем кнопку-------------------------— if (analogRead(A0) > 300) // кнопка нажата { digitalWrite(5, HIGH); // зажигаем зелёный светодиод (кнопка нажата) K=K+1 ; // Считаем задержку нажатия кнопки. V=1000 ; // взвод счётсика работы экрана } // —-----------Действие по длинной кнопке —----------— if (K > 300) // кнопка нажата длительно запуск или стоп вентилятора { } if (digitalWrite(3, LOW)) // Если вентилятор выключен.Включить { digitalWrite(3, HIGH); // включить реле вентилятора digitalWrite(12, HIGH); // включить красный индикатор реле delay(1000); // Пауза кнопки } if (digitalWrite(3, HIGH)) // Если вентилятор выключен.Включить { digitalWrite(3, LOW); // выключить реле вентилятора digitalWrite(12, LOW); // выключить красный индикатор реле delay(1000); // Пауза кнопки } else // когда аналоговая кнопка отпущена { digitalWrite(5, LOW); // тушим зелёный светодиод (кнопка нажата) K=0 ; // обнуление счётчика кнопки } } //-------------------------------------------------------------------------------------------------------------— //-----------------------------------------------------------------------— if (V > 0) // Экран в работе { digitalWrite(6, HIGH); // включить питание экрану digitalWrite(7, LOW); // минус экрана V=V-1 ; // уменьшаем время работы. } else { digitalWrite(6, LOW); // включить питание экрану digitalWrite(7, LOW); // минус экрана }Ругается на эту строку:
if(digitalWrite(3, HIGH))// Если вентилятор выключен.Включитьи где вы такое вычитали, что оператором digitalWrite() можно ПРОЧИТАТЬ состояние пина? Английский в школе учили? Слова Write и Read отличаете?
Это да ошибка. уже подправил на Read. Суть проблемы не изменилась
Суть проблемы не изменилась
у вас такая строчка не одна. смотрите внимательнее. Исправляйте все, потом, если снова будут ошибки - выкладывайте сюда с кодом
Суть проблемы не изменилась
И не изменится, она гораздо глубже.
Все. всем спасибо. Разобрался
Молодец!