ಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)

ಈ ಸೈಟ್‌ನಲ್ಲಿ ಪ್ರಾರಂಭಿಸಿ ಲಿಂಕ್.
ಸ್ಟಾರ್ಟರ್ ಅನ್ನು ಆನ್ ಮಾಡುವ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಹಿಂಪಡೆಯಲು ಅತ್ಯಂತ ಅನುಕೂಲಕರವಾದ ಆಯ್ಕೆಯು PC817 ಆಪ್ಟೋಕಪ್ಲರ್ನೊಂದಿಗೆ ಆಯ್ಕೆಯಾಗಿದೆ. ಸ್ಕೀಮ್ಯಾಟಿಕ್ ರೇಖಾಚಿತ್ರಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)ಬೋರ್ಡ್‌ಗಳು ಮೂರು ಒಂದೇ ಸರ್ಕ್ಯೂಟ್‌ಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆ, ಎಲ್ಲವನ್ನೂ ಎಬಿಎಸ್ ಪ್ಲಾಸ್ಟಿಕ್ ಪೆಟ್ಟಿಗೆಗಳಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಗಾತ್ರ 100x100 ಮಿಮೀ. ಆಪ್ಟೋಕಪ್ಲರ್‌ಗಳ ಫೋಟೋಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ) ಸೆಮಿಕಂಡಕ್ಟರ್ ಕವಾಟಗಳೊಂದಿಗೆ ಆರಂಭಿಕ ಸಾಧನಗಳಿಗೆ ಸಂಪರ್ಕಿಸಿದಾಗ, PC817 ಅನ್ನು ತೆರೆಯಲು ಅವುಗಳ ಸೋರಿಕೆ ಪ್ರವಾಹವು ಸಾಕಾಗುತ್ತದೆ ಮತ್ತು ಕೌಂಟರ್ ತಪ್ಪಾಗಿ ಪ್ರಚೋದಿಸುತ್ತದೆ. ಅಂತಹ ಪರಿಸ್ಥಿತಿಯನ್ನು ಹೊರಗಿಡಲು ಆಪ್ಟೋಕಪ್ಲರ್ ಎಲ್ಇಡಿ ಮತ್ತು ಆಪರೇಷನ್ ಸೂಚನೆ ಎಲ್ಇಡಿಯ ಸರ್ಕ್ಯೂಟ್ಗೆ ಸರಣಿಯಲ್ಲಿ ಇನ್ನೊಂದನ್ನು ಸೇರಿಸಲಾಗುತ್ತದೆ. ಇದನ್ನು ಮಾಡಲು, ಜಂಪರ್ J1 ಅನ್ನು ತೆರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚುವರಿ LED LED1 ಅನ್ನು ಬೆಸುಗೆ ಹಾಕಲಾಗುತ್ತದೆ.
ಸ್ವೀಕರಿಸುವ ಭಾಗವನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ ಬದಿ 1ಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)ಬದಿ 2ಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)ಡೆವಲಪ್‌ಮೆಂಟ್ ಬೋರ್ಡ್ ಅನ್ನು ARDUINO MEGA 2560 ಗೆ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ. ಇದಕ್ಕಾಗಿ, ಡಬಲ್-ರೋ ಕನೆಕ್ಟರ್ ಅನ್ನು ಕೊನೆಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ. ನಿರೋಧಕ ಟಚ್‌ಸ್ಕ್ರೀನ್ ಮತ್ತು ತಾಪಮಾನ ಸಂವೇದಕವನ್ನು ಹೊಂದಿರುವ 240x400 ರೆಸಲ್ಯೂಶನ್ ಹೊಂದಿರುವ ಪರದೆಯನ್ನು ಮಾಹಿತಿ ಪ್ರದರ್ಶನ ಸಾಧನವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. HX8352B.ಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ) ಇದಲ್ಲದೆ, ಸ್ಕ್ರೀನ್ ಬೋರ್ಡ್‌ನಲ್ಲಿರುವ ICSP ಗೆ ಕನೆಕ್ಟರ್ ಅನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ ಮತ್ತು ಮೈಕ್ರೋ SD ಸ್ಲಾಟ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. SPI ಬಸ್‌ನಲ್ಲಿನ ಸಂಘರ್ಷದಿಂದಾಗಿ "ಸ್ಥಳೀಯ" SD ಸಾಕೆಟ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ ಎಂಬುದು ಸತ್ಯ. ಫ್ಲ್ಯಾಶ್ ಕಾರ್ಡ್‌ಗಾಗಿ, ಪ್ರತ್ಯೇಕ ಕಾರ್ಡ್ ರೀಡರ್ ಅನ್ನು ಬಳಸಲಾಯಿತು, ಇದರಲ್ಲಿ 3,3V ಸ್ಟೇಬಿಲೈಸರ್ ಮತ್ತು ಮೂರು ಔಟ್‌ಪುಟ್ ಸ್ಟೇಟ್ಸ್ 74LVS125A ಹೊಂದಿರುವ ಬಫರ್ ಚಿಪ್ ಸೇರಿದೆ. ಇಲ್ಲಿಯೇ ಕುಂಟೆ ನನಗಾಗಿ ಕಾಯುತ್ತಿತ್ತು. ಮೂರು-ರಾಜ್ಯ ಬಫರ್, ಆದರೆ E01-ML01DP5 ಅಥವಾ ಕಾರ್ಡ್ ರೀಡರ್ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಲೈಬ್ರರಿ ಕಾಮೆಂಟ್‌ಗಳಲ್ಲಿ, SdFat ಇತರ ಸಾಧನಗಳೊಂದಿಗೆ ಅಸಾಮರಸ್ಯದ ಬಗ್ಗೆ ಎಚ್ಚರಿಕೆಯನ್ನು ಕಂಡಿತು. TXS0108E ನಲ್ಲಿನ ಮಟ್ಟದ ಪರಿವರ್ತಕವನ್ನು ತೆಗೆದುಹಾಕಲಾಗಿದೆ ಮತ್ತು ಜಿಗಿತಗಾರರೊಂದಿಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ, ಏಕೆಂದರೆ E01-ML01DP5 5V ಸಂಕೇತಗಳಿಗೆ ಸಹಿಷ್ಣುವಾಗಿದೆ - ಇದು ಸಹಾಯ ಮಾಡಲಿಲ್ಲ. ಆಸಿಲ್ಲೋಸ್ಕೋಪ್ ಬಳಸಿ, ಕಾರ್ಡ್ ರೀಡರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿದಾಗ MISO ಲೈನ್‌ನಲ್ಲಿ ಸಿಗ್ನಲ್ ನಷ್ಟವನ್ನು ಕಂಡುಹಿಡಿಯಲಾಯಿತು. ಎಚ್ಚರಿಕೆಯಿಂದ ಪರೀಕ್ಷಿಸಿದ ನಂತರ, 4LVS74A ಯ OE 125 ಚಾನಲ್‌ಗಳ ಸಕ್ರಿಯಗೊಳಿಸುವ ಸಂಕೇತಗಳ ಒಳಹರಿವು ಸಾಮಾನ್ಯ ತಂತಿಗೆ ಸರಳವಾಗಿ ಬೆಸುಗೆ ಹಾಕಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಯಾವುದೇ ಮೂರನೇ ಸ್ಥಿತಿಯ ಕುರಿತು ಯಾವುದೇ ಮಾತುಕತೆ ಸಾಧ್ಯವಿಲ್ಲ ಎಂದು ಕಂಡುಬಂದಿದೆ. ಸಿಗ್ನಲ್ ಲೈನ್‌ಗಳೊಂದಿಗೆ ಸರಣಿಯಲ್ಲಿ ಸಂಪರ್ಕಗೊಂಡಿರುವ 5 KΩ ರೆಸಿಸ್ಟರ್‌ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಬಫರ್ ಚಿಪ್ ಅನ್ನು 3.3V ನಿಂದ 3,3V ವರೆಗೆ ಪ್ರಾಚೀನ ಮಟ್ಟದ ಪರಿವರ್ತಕವಾಗಿ ಬಳಸಲಾಯಿತು. MISO ಲೈನ್ ಹೊರತುಪಡಿಸಿ. ಅದರ ಔಟ್ಪುಟ್ ಬಾಟಮ್ ಸ್ವಿಚ್ ಬಹುಶಃ ನೆಲದ ಮಟ್ಟಕ್ಕೆ ಸಂಕೇತಗಳನ್ನು ಆಕರ್ಷಿಸಿತು. MISO ಲೈನ್‌ನ ಸಕ್ರಿಯಗೊಳಿಸುವ ಸಂಕೇತವು ಪಿನ್ 13 ಎಂದು ನಿರ್ಧರಿಸಿದ ನಂತರ, ಅದನ್ನು ಟ್ರ್ಯಾಕ್‌ನಿಂದ ಹರಿದು ಹಾಕಲಾಯಿತು ಮತ್ತುಬೆಸುಗೆ ಹಾಕಲಾಗಿದೆಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)9LVS74A CS ಸಾಧನದ ನಡುವೆ ಇನ್‌ಪುಟ್ ಪಿನ್ (125) ಮತ್ತು ಟರ್ಮಿನೇಷನ್ ರೆಸಿಸ್ಟರ್ ಆಯ್ಕೆಮಾಡಿ. ಈಗ, ಮೆಮೊರಿ ಕಾರ್ಡ್‌ಗೆ ಯಾವುದೇ ಪ್ರವೇಶವಿಲ್ಲದಿದ್ದರೆ, MISO ಬಫರ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಇನ್ನೊಂದು ಸಾಧನದ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಮಧ್ಯಪ್ರವೇಶಿಸುವುದಿಲ್ಲ.ಅಭಿವೃದ್ಧಿ ಮಂಡಳಿಯ ರೇಖಾಚಿತ್ರಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ರಿಸೀವರ್ಸ್ಥಳೀಯ ಸ್ವಾಯತ್ತ ಡೇಟಾ ಸ್ವಾಧೀನ ವ್ಯವಸ್ಥೆ (ಮುಂದುವರಿದಿದೆ)ಗಡಿಯಾರವನ್ನು ಸಂಪರ್ಕಿಸಲು DS3231 ಸಾಫ್ಟ್‌ವೇರ್ I2C ಬಸ್ (TWI) ಅನ್ನು ಬಳಸುತ್ತದೆ.
Arduino IDE ಪ್ರೋಗ್ರಾಂ// ಪ್ರಮುಖ: Adafruit_TFTLCD ಲೈಬ್ರರಿ ನಿರ್ದಿಷ್ಟವಾಗಿ ಇರಬೇಕು
// TFT ಶೀಲ್ಡ್ ಅಥವಾ ಬ್ರೇಕೌಟ್ ಬೋರ್ಡ್‌ಗಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ.
// ಸೆಟಪ್‌ಗಾಗಿ Adafruit_TFTLCD.h ನಲ್ಲಿ ಸಂಬಂಧಿತ ಕಾಮೆಂಟ್‌ಗಳನ್ನು ನೋಡಿ.
//ಓಪನ್-ಸ್ಮಾರ್ಟ್ ತಂಡ ಮತ್ತು ಕ್ಯಾಟಲೆಕ್ಸ್ ತಂಡದಿಂದ
//[ಇಮೇಲ್ ರಕ್ಷಿಸಲಾಗಿದೆ]
//ಅಂಗಡಿ: dx.com
// open-smart.aliexpress.com/store/1199788
//ಡೆಮೊ ಕಾರ್ಯ: ಗ್ರಾಫಿಕ್ಸ್, ಅಕ್ಷರಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿ
//Arduino IDE: 1.6.5
// ಬೋರ್ಡ್: Arduino UNO R3, Arduino Mega2560, Arduino ಲಿಯೊನಾರ್ಡೊ

// ಬೋರ್ಡ್: ಓಪನ್-ಸ್ಮಾರ್ಟ್ UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2ಇಂಚಿನ TFT:
// www.aliexpress.com/store/product/3-2-TFT-LCD-Display-module-Touch-Screen-Shield-board-onboard-temperature-sensor-w-Touch-Pen/1199788_32755473754.html?spm=2114.12010615.0.0.bXDdc3
//ಓಪನ್-ಸ್ಮಾರ್ಟ್ UNO R3 5V / 3.3V:
// www.aliexpress.com/store/product/OPEN-SMART-5V-3-3V-Compatible-UNO-R3-CH340G-ATMEGA328P-Development-Board-with-USB-Cable-for/1199788_32758607490.html?spm=2114.12010615.0.0.ckMTaN

#ಸೇರಿಸು // ಕೋರ್ ಗ್ರಾಫಿಕ್ಸ್ ಲೈಬ್ರರಿ
//#ಸೇರಿಸು // ಹಾರ್ಡ್‌ವೇರ್-ನಿರ್ದಿಷ್ಟ ಗ್ರಂಥಾಲಯ
#ಸೇರಿಸು
MCUFRIEND_kbv tft;
#"SdFat.h" ಅನ್ನು ಸೇರಿಸಿ // SdFat ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿ
SdFat SD;
SdFile ಫೈಲ್;
ನನ್ನ ಫೈಲ್ ಅನ್ನು ಫೈಲ್ ಮಾಡಿ;
#SD_CS_PIN SS ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ

#ಸೇರಿಸು // SPI ಬಸ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಲೈಬ್ರರಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ
#ಸೇರಿಸು // RF24 ಲೈಬ್ರರಿಯಿಂದ ಸೆಟ್ಟಿಂಗ್‌ಗಳ ಫೈಲ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ
#ಸೇರಿಸು // nRF24L24+ ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಲೈಬ್ರರಿಯನ್ನು ಸಂಪರ್ಕಿಸಿ
RF24 ರೇಡಿಯೋ(47, 49);

#ಸೇರಿಸು

DS3231 rtc(27, 25);
ಸಮಯ ಟಿ;

uint16_t r = 6000;
uint32_t k = 0;

ಬಾಷ್ಪಶೀಲ ಸಹಿ ಮಾಡದ ದೀರ್ಘ ಡೇಟಾ;
ಫ್ಲೋಟ್ leb_1;
ಫ್ಲೋಟ್ leb_2;
ಫ್ಲೋಟ್ leb_3;
ಫ್ಲೋಟ್ leb_4;

uint8_t ಪೈಪ್;
ಇಂಟ್ ಆರ್ಸಿ = 0;

uint8_t time_sec_prev;
uint8_t time_day_prev;

//************************************************ *******************//
// ನೀವು OPEN-SMART TFT ಬ್ರೇಕ್ಔಟ್ ಬೋರ್ಡ್ ಅನ್ನು ಬಳಸಿದರೆ //
// 5V-3.3V ಮಟ್ಟದ ಪರಿವರ್ತಿಸುವ ಸರ್ಕ್ಯೂಟ್ ಅನ್ನು ಸೇರಿಸಲು ನಿಮ್ಮನ್ನು ಶಿಫಾರಸು ಮಾಡಿ.
// ಸಹಜವಾಗಿ ನೀವು 5V/3.3V ಪವರ್ ಸ್ವಿಚ್‌ನೊಂದಿಗೆ OPEN-SMART UNO ಬ್ಲಾಕ್ ಆವೃತ್ತಿಯನ್ನು ಬಳಸಬಹುದು,
// ನೀವು ಕೇವಲ 3.3V ಗೆ ಬದಲಾಯಿಸಬೇಕಾಗಿದೆ.
// LCD ಗಾಗಿ ನಿಯಂತ್ರಣ ಪಿನ್‌ಗಳನ್ನು ಯಾವುದೇ ಡಿಜಿಟಲ್‌ಗೆ ನಿಯೋಜಿಸಬಹುದು ಅಥವಾ
// ಅನಲಾಗ್ ಪಿನ್‌ಗಳು...ಆದರೆ ಇದು ನಮಗೆ ಅನುಮತಿಸಿದಂತೆ ನಾವು ಅನಲಾಗ್ ಪಿನ್‌ಗಳನ್ನು ಬಳಸುತ್ತೇವೆ
//—————————————-|
// TFT ಬ್ರೇಕ್ಔಟ್ - ಆರ್ಡುನೊ UNO / Mega2560 / OPEN-SMART UNO ಕಪ್ಪು
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - ಮರುಹೊಂದಿಸಿ
// ಎಲ್ಇಡಿ - ಜಿಎನ್ಡಿ
// DB0 - 8
// DB1 - 9
// DB2 - 10
// DB3 - 11
// DB4 - 4
// DB5 - 13
// DB6 - 6
// DB7 - 7

// ಕೆಲವು ಸಾಮಾನ್ಯ 16-ಬಿಟ್ ಬಣ್ಣ ಮೌಲ್ಯಗಳಿಗೆ ಮಾನವ-ಓದಬಲ್ಲ ಹೆಸರುಗಳನ್ನು ನಿಯೋಜಿಸಿ:
#BLACK 0x0000 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#ನೀಲಿ 0x001F ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#RED 0xF800 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#ಹಸಿರು 0x07E0 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#CYAN 0x07FF ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#MAGENTA 0xF81F ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#YELLOW 0xFFE0 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#WHITE 0xFFFF ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#GRAY 0x8C51 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ
#GRAYD 0x39E7 ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ

//Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// ಶೀಲ್ಡ್ ಅನ್ನು ಬಳಸುತ್ತಿದ್ದರೆ, ಎಲ್ಲಾ ನಿಯಂತ್ರಣ ಮತ್ತು ಡೇಟಾ ಲೈನ್‌ಗಳನ್ನು ನಿವಾರಿಸಲಾಗಿದೆ, ಮತ್ತು
// ಸರಳವಾದ ಘೋಷಣೆಯನ್ನು ಐಚ್ಛಿಕವಾಗಿ ಬಳಸಬಹುದು:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;

ಸ್ಟ್ರಿಂಗ್ ಡೇಟಾಸ್ಟ್ರಿಂಗ್;
//ಸ್ಟ್ರಿಂಗ್ numfileMonth = "1.txt";
ಚಾರ್ perv [] = {"2.txt"};
//ಸ್ಟ್ರಿಂಗ್ *numfileMonth="1.txt" (sizeof (numfileMonth));
//////////////////////////////////////////////////// ////////////////

ಅನೂರ್ಜಿತ ಸೆಟಪ್ (ಅನೂರ್ಜಿತ) {

rtc.begin();

// ಸಮಯವನ್ನು ಹೊಂದಿಸಲು, ಅಗತ್ಯ ಸಾಲುಗಳನ್ನು ಅನ್‌ಕಾಮೆಂಟ್ ಮಾಡಿ
// rtc.setDOW(6); // ವಾರದ ದಿನ
// rtc.setTime(22, 04, 0); // ಸಮಯ, 24 ಗಂಟೆಗಳ ರೂಪದಲ್ಲಿ.
// rtc.setDate(4, 5, 2019); // ದಿನಾಂಕ, ಅಕ್ಟೋಬರ್ 29, 2018

ಸೀರಿಯಲ್.ಬೆಗಿನ್ (2000000);
//////// ಪರದೆಯ ಪ್ರಾರಂಭ
tft.begin(0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(ನಿಜ);
//////////////////// ಹೆಸರುಗಳ ಔಟ್‌ಪುಟ್, ಸಲಕರಣೆ ಪರಿಕರಗಳು, ಸಂಸ್ಥೆಯ ಹೆಸರು
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor(8, 0);
tft.println("ಡೆವಲಪರ್‌ಗಳು ಮತ್ತು ಬಿಲ್ಡ್");
tft.setCursor(30, 20);
tft.print (utf8rus("ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ವಿ.ವಿ." ));
tft.setCursor(40, 40);
tft.print (utf8rus("ಟರ್ನರ್ I.I." ));
ವಿಳಂಬ (2000);

radio.begin(); // nRF24L01+ ಕೆಲಸವನ್ನು ಪ್ರಾರಂಭಿಸಿ
radio.setChannel(120); // ಡೇಟಾ ಸ್ವಾಗತ ಚಾನಲ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ (0 ರಿಂದ 127 ವರೆಗೆ)
radio.setDataRate(RF24_250KBPS); // ಡೇಟಾ ವರ್ಗಾವಣೆ ದರವನ್ನು ಸೂಚಿಸಿ (RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS - 1Mbit/s
radio.setPALevel(RF24_PA_MAX); // ಟ್ರಾನ್ಸ್‌ಮಿಟರ್ ಪವರ್ ಅನ್ನು ಸೂಚಿಸಿ (RF24_PA_MIN=-18dBm, RF24_PA_LOW=-12dBm, RF24_PA_HIGH=-6dBm, RF24_PA_MAX=0dBm)
radio.openReadingPipe(1, 0xAABBCCDD11LL); // ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸಲು 1 ಟ್ರಾನ್ಸ್‌ಮಿಟರ್ 1xAABBCCDD0 ನ ಗುರುತಿಸುವಿಕೆಯೊಂದಿಗೆ 11 ಪೈಪ್ ತೆರೆಯಿರಿ
// ಡೇಟಾವನ್ನು ಸ್ವೀಕರಿಸಲು ಟ್ರಾನ್ಸ್‌ಮಿಟರ್ ಐಡಿ 2xAABBCCDD2 ನೊಂದಿಗೆ ಪೈಪ್ 0 ಅನ್ನು ತೆರೆಯಿರಿ
radio.startListening(); // ರಿಸೀವರ್ ಅನ್ನು ಆನ್ ಮಾಡಿ, ತೆರೆದ ಕೊಳವೆಗಳನ್ನು ಕೇಳಲು ಪ್ರಾರಂಭಿಸಿ
// radio.stopListening();
////////ಸೇವಾ ಮಾಹಿತಿಯ ಔಟ್‌ಪುಟ್
tft.fillScreen(BLACK);
tft.setCursor(8, 0);
tft.setTextSize(1);
////////SD ಕಾರ್ಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಪ್ರಾರಂಭಿಸಿ
Serial.println("ಆರಂಭಿಕ SD ಕಾರ್ಡ್");
tft.println("ಆರಂಭಿಕ SD ಕಾರ್ಡ್");
tft.setCursor(8, 10);
////////ಕಾರ್ಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲಾಗುತ್ತಿದೆ
ಒಂದು ವೇಳೆ (!SD.begin(SD_CS_PIN)) {
Serial.println("ಆರಂಭಿಕ ವಿಫಲವಾಗಿದೆ!");
tft.fillRect(8, 10, 85, 7, RED);
tft.setTextColor(BLACK);
tft.println("ಆರಂಭಿಕ ವಿಫಲವಾಗಿದೆ!");
ಹಿಂತಿರುಗಿ;
}
tft.setTextColor(WHITE);
Serial.println("ಪ್ರಾರಂಭವನ್ನು ಮಾಡಲಾಗಿದೆ");
tft.println("ಪ್ರಾರಂಭವನ್ನು ಮಾಡಲಾಗಿದೆ");
ವಿಳಂಬ (2000);
//////// ಸಮಯ ಮತ್ತು ದಿನಾಂಕವನ್ನು ಓದುವುದು ಮತ್ತು ಅವುಗಳನ್ನು ವೇರಿಯೇಬಲ್‌ಗಳಿಗೆ ನಿಯೋಜಿಸುವುದು
t = rtc.getTime();
time_sec_prev = t.sec;
time_day_prev = t.date;
////////ಪ್ರದರ್ಶನಕ್ಕಾಗಿ ದಿನಾಂಕವನ್ನು ಬದಲಾಯಿಸುವವರೆಗೆ ಕಾಯದಂತೆ ಬಲವಂತವಾಗಿ ದಿನಾಂಕವನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡಿ
tft.setCursor(180, 0); // ಕರ್ಸರ್ ಸ್ಥಾನವನ್ನು ಹೊಂದಿಸುವುದು
tft.fillRect(178, 0, 65, 7, GRAY); // ಸಮಯ ಔಟ್‌ಪುಟ್ ಪ್ರದೇಶವನ್ನು ತೆರವುಗೊಳಿಸುವುದು
tft.setTextSize(1);
tft.print(rtc.getDateStr());
////////ನಿಯಂತ್ರಣ ವಸ್ತುಗಳ ಹೆಸರನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡಿ
tft.setTextSize(2);
tft.setCursor(60, 25);
tft.println (utf8rus("Winches I"));
//////// ಲಾಗ್ ಫೈಲ್ ಅನ್ನು ರಚಿಸುವುದು ಮತ್ತು ರಚನೆಯ ಪ್ರಯತ್ನದ ಫಲಿತಾಂಶವನ್ನು ಔಟ್ಪುಟ್ ಮಾಡುವುದು
tft.setTextSize(1);
tft.setCursor(130, 10); // ಲಾಗ್ ಫೈಲ್ 2.txt ಅನ್ನು ರಚಿಸಿದರೆ, ನಂತರ ಫೈಲ್‌ಗೆ ಬರೆಯುವುದು ಮುಂದುವರಿಯುತ್ತದೆ
(SD. ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ(perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} ಬೇರೆ {
myFile = SD.open(perv, FILE_WRITE); // ಫೈಲ್ 2.txt ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}

ಅನೂರ್ಜಿತ ಲೂಪ್ (ಅನೂರ್ಜಿತ) {
//////// COM ಪೋರ್ಟ್ ಮಾನಿಟರ್‌ಗೆ ಲಾಗ್ ಅನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡಲು ವಿನಂತಿಯ ಅಸ್ತಿತ್ವವನ್ನು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ
ಒಂದು ವೇಳೆ (Serial.available() > 0) {
ವೇಳೆ (1 == Serial.read());
////////ಮತ್ತು "1" ಅನ್ನು ಸ್ವೀಕರಿಸಿದರೆ, ನಂತರ ಔಟ್ಪುಟ್
ಫೈಲ್ myFile = SD.open(perv);
// ಫೈಲ್ ಲಭ್ಯವಿದ್ದರೆ, ಅದಕ್ಕೆ ಬರೆಯಿರಿ:
ವೇಳೆ (ನನ್ನ ಫೈಲ್) {
ಯಾವಾಗ (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
ಬೇರೆ {
Serial.println(".txt ತೆರೆಯುವಲ್ಲಿ ದೋಷ");
}
}
////////ಓದುವ ಸಮಯ
t = rtc.getTime();
tft.setTextColor(WHITE);
//////// ಸಮಯ ಬದಲಾಗಿದ್ದರೆ, ಹೊಸ ಗಡಿಯಾರ ವಾಚನಗೋಷ್ಠಿಯನ್ನು ಪ್ರದರ್ಶಿಸಿ
ವೇಳೆ (time_sec_prev != t.sec) {
tft.setCursor(120, 0); // ಕರ್ಸರ್ ಸ್ಥಾನವನ್ನು ಹೊಂದಿಸುವುದು
tft.fillRect(118, 0, 50, 7, GRAY); // ಸಮಯ ಔಟ್‌ಪುಟ್ ಪ್ರದೇಶವನ್ನು ತೆರವುಗೊಳಿಸುವುದು
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // ಔಟ್ಪುಟ್ ಗಡಿಯಾರ ವಾಚನಗೋಷ್ಠಿಗಳು
time_sec_prev = t.sec;
}
////////ದಿನಾಂಕ ಬದಲಾಗಿದ್ದರೆ, ಹೊಸ ದಿನಾಂಕವನ್ನು ಪ್ರದರ್ಶಿಸಿ
ವೇಳೆ (time_day_prev != t.date) {
tft.setCursor(180, 0); // ಕರ್ಸರ್ ಸ್ಥಾನವನ್ನು ಹೊಂದಿಸುವುದು
tft.fillRect(178, 0, 65, 7, GRAY); // ದಿನಾಂಕ ಪ್ರದರ್ಶನ ಪ್ರದೇಶವನ್ನು ತೆರವುಗೊಳಿಸಿ
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // ದಿನಾಂಕ ವಾಚನಗೋಷ್ಠಿಯನ್ನು ಪ್ರದರ್ಶಿಸಿ
time_day_prev = t.date;
}
//////// ರೇಡಿಯೊ ಸ್ವಾಗತ ಲಭ್ಯವಿದ್ದರೆ, ನಂತರ
ಒಂದು ವೇಳೆ (radio.available(&pipe)) {
//////// ಸ್ವೀಕರಿಸುವ ಬಫರ್ ತುಂಬಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲಾಗುತ್ತಿದೆ,
radio.read(&data, sizeof(data));
//////// ಅಗತ್ಯವಿರುವ ಟ್ರಾನ್ಸ್‌ಮಿಟರ್ ವಿಳಾಸ ಲಭ್ಯವಿದ್ದರೆ, ನಂತರ
ಒಂದು ವೇಳೆ (ಪೈಪ್ == 1) {
//////// ಸೊನ್ನೆಗಳ ಸಿಂಕ್ರೊನೈಸಿಂಗ್ ಅನುಕ್ರಮವನ್ನು ನಿರ್ಧರಿಸಲು ನಾವು ಕಾಯುತ್ತಿದ್ದೇವೆ
//ಡೇಟಾ ಬ್ಲಾಕ್‌ನ ಆರಂಭ
ವೇಳೆ (ಡೇಟಾ == 0000) {
ಆರ್ಸಿ = 0;
} ಬೇರೆ {
ಆರ್ಸಿ ++;
}
////////ಕೌಂಟರ್ ಮೌಲ್ಯಗಳನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡುವುದು ಮತ್ತು ಅವುಗಳನ್ನು ಒಂದು ಗಂಟೆಯ 10 ಮತ್ತು 100 ರಲ್ಲಿ ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು
ಒಂದು ವೇಳೆ (ಆರ್ಸಿ == 1) {
leb_1 = ಡೇಟಾ / 3600.0;
}

ಒಂದು ವೇಳೆ (ಆರ್ಸಿ == 2) {
leb_2 = ಡೇಟಾ / 3600.0;
}

ಒಂದು ವೇಳೆ (ಆರ್ಸಿ == 3) {
leb_3 = ಡೇಟಾ / 3600.0;
}

ಒಂದು ವೇಳೆ (ಆರ್ಸಿ == 4) {
leb_4 = ಡೇಟಾ / 3600.0;
}
}
}
r++;
k++; // ಕೇವಲ ಕೌಂಟರ್
//////// ನಿರ್ದಿಷ್ಟ ಆವರ್ತಕತೆಯೊಂದಿಗೆ ಡೇಟಾ ನವೀಕರಣ
ವೇಳೆ (ಆರ್ >= 6500) {
tft.setTextSize(2);
tft.fillRect(0, 41, 180, 64, GRAYD);
Serial.println("ಲೆಬೆಡ್ಕಿ I");
tft.setCursor(0, 41);
tft.println(leb_1);
Serial.println(leb_1);
tft.println(leb_2);
Serial.println(leb_2);
tft.println(leb_3);
Serial.println(leb_3);
tft.println(leb_4);
Serial.println(leb_4);
Serial.println(k);
ಆರ್ = 0;
}
////////ಪ್ರತಿ 10 ನಿಮಿಷಗಳಿಗೊಮ್ಮೆ SD ನಲ್ಲಿ ಲಾಗ್‌ಗೆ ಡೇಟಾವನ್ನು ಬರೆಯಿರಿ.
ವೇಳೆ ((t.min % 10 == 0) && (t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(BLACK);
//////// .csv ಫಾರ್ಮ್ಯಾಟ್‌ನಲ್ಲಿ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ರಚಿಸಲಾಗುತ್ತಿದೆ
ಸ್ಟ್ರಿಂಗ್ ಡೇಟಾಸ್ಟ್ರಿಂಗ್ = ಸ್ಟ್ರಿಂಗ್ (rtc.getDateStr()) + ", "+(rtc.getTimeStr()) + ", " + (leb_1) + ", " + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
////////ಫೈಲ್‌ಗೆ ಬರೆಯಿರಿ ಮತ್ತು ಬರವಣಿಗೆಯ ಪ್ರಕ್ರಿಯೆಯ ಫಲಿತಾಂಶಗಳನ್ನು ಔಟ್‌ಪುಟ್ ಮಾಡಿ
myFile = SD.open(perv, FILE_WRITE); // "2.txt" ಹೆಸರಿನ ಯಾವುದೇ ಫೈಲ್ ಇಲ್ಲದಿದ್ದರೆ, ಅದನ್ನು ರಚಿಸಲಾಗುತ್ತದೆ.
ವೇಳೆ (ನನ್ನ ಫೈಲ್) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198, 8, 42, 10, GREEN);
tft.println("SD OK");
Serial.println("SD OK");
ವಿಳಂಬ (900); // ವಿಳಂಬ, ಇಲ್ಲದಿದ್ದರೆ ಸೆಕೆಂಡ್ ಹಾದುಹೋಗುವವರೆಗೆ 13 ಒಂದೇ ರೀತಿಯ ಓದುವಿಕೆಗಳನ್ನು ದಾಖಲಿಸುತ್ತದೆ
} ಬೇರೆ {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ERR");
Serial.println("SD ERR");
}
}
}ಅಕ್ಷರ ಪರಿವರ್ತನೆ ಕಾರ್ಯಕ್ರಮ/* UTF-8 ನಿಂದ Windows-1251 ಗೆ ರಷ್ಯಾದ ಫಾಂಟ್‌ಗಳನ್ನು ಮರುಸಂಗ್ರಹಿಸಿ */

ಸ್ಟ್ರಿಂಗ್ utf8rus (ಸ್ಟ್ರಿಂಗ್ ಮೂಲ)
{
ಇಂಟ್ i,k;
ಸ್ಟ್ರಿಂಗ್ ಗುರಿ;
ಸಹಿ ಮಾಡದ ಚಾರ್ ಎನ್;
ಚಾರ್ ಮೀ[2] = { '0', ' ' };

k = source.length(); ನಾನು = 0;

ಹಾಗೆಯೇ (i < ಕೆ) {
n = ಮೂಲ[i]; i++;

ವೇಳೆ (n >= 0xC0) {
ಸ್ವಿಚ್ (ಎನ್) {
ಪ್ರಕರಣ 0xD0: {
n = ಮೂಲ[i]; i++;
ವೇಳೆ (n == 0x81) {n = 0xA8; ಬ್ರೇಕ್; }
ವೇಳೆ (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
ಮುರಿಯಲು;
}
ಪ್ರಕರಣ 0xD1: {
n = ಮೂಲ[i]; i++;
ವೇಳೆ (n == 0x91) {n = 0xB8; ಬ್ರೇಕ್; }
ವೇಳೆ (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
ಮುರಿಯಲು;
}
}
}
m[0] = n; ಗುರಿ = ಗುರಿ + ಸ್ಟ್ರಿಂಗ್(m);
}
ಹಿಂತಿರುಗುವ ಗುರಿ;
}Adafruit_GFX ಲೈಬ್ರರಿಯನ್ನು ಬಳಸಿಕೊಂಡು ಸಿರಿಲಿಕ್ ಔಟ್‌ಪುಟ್‌ಗಾಗಿ ಅಕ್ಷರ ಟ್ರಾನ್ಸ್‌ಕೋಡಿಂಗ್ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂನೊಂದಿಗೆ ಅದೇ ಫೋಲ್ಡರ್‌ನಲ್ಲಿ ಇರಿಸಲಾಗಿದೆ. ನೀವು Adafruit_GFX ನಲ್ಲಿ glcdfont.c ಫೈಲ್ ಅನ್ನು ಬೇರೆ ಫಾಂಟ್‌ನೊಂದಿಗೆ ಬದಲಾಯಿಸಬೇಕಾಗುತ್ತದೆ. ಇದು ಅಗತ್ಯವಿರುವ ಬದಲಿಯೊಂದಿಗೆ ಗ್ರಂಥಾಲಯ. ರಸ್ಸಿಫಿಕೇಶನ್ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಯನ್ನು ಅಂತರ್ಜಾಲದಲ್ಲಿ ಸುಲಭವಾಗಿ ಕಾಣಬಹುದು.
ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ, ಸಿಸ್ಟಮ್ ನಿರೀಕ್ಷೆಗಳಿಗೆ ತಕ್ಕಂತೆ ಬದುಕಿದೆ ಎಂದು ನಾನು ಹೇಳುತ್ತೇನೆ, ಉಪಕರಣದ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯವನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದು ಸುಲಭವಾಗಿದೆ. ಎಲ್ಲವನ್ನೂ ಬ್ರೆಡ್‌ಬೋರ್ಡ್‌ಗಳಲ್ಲಿ ಜೋಡಿಸಲಾಗಿದ್ದರೂ, ಕೆಲಸದ ಬಗ್ಗೆ ತಕ್ಷಣದ ದೂರುಗಳಿಲ್ಲ. ಮೊದಲ ಅಂಶಗಳು ಆರು ತಿಂಗಳಿಗಿಂತ ಹೆಚ್ಚು ಕಾಲ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿವೆ ಮತ್ತು ಚಳಿಗಾಲದಲ್ಲಿ ಉಳಿದುಕೊಂಡಿವೆ. ಇತ್ತೀಚಿನ ವಿನ್ಯಾಸ ಇದು ಮಾರ್ಚ್ 9 ರಿಂದ 5 ನಿಯಂತ್ರಿತ ಘಟಕಗಳಿಗೆ ಚಾಲನೆಯಲ್ಲಿದೆ ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯವನ್ನು ಅಧಿಕೃತವಾಗಿ ಬಳಸಿಕೊಂಡು ನೋಂದಾಯಿಸಲಾಗುತ್ತಿದೆ.

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ