diff options
| author | vlapa <vlapa@ya.ru> | 2026-06-13 17:30:47 +0300 |
|---|---|---|
| committer | vlapa <vlapa@ya.ru> | 2026-06-13 17:30:47 +0300 |
| commit | 8281db33c793634252608afdd1f8b57852c9ddbd (patch) | |
| tree | 704fadba7af3f5e9eda95103e8077f19731c4242 | |
First
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | description | bin | 0 -> 60 bytes | |||
| -rw-r--r-- | platformio.ini | 28 | ||||
| -rw-r--r-- | src/main.cpp | 175 |
4 files changed, 205 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b9f3806 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.pio +.vscode diff --git a/description b/description Binary files differnew file mode 100644 index 0000000..a1aa8eb --- /dev/null +++ b/description diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..8f1122c --- /dev/null +++ b/platformio.ini @@ -0,0 +1,28 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +; [env:d1_mini] +; platform = espressif8266 +; board = d1_mini +; framework = arduino +; upload_speed = 921600 +; monitor_speed = 115200 + +[env:nanoatmega328] +platform = atmelavr +board = nanoatmega328 +framework = arduino +upload_speed = 115200 +monitor_speed = 9600 + +lib_deps = + ; arduino-libraries/NTPClient + adafruit/RTClib + adafruit/Adafruit BME280 Library
\ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..fba6581 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,175 @@ +//******************************************************************** +//* +//* Часы na LED 8s4r - DeepSeek +//* 2026.03.28 - 2026.03.29 +//* v.003 +//* +//* DEC - HEX +//* A - пусто +//* B - минус +//* C - градус +//* +//******************************************************************** +#include <Arduino.h> +#include <Wire.h> + +#include "RTClib.h" +RTC_DS3231 rtc; + +#include <Adafruit_BME280.h> +Adafruit_BME280 bme; + +uint8_t timeVis[] = {8, 3, 2, 2}; + +struct +{ + uint8_t rtc_hour = 0; + uint8_t rtc_min = 0; + uint8_t bme_temp = 0; + uint8_t bme_pres = 0; + uint8_t bme_hum = 0; +} dataOut; + +uint32_t timeOld = 0; +uint32_t timeOldSec = 0; +bool flagSec = true; +String outData = ""; + +//************************************************** +void getTime() +{ + DateTime now = rtc.now(); + + dataOut.rtc_hour = now.hour(); + dataOut.rtc_min = now.minute(); +} + +//************************************************** +void getTemp() +{ + dataOut.bme_temp = bme.readTemperature(); +} + +void getPres() +{ + dataOut.bme_pres = bme.readPressure() / 133.3224 - 700; +} + +void getHum() +{ + dataOut.bme_hum = bme.readHumidity(); +} + +//************************************************** +void setup() +{ + Serial.begin(9600); + Serial.println(); + + Wire.begin(); + + if (!rtc.begin()) + { + dataOut.rtc_hour = 0xBB; + dataOut.rtc_min = 0xBB; + } + else if (rtc.lostPower()) + { + rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); + } + // rtc.adjust(DateTime(2026, 3, 29, 1, 51, 0)); + + if (!bme.begin(0x76, &Wire)) + { + dataOut.bme_temp = 0xBB; + dataOut.bme_pres = 0xBB; + dataOut.bme_hum = 0xBB; + } + + timeOld = millis(); + timeOldSec = millis(); +} + +//************************************************** +void loop() +{ + static uint8_t countVis = 0; + outData = ""; + + switch (countVis) + { + case 0: + getTime(); + break; + + case 1: + getTemp(); + outData += "A"; + outData += dataOut.bme_temp / 10; + outData += "A"; + outData += dataOut.bme_temp % 10; + outData += "C"; + break; + + case 2: + getPres(); + outData += "A7A"; + outData += dataOut.bme_pres / 10; + outData += dataOut.bme_pres % 10; + break; + + case 3: + getHum(); + outData += "AAA"; + outData += dataOut.bme_hum / 10; + outData += dataOut.bme_hum % 10; + break; + + default: + break; + } + + if (countVis > 0) + { + Serial.println(outData); + delay(timeVis[countVis] * 1000); + } + else + { + while ((millis() - timeOld) < (timeVis[0] * 1000)) + { + if (millis() - timeOldSec >= 500) + { + outData = ""; + if (dataOut.rtc_hour < 10) + { + outData += "A"; + outData += dataOut.rtc_hour; + } + else + { + outData += dataOut.rtc_hour / 10; + outData += dataOut.rtc_hour % 10; + } + + (flagSec) ? outData += "D" : outData += "A"; + + outData += dataOut.rtc_min / 10; + outData += dataOut.rtc_min % 10; + flagSec = !flagSec; + Serial.println(outData); + timeOldSec = millis(); + } + } + } + + if (countVis < (sizeof(timeVis) - 1)) + { + countVis++; + } + else + { + countVis = 0; + timeOld = millis(); + } +}
\ No newline at end of file |
