Top.Mail.Ru
Ответы

Проблема при проверки скетча Аrduino

всем привет я решил сделать чтобы на экран выводилось время и температура и давление но при проверки скетча пишет

exit status 1

Compilation error: exit status 1

из-за чего может быть ошибка помогите кто сможет

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
#include <GyverBME280.h>
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#include <GyverOLED.h>

GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
GyverBME280 bme;
void setup() {
  Serial.begin(9600);
  delay(200);
  oled.init();        
  oled.clear();          
  
  // запуск датчика и проверка на работоспособность
  if (!bme.begin(0x76)) Serial.println("Error!");
}
void loop() {
  tmElements_t tm;
  
  oled.setScale(2);
  oled.setCursor(0, 1);
  print2digits(tm.Hour);
  oled.write(':');
  oled.setCursor(36, 1);
  print2digits(tm.Minute);
  oled.write(':');
  oled.setCursor(69, 1);
  print2digits(tm.Second);

  oled.setScale(1);
  oled.setCursor(0, 4);
  oled.print("Temperature ");
  oled.setCursor(18, 4);
  oled.print(bme.readTemperature());
  oled.setCursor(0, 5);
  oled.print("Pressure ");
  oled.setCursor(18, 5);
  oled.print(bme.readPressure() / 139.0F);
  
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    oled.write('0');
  }
  oled.print(number);
}

По дате
По Рейтингу
Аватар пользователя
Новичок
1нед

Исправленный вариант кода с добавлением чтения времени из RTC:

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
#include <GyverBME280.h>
#include <Wire.h>
#include <TimeLib.h>
#include <DS1307RTC.h>
#include <GyverOLED.h>

GyverOLED<SSD1306_128x64, OLED_NO_BUFFER> oled;
GyverBME280 bme;

void setup() {
  Serial.begin(9600);
  delay(200);
  oled.init();        
  oled.clear();          
  
  // запуск датчика и проверка на работоспособность
  if (!bme.begin(0x76)) Serial.println("Error!");
}

void loop() {
  tmElements_t tm;
  
  if (RTC.read(tm)) {  // читаем время из RTC
    oled.clear();
    oled.setScale(2);
    oled.setCursor(0, 1);
    print2digits(tm.Hour);
    oled.write(':');
    oled.setCursor(36, 1);
    print2digits(tm.Minute);
    oled.write(':');
    oled.setCursor(69, 1);
    print2digits(tm.Second);

    oled.setScale(1);
    oled.setCursor(0, 4);
    oled.print("Temperature ");
    oled.setCursor(18, 4);
    oled.print(bme.readTemperature());
    oled.setCursor(0, 5);
    oled.print("Pressure ");
    oled.setCursor(18, 5);
    oled.print(bme.readPressure() / 139.0F);
  } else {
    oled.clear();
    oled.setCursor(0, 0);
    oled.print("RTC read error");
  }
  
  delay(1000);
}

void print2digits(int number) {
  if (number >= 0 && number < 10) {
    oled.write('0');
  }
  oled.print(number);
}
Аватар пользователя
Новичок
1нед

Ваш код для Arduino с OLED-дисплеем и датчиком BME280 почти готов, но есть одна важная ошибка: переменная tm (типа tmElements_t) не инициализирована, поэтому часы не будут отображаться корректно.

Чтобы получить текущее время с модуля RTC (DS1307), нужно вызвать функцию RTC.read(tm), которая заполнит структуру tm текущим временем.