Помогите, пожалуйста, с кодом для Arduino Uno!

VanyaDrug
Offline
Зарегистрирован: 22.07.2018

Всем привет! Не могу понять где ошибка в коде. 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'
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции" "
 
Заранее спасибо!)

Вот код

#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);
}
}

 

bwn
Offline
Зарегистрирован: 25.08.2014

Попробуйте в 106 строке поставить точку с запятой, а в 107 - float.

P/S Не, 107 не трогайте.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

строка 106 не хватает   " ; "

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В плюс к точке с запятой: что у Вас за LiquidCrystal_I2C? В той, что у меня, нет метода init.