Ошибка ISO C++ forbids comparison between pointer and integer [-fpermissive]
- Войдите на сайт для отправки комментариев
Ср, 01/12/2021 - 19:52
Помогите исправить ошибку, новичек, следом и еще одна:
In function 'void loop()'
Скетч прилагаю:
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
OneWire oneWire(8);
DallasTemperature ds(&oneWire);
LiquidCrystal_I2C lcd(0x27, 16, 2);
//датчики температури за адресом
DeviceAddress TempV = {0x28, 0xD8, 0xF5, 0x8F, 0x38, 0x20, 0x1, 0x28};
DeviceAddress Tosol = {0x28, 0x80, 0xC3, 0x90, 0x38, 0x20, 0x1, 0x1D};
float Volt = 0;
int led = 10;//светодиод
void setup() {
Serial.begin(9600);
ds.begin();
lcd.init(); // Инициализация lcd
lcd.backlight(); // Включаем подсветку
pinMode(led, OUTPUT); //светодиод
}
void loop() {
ds.requestTemperatures(); // считываем температуру с датчиков
// Serial.print("Temp: ");
// Serial.print(ds.getTempC(TempV)); // отправляем температуру
// Serial.println("C");
// Serial.print("Tosol: ");
// Serial.print(ds.getTempC(Tosol)); // отправляем температуру
// Serial.println("C");
// Serial.println("");
// delay(300);
Volt = analogRead(A0) / 40.92; //пiн для вольтметру
Serial.println(Volt);
Serial.println("Вт");
delay(300);
ds.requestTemperatures(); // Считываем показания температуры
lcd.setCursor(0,0); // Устанавливаем курсор на 1 строку, ячейка 1
lcd.print("tv");
lcd.setCursor(3,0); // Устанавливаем курсор на 1 строку, ячейка 3
lcd.print(ds.getTempC(TempV),0); // Выводим показания температуры
lcd.setCursor(6,0); // Устанавливаем курсор на 1 строку, ячейка 6
lcd.print("ts");
lcd.setCursor(8,0); // Устанавливаем курсор на 1 строку, ячейка 8
lcd.print(ds.getTempC(Tosol),0); // Выводим показания температуры
lcd.setCursor(11,0); // Устанавливаем курсор на 1 строку, ячейка 11
lcd.print("v");
lcd.setCursor(12,0); // Устанавливаем курсор на 1 строку, ячейка 12
lcd.print(Volt,1); // Выводим показания температуры
if (Volt>13) {
digitalWrite(led, LOW);// включення светодиода
delay(300); //затримка перевірка 5с, якщо невірно виправити 5000
}
if (TempV>16){
// digitalWrite(led, HIGH);// выключення светодиода
// delay(300); //затримка перевірка 3хв, якщо невірно виправити 180*1000
}
}
Выскакивает при последнем сравнении if (TempV>16){
вставьте код по правилам форума
Извините, сразу не разобрался что нужно код вставлять в определеное место, исправлючь, как отредактировать єто не знаю.
Это русскоязычный форум.
как отредактировать єто не знаю.
Никак вставьте в новом посте, в этой же теме, но новым постом.
А текст ошибки где? Только ПОЛНОСТЬЮ и копипастой!
Ошибка что типы не совпадают?
Ошибка что типы не совпадают?
на дисплее выводится вся информация правильно, но при проверке скетча выдает ошибку.
строка 65
Да, в чем может быть проблема.
Да, в чем может быть проблема.
а что вы хотели в этом блоке получить?
строка 65.
Чудо, посмотри как описана TempV!!! ;)))) Самому не смешно?
строка 65.
Чудо, посмотри как описана TempV!!! ;)))) Самому не смешно?
ну что вы накинулись, пацан может не хочет на непрогретом двигателе начинать движение, спутал малость, что температуру надо получить, прежде чем сравнивать )))
Спасибо всем за советы, я ток начинаю, проблему вроде решил так, вместо
if
(TempV>16), прописал код if ((ds.getTempC(Temp)<26) и все заработало, если неверно, дайте знать.
прописал код if ((ds.getTempC(Temp)<26) и все заработало, если неверно, дайте знать.
неверно, в исходном коде нет переменной Temp
прописал код if ((ds.getTempC(Temp)<26) и все заработало, если неверно, дайте знать.
неверно, в исходном коде нет переменной Temp
По советам выше TempV переименовал в Temp
если бы компилятор выводил ошибки в вашей родной локали, то вывод выглядел бы как "Ошибка: ISO C++ запрещает сравнение между указателем и целым числом [-fpermissive]"
И вопрос бы отпал сам собой.
TempV это адрес структуры типа DeviceAddress, которую вы инициализировали выше.
Компилятор С++ настолько умён, что не даёт вам сравнивать адрес на структуру с числом "16".
По советам выше TempV переименовал в Temp
интересно, где это вы увидели совет переименовать переменную? :)
интересно, где это вы увидели совет переименовать переменную? :)
Думаю, что в #12 :-)