Здравствуйте. Есть сборка Uno+Ssd1306+ds3231+bme280. Сделал часы с переключением на температуру по нажатию кнопки. Однако, видимо где-то я ошибся. Срабатывает непонятно как, то через раз, то не срабатывает. Прошу помочь с этой проблемой и с отображением незначащих нулей. И еще. Когда часы стоят спокойно, то все работает ровно, но как только подключаю пин кнопки или просто касаюсь гнезд на самой ардуино, то изображение начинает плясать.
Как это исправить?
Вот код:
Скетч прикрепил
Как это исправить?
Вот код:
C++:
#include <Wire.h> // Подключаем библиотеку Wire (стандартная)
#include <Adafruit_Sensor.h> // Подключаем библиотеку Adafruit_Sensor
#include <Adafruit_BME280.h> // Подключаем библиотеку датчика BME280
#include <Adafruit_GFX.h> // Подключаем библиотеку Adafruit_GFX
#include <Adafruit_SSD1306.h> // Подключаем библиотеку дисплея ssd1306
#include "RTClib.h"
#define KeyTemp 2
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
RTC_DS3231 RTC;
Adafruit_BME280 bme;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // инициализация дисплея
Wire.begin();
RTC.begin();
if (!bme.begin(0x76)) {
display.setCursor(0,0); // Инициализация датчика BME280
display.setTextSize(2);
display.setTextColor(WHITE);
display.println("error"); // сообщение об ошибке если датчика нет или он не работает
display.display();
while (1); // висим в бесконечном цикле
}
display.clearDisplay();
if (! RTC.begin()) {
Serial.println("RTC is NOT running!");
RTC.adjust(DateTime(F(__DATE__), F(__TIME__)));
}}
void loop() {
if (digitalRead(KeyTemp)){
display.setTextSize(2);
display.setTextColor(WHITE); // текст белый
display.setCursor(20,0); // строка 0, позиция 0
display.print(bme.readTemperature()); // температура в цельсиях
display.println(" C");
display.setCursor(12,15);
display.print(bme.readPressure()* 0.00750062); // атмосферное давление в мм ртутного столба
display.println(" mm");
// display.print(bme.readHumidity()); // влажность в %
// display.println(" %");
display.display(); // вывод изображения на дисплей
//delay(5000); // Пауза 1 секунда
display.clearDisplay(); // очистка дисплея
}
DateTime now = RTC.now();
display.setTextSize(3);
display.setTextColor(WHITE,BLACK);
display.setCursor(0,4);
display.print(now.hour(), DEC);
display.print(':');
display.print(now.minute(), DEC);
display.print(':');
display.print(now.second(), DEC);
// display.setTextSize(1);
// display.setTextColor(WHITE,BLACK);
// display.setCursor(35,22);
// display.print(now.year(), DEC);
// display.print('/');
// display.print(now.month(), DEC);
// display.print('/');
// display.print(now.day(), DEC);
display.display();
display.clearDisplay();
}
Вложения
-
3.1 KB Просмотры: 2