Помогите! что не так в скетче?

Тема в разделе "Arduino & Shields", создана пользователем Aleks77777, 23 фев 2020.

  1. b707

    b707 Гуру

    да как же без острот-то, если вы который день фигней маетесь?
    Вам уже раз пять сказали - возьмите для начала маленький код, который работает. И начинайте добавлять остальное небольшими порциями. Добавили 10 строчек, скомпилировали, проверили. Работает? - добавляйте дальше. Как перестало работать - разбирайтесь, что вы такое в последних строчках добавили, что все рухнуло.

    А если вы постоянно приходите с новыми "портянками" кода - обьяснение напрашивается одно - вы в этих строчках нифига не понимаете и можете только тупо копировать целые скетчи. В таком разе вам никто не поможет, тут один путь - учиться.
     
  2. Aleks77777

    Aleks77777 Нуб

    Спасибо. Всё шло крахом из-за неправильной инициализации датчика DS18B20. Я нашёл в интернете правильный пример и всё заработало.
    Делюсь с вами кодом(который ещё нужно дорабатывать и дорабатывать).
    Код (C++):
    #include <DallasTemperature.h>
    #include <OneWire.h>
    #include <Adafruit_Sensor.h>
    #include <Adafruit_BME280.h>
    #include <RTClib.h>
    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x27, 16, 2);
    OneWire oneWire(4);
    DallasTemperature  ds(&oneWire);
    Adafruit_BME280 bme;
    float dispTemp;
    byte dispHum;
    RTC_DS3231 rtc;
    char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    unsigned long timer;
    int Temp_pocv (ds.getTempCByIndex(0));
    int vlag = analogRead(A3);
    int vlag100 = map(vlag, 0, 1023, 0, 100);
    void setup() {
      ds.begin();
      rtc.begin();
      lcd.init();
      lcd.backlight();
      lcd.setCursor(3, 0);
      lcd.print("HELLO,ALEX");
      lcd.setCursor(4, 1);
      lcd.print("ALL GOOD");
      delay(5000);
      lcd.clear();
      bme.begin(&Wire);
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      bme.setSampling(Adafruit_BME280::MODE_FORCED,
                      Adafruit_BME280::SAMPLING_X1, // temperature
                      Adafruit_BME280::SAMPLING_X1, // pressure
                      Adafruit_BME280::SAMPLING_X1, // humidity
                      Adafruit_BME280::FILTER_OFF   );
    }

    void loop()
    {
      bme.takeForcedMeasurement();
      dispTemp = bme.readTemperature();
      dispHum = bme.readHumidity();
      lcd.setCursor(0, 0);
      lcd.print("BO3D");
      lcd.setCursor(5, 0);
      lcd.print(String(dispTemp, 1));
      lcd.write(223);
      lcd.setCursor(11, 0);
      lcd.print(String(dispHum) + "% ");
      lcd.setCursor(0, 1);
      lcd.print("POCV");
      lcd.setCursor(5, 1);
      ds.requestTemperatures();
      lcd.print (String(ds.getTempCByIndex(0), 1));
      lcd.write(223);
      lcd.setCursor(11, 1);
      lcd.print(String (map(analogRead(A3), 0, 1023, 0, 100))+ "%");
      delay(1000);
      if (digitalRead(10) == LOW) {
        lcd.clear();
        lcd.setCursor(0, 0);
        DateTime now = rtc.now();
        lcd.print(now.hour(), DEC);
        lcd.print(':');
        lcd.print(now.minute(), DEC);
        lcd.setCursor(0, 1);
        lcd.print(now.day(), DEC);
        lcd.print('/');
        lcd.print(now.month(), DEC);
        lcd.print('/');
        lcd.print(now.year(), DEC);
        lcd.setCursor(6, 0);
        lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);
        delay(10000);
        lcd.clear();
    }
    }
    Проблема решена.