Помогите, пожалуйста, с кодом для Arduino Uno!
- Войдите на сайт для отправки комментариев
Пнд, 11/02/2019 - 21:40
Всем привет! Не могу понять где ошибка в коде. IDE выдаёт ошибку:
"Arduino: 1.8.8 (Windows Store 1.8.19.0) (Windows 10), Плата:"Arduino/Genuino Uno"
C:\Users\vanya\Desktop\Button_dht_time\BUTTON_DHT_TIME_BMP\BUTTON_DHT_TIME_BMP.ino: In function 'void loop()':
BUTTON_DHT_TIME_BMP:107:3: error: expected initializer before 'double'
double P,T;
^
BUTTON_DHT_TIME_BMP:109:3: error: 'status' was not declared in this scope
status = pressure.startPressure(3);
^
BUTTON_DHT_TIME_BMP:116:41: error: 'T' was not declared in this scope
status = pressure.getPressure(P,T);
^
BUTTON_DHT_TIME_BMP:121:26: error: invalid operands of types 'byte [8] {aka unsigned char [8]}' and 'double' to binary 'operator/'
Serial.print(P/133.3);
^
BUTTON_DHT_TIME_BMP:170:15: error: invalid operands of types 'byte [8] {aka unsigned char [8]}' and 'double' to binary 'operator/'
lcd.print(P/133.3);
^
exit status 1
expected initializer before 'double'
expected initializer before 'double'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции" "
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции" "
Заранее спасибо!)
Вот код
#include <SFE_BMP180.h>
#include <TimeLib.h>
#include <Wire.h> // библиотека для протокола IIC
#include <LiquidCrystal_I2C.h> // подключаем библиотеку LCD IIC
LiquidCrystal_I2C lcd(0x27,20,2); // присваиваем имя lcd для дисплея
#include <DHT.h> // подключаем библиотеку для DHT11
DHT dht(2, DHT11); // к какому порту подключаем датчик
SFE_BMP180 pressure;
byte BUTTON=4;
// создаем символ градуса и присваиваем имя "gradus"
byte gradus[8] = {
0b01100,0b10010,0b10010,0b01100,0b00000,0b00000,0b00000,0b00000
};
// создаем русскую букву "П"
byte P[8] = {
0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000
};
// создаем русскую букву "У"
byte Y[8] = {
0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b01110,0b00000
};
// создаем русскую букву "Л"
byte L[8] = {
0b00111,0b01001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000
};
// создаем русскую букву "Ж"
byte ZH[8] = {
0b10101,0b10101,0b10101,0b01110,0b10101,0b10101,0b10101,0b00000
};
// создаем русскую букву "Ь"
byte znak[8] = {
0b10000,0b10000,0b10000,0b11110,0b10001,0b10001,0b11110,0b00000
};
byte YA[8] = {
0b01111,
0b10001,
0b10001,
0b01111,
0b00101,
0b01001,
0b10001,
0b00000
};
byte D[8] = {
0b00100,
0b01010,
0b01010,
0b01010,
0b11111,
0b10001,
0b10001,
0b00000
};
byte I[8] = {
0b10001,
0b10011,
0b10101,
0b10101,
0b10101,
0b11001,
0b10001,
0b00000
};
void setup() {
pinMode (BUTTON, INPUT);
Serial.begin(9600); // запуск последовательного порта
lcd.init(); // инициализация LCD дисплея
lcd.backlight(); // включение подсветки дисплея
lcd.createChar(1, gradus);
lcd.createChar(2, P);
lcd.createChar(3, Y);
lcd.createChar(4, L);
lcd.createChar(5, ZH);
lcd.createChar(6, znak);
lcd.createChar(7, YA);
lcd.createChar(8, D);
lcd.createChar(9, I);
setTime (15, 54, 0, 7, 21, 2018);
}
void loop() {
// если нужны точные значение, то используйте float, вместо byte
byte h = dht.readHumidity(); // считываем значение температуры
byte t = dht.readTemperature(); // считываем значение влажности
char status
double P,T;
status = pressure.startPressure(3);
if (status != 0)
{
// ждем окончания замера:
delay(status);
status = pressure.getPressure(P,T);
if (status != 0)
{
Serial.print("абсолютное давление: ");
Serial.print(P/133.3);
Serial.println(" милиметров ртутного столба");
}
else Serial.println("ошибка получение давления\n");
}
else Serial.println("ошибка запуска получения давления\n");
delay(5000); // пауза 5 секунд.
if(digitalRead(BUTTON) == HIGH)
{
lcd.setCursor(0,0); // ставим курсор на 1 символ первой строки
lcd.print("TEM"); // используем латинские буквы
lcd.print(char(2)); // выводим русскую букву "П"
lcd.print("EPAT"); // используем латинские буквы
lcd.print(char(3)); // выводим русскую букву "У"
lcd.print("PA: "); // используем латинские буквы
lcd.print(t); // выводим значение температуры на LCD
lcd.print(char(1)); // выводим знак градуса
lcd.setCursor(0,1); // ставим курсор на 3 символ второй строки
lcd.print("B"); // используем латинские буквы
lcd.print(char(4)); // выводим русскую букву "Л"
lcd.print("A"); // используем латинские буквы
lcd.print(char(5)); // выводим русскую букву "Ж"
lcd.print("HOCT"); // используем латинские буквы
lcd.print(char(6)); // выводим русскую букву "Ь"
lcd.print(": "); // используем латинские буквы
lcd.print(h); // выводим значение влажности на LCD
lcd.print("%"); // выводим знак процент
delay(1000);
}
else
{
lcd.clear();
lcd.print( hour() );
lcd.print( ":" );
lcd.print( minute() );
lcd.setCursor(0,1);
lcd.print(char(8));
lcd.print("AB");
lcd.print(char(4));
lcd.print("EH");
lcd.print(char(9));
lcd.print("E ");
lcd.print(P/133.3);
lcd.print("MM.PT.CT");
delay(1000);
}
}
Попробуйте в 106 строке поставить точку с запятой, а в 107 - float.
P/S Не, 107 не трогайте.
строка 106 не хватает " ; "
В плюс к точке с запятой: что у Вас за LiquidCrystal_I2C? В той, что у меня, нет метода init.