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

Тема в разделе "Arduino & Shields", создана пользователем vanya_drugov, 11 фев 2019.

  1. vanya_drugov

    vanya_drugov Нуб

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

    Код (C++):
    #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);
    }
    }
     
  2. parovoZZ

    parovoZZ Гуру

    где точка с запятой?

    компилятор вроде как и намекает: