По отдельности все датчики работают ,но в одном скетче нет

Тема в разделе "Arduino & Shields", создана пользователем Danilafm4, 2 фев 2022.

  1. Danilafm4

    Danilafm4 Нуб

    Привет вот такая проблема делаю метеостанцию проверил датчики и дисплей всё работает , но когда они вместе в одно скетче не работают
    Код (C++):
    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <BigNumbers_I2C.h>
    #include <SPI.h>
    #include <Adafruit_BMP280.h>

    #define BMP_CS   (10)
    Adafruit_BMP280 bmp(BMP_CS);

    #include <MHZ19_uart.h>
    MHZ19_uart mhz19;
    #include <EncButton.h>
    EncButton<EB_TICK, 4> btn;


    LiquidCrystal_I2C lcd(0x27,20,4); // construct LCD object
    BigNumbers_I2C bigNum(&lcd);
    int plot_array[20];

    #include "RTClib.h"
    RTC_DS3231 rtc;
    char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

    uint32_t myTimer1;
    int co2 = (mhz19.getPPM());

    int plot_array1[20];
    int plot_array2[20];      
    int plot_array3[20];



    const int red = 7;
    const int green = 6;
    const int blue = 5;

    void setup()
    {
      pinMode(red, OUTPUT);
      pinMode(green, OUTPUT);
      pinMode(blue, OUTPUT);
     
      int status;
      mhz19.begin(3, 2);
      mhz19.setAutoCalibration(false);
     
      status = mhz19.getStatus();
      Serial.println(status);
      status = mhz19.getStatus();
      if (millis() - myTimer1 >= 2000) {   // ищем разницу (500 мс)
        myTimer1 = millis();        
      }
     
       Serial.begin(9600);
      rtc.begin();
      lcd.init(); // setup LCD rows and columns
      lcd.backlight();
      bigNum.begin(); // set up BigNumbers
      lcd.clear(); // clear display

     
    }


    void initPlot() {
      // необходимые символы для работы
      // создано в http://maxpromer.github.io/LCD-Character-Creator/
      byte row8[8] = {0b11111,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111};
      byte row7[8] = {0b00000,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111};
      byte row6[8] = {0b00000,  0b00000,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111};
      byte row5[8] = {0b00000,  0b00000,  0b00000,  0b11111,  0b11111,  0b11111,  0b11111,  0b11111};
      byte row4[8] = {0b00000,  0b00000,  0b00000,  0b00000,  0b11111,  0b11111,  0b11111,  0b11111};
      byte row3[8] = {0b00000,  0b00000,  0b00000,  0b00000,  0b00000,  0b11111,  0b11111,  0b11111};
      byte row2[8] = {0b00000,  0b00000,  0b00000,  0b00000,  0b00000,  0b00000,  0b11111,  0b11111};
      byte row1[8] = {0b00000,  0b00000,  0b00000,  0b00000,  0b00000,  0b00000,  0b00000,  0b11111};
      lcd.createChar(0, row8);
      lcd.createChar(1, row1);
      lcd.createChar(2, row2);
      lcd.createChar(3, row3);
      lcd.createChar(4, row4);
      lcd.createChar(5, row5);
      lcd.createChar(6, row6);
      lcd.createChar(7, row7);
    }

    void loop (){
    static byte mode = 0;
    btn.tick();
    if (btn.isClick()) {
    mode++;
    if (mode>=4) mode = 0;
     
    }
    switch (mode) {
      case 0: task1();break;
      case 1: task2();break;
      case 2: task3();break;
      case 3: task4();break;
    }
    }
    void task1(){
        DateTime now = rtc.now();
    lcd.setCursor(6,0);
    lcd.print("*") ;
    lcd.setCursor(6,1);
    lcd.print("*") ;
    lcd.setCursor(14,1);
    lcd.print(now.second());
    bigNum.displayLargeInt(now.hour(),0,0,2,0);
    bigNum.displayLargeInt(now.minute(),7,0,2,0);
    lcd.setCursor(0,2);
    lcd.print(now.day(), DEC);
    lcd.print('/');
    lcd.print(now.month(), DEC);
    lcd.print('/');
    lcd.print(now.year(), DEC);
    lcd.print(" ");
    lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
      lcd.setCursor(0,3);
      lcd.print("PPM: ");
      lcd.print(co2);
    }

    void task2(){
       lcd.clear();
     
     
      }


    void task3(){
      lcd.clear();

    }


    void task4(){
      lcd.clear();
     
    }
     
  2. akl

    akl Гуру

    а эта строчка
    int co2 = (mhz19.getPPM());
    точно на своем месте?
     
  3. Danilafm4

    Danilafm4 Нуб

    по идеи можно и без неё
     
  4. parovoZZ

    parovoZZ Гуру

    Так так же можно и без всего остального. По идее.
     
  5. Danilafm4

    Danilafm4 Нуб

    Я возможно понял в чем проблема , это из за bmp280 скорее всего