á€ááá¯ááºááœááºá
áááºáá«á
starter ááá¯ááœáá·áºááŒááºážááŸáá·áºáááºáááºáá±á¬á¡áá»ááºá¡áááºáá»á¬ážááá¯ááŒááºáááºááá°áááºá¡ááœááºá¡áááºááŒá±áá¯á¶ážááœá±ážáá»ááºááŸá¯ááŸá¬ PC817 optocoupler ááŸáá·áºááœá±ážáá»ááºá
áá¬ááŒá
áºáá²á·áááºá áááá¬ážááá·áºáá¯á¶áá¯ááºáá»á¬ážááœáẠáá°áá®áá±á¬áá¬ážáá
áºáá¯á¶ážáá¯áá«ááŸáááŒá®áž á¡áá¬á¡á¬ážáá¯á¶ážááᯠABS ááááºá
áá
áºáá±áá¹áá¬áá»á¬ážá á¡ááœááºá¡á
á¬áž 100x100 áá®áá®áá®áá¬ááœáẠáá¬ážááŸááá¬ážáá«áááºá optocouplers áá¬ááºáá¯á¶ áá
áºááá¯ááºážáá»áŸááºáá°ážáᬠá¡ááá¯á·ááŸááºáá»á¬ážááŒáá·áº á
áááºááá·áº á
ááºáá
á¹á
ááºážáá»á¬ážááŸáá·áº áá»áááºáááºáá±á¬á¡áá«á áááºážááá¯á·á ááá¯á
ááá·áºáá»áŸááºá
á®ážááŒá±á¬ááºážááẠPC817 ááá¯ááœáá·áºááẠáá¯á¶áá±á¬ááºááŒá®áž áá±á¬ááºáá¬ááẠááœá²ááŸá¬ážá
áœá¬ ááŒá
áºáá±á«áºáááºááŒá
áºáááºá áá®ááá¯á¡ááŒá±á¡áá±áá»áá¯ážááŸá¬ áááºáá¯ááºááá¯ááºáá«á
áááºáá¶áá²á·á¡ááá¯ááºážááᯠá
áá¯ááºáá¬ážáááºá ááœáẠááááœáẠááARDUINO MEGA 2560 ááŸáá·áº áá»áááºáááºáá¬ážááá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáá¯ááºá¡ááœá²á·á áááºážá¡ááœááºá á¡áá¯á¶ážááœáẠááŸá
áºáááºážáá»áááºáááºáááááá¬ááᯠá¡áá¯á¶ážááŒá¯áááºá Resolution 240x400 ááŸááá±á¬ á
ááááºááᯠáá¶ááá¯ááºáááºááŸááá±á¬ ááááœá±á·áá»ááºááŸá¬ááŒááºááŸáá·áº á¡áá°áá»áááºá¡á¬áá¯á¶áá¶áááááá¬áá«ááŸááá±á¬ ááááºážá¡áá»ááºá¡áááºááŒáááá·áºáááááá¬á¡ááŒá
Ạá¡áá¯á¶ážááŒá¯áá«áááºá HX8352B ááá¯á·á¡ááŒááºá á
ááááºáá¯ááºáá±á«áºááŸá ICSP ááá¯á·áá»áááºáááºáááááá¬ááá¯áááºááŸá¬ážááŒá®áž micro SD á¡áá±á«ááºááá¯á¡áá¯á¶ážáááŒá¯áá«á á¡ááŸááºááŸá¬ SPI áááºá
áºáá¬ážáá±á«áºááœáẠáááááá¹áááŒá±á¬áá·áº "áá¬áá" SD áá±á«ááºáá±á«ááºááᯠá¡áá¯á¶ážáááŒá¯ááá¯ááºáá«á flash áááºá¡ááœááºá 3,3V stabilizer ááŸáá·áº output state 74LVS125A áá¯á¶ážáá¯áá«ááŸááá±á¬ ááŒá¬ážáá¶áá»á
áºááºáá
áºáá¯áá«áááºááá·áº áá®ážááŒá¬ážáááºáááºá
ááºááᯠá¡áá¯á¶ážááŒá¯áá²á·áááºá á€áá±áá¬á áá°áá¯ááºáá¬ááẠáá»áœááºá¯ááºááᯠá
á±á¬áá·áºáá±áááºá ááŒááºáááºáá¯á¶ážáááºááŒá¬ážáá¶áá
áºáá¯á ááá¯á·áá±á¬áº E01-ML01DP5 ááá¯á·ááá¯áẠáááºáááºá
ááºááẠá¡áá¯ááºáá¯ááºáááºá áá
áºáá»á
áºááá¯ááºááŸááºáá»ááºáá»á¬ážááœááºá SdFat ááẠá¡ááŒá¬ážá
ááºáá
á¹á
ááºážáá»á¬ážááŸáá·áº ááá¯ááºáá®ááŸá¯áááŸáááŒá±á¬ááºáž ááááá±ážáá»ááºááᯠááœá±á·áá²á·áááºá TXS0108E ááŸá á¡ááá·áºááŒá±á¬ááºážá
ááºááᯠáááºááŸá¬ážááŒá®áž jumpers áá»á¬ážááŒáá·áº á¡á
á¬ážááá¯ážáá¬ážáá±á¬ááŒá±á¬áá·áº ááŒá
áºáááºá E01-ML01DP5 ááẠ5V á¡áá»ááºááŒááŸá¯áá»á¬ážááᯠáááºážáá¶ááá¯ááºááẠ- áááºážááẠááá°áá®áá«á oscilloscope ááᯠá¡áá¯á¶ážááŒá¯á áááºáááºá
ááºááᯠáá»áááºáááºáá±á¬á¡áá«ááœáẠMISO ááá¯ááºážááœáẠá¡áá»ááºááŒáá¯á¶ážááŸá¯á¶ážááŸá¯ááᯠááœá±á·ááŸááá²á·áááºá ááá¯áá
áá¯ááºá
á
áºáá±ážááŒá®ážáá±á¬áẠ4LVS74A á OE 125 áá»ááºáááºáá»á¬ážá ááœáá·áºááá¯ááºáá±á¬á¡áá»ááºááŒááŸá¯áá»á¬ážá inputs áá»á¬ážááᯠáá¯á¶áá«áá¬ááŒáá¯ážáá
áºáá¯ááá¯á· ááá±áááºáá¬ážááŒá®áž áááºááá·áºááááá¡ááŒá±áá±ááá¯áá»áŸ ááŒá±á¬ááá¯ááŒááºážáááŸáááŒá±á¬ááºáž ááœá±á·ááŸááá²á·áááºá ááŒá¬ážáá¶áá»á
áºááºá¡á¬áž 5V á០3.3V ááá¯á· 3,3V á០13V ááá¯á· signal line áá»á¬ážááŒáá·áº áááºááá¯ááºáá»áááºáááºáá¬ážáá±á¬ XNUMX KΩ resistors áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒá®áž primitive level converter á¡ááŒá
Ạá¡áá¯á¶ážááŒá¯áá²á·áááºá MISO ááá¯ááºážáááœá²áááºáá±á«á·á áááºážáá¡ááœááºá¡á±á¬ááºááŒá±ááá¯ááºááẠááŒá±ááŒááºá¡ááá·áºááá¯á· á¡áá»ááºááŒááŸá¯áá»á¬ážááᯠááœá²áá±á¬ááºááá¯ááºááœááºááŸááááºá MISO ááá¯ááºážá enable signal ááẠpin XNUMX ááŒá
áºááŒá±á¬ááºáž áá¯á¶ážááŒááºááŒá®ážáá±á¬ááºá áááºážááẠáááºážááŒá±á¬ááºážá០ááŒá¯ááºááœááºááœá¬ážááŒá®ážáááŸááá¬áá«á9LVS74A CS á
ááºáá
á¹á
ááºážááŒá¬ážááœáẠinput pin (125) ááŸáá·áº termination resistor ááᯠááœá±ážáá»ááºáá«á ááá¯á áááºááá¯áá®áááºááᯠá¡áá¯á¶ážááŒá¯ááœáá·áºáááŸááá«áá MISO ááŒá¬ážáá¶ááẠááááºáá¬ážáááºááŒá
áºááŒá®áž á¡ááŒá¬ážá
ááºáá
á¹á
ááºážááá¯ááºáá±á¬ááºááŸá¯ááᯠá¡ááŸá±á¬áá·áºá¡ááŸááºáááŸááá«áááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáá¯ááºá¡ááœá²á· áá¯á¶ááŒááºážáááºáá¶áááááᬠáááºáááºáá±áááºáDS3231 ááẠáá¬áá®ááá¯áá»áááºáááºááẠáá±á¬á·ááºáá² I2C áááºá
áºáá¬áž (TWI) ááᯠá¡áá¯á¶ážááŒá¯áááºá
Arduino IDE áááá¯ááááº// á¡áá±ážááŒá®ážáá±á¬á¡áá»ááº- Adafruit_TFTLCD á
á¬ááŒáá·áºááá¯ááºááẠá¡ááá¡áá»ááŒá
áºááááº
// TFT ááá¯ááºáž ááá¯á·ááá¯áẠááœá²ááœááºáá¯ááºá¡ááœáẠááŒááºáááºáá¬ážáááºá
// áááºáááºáááºá¡ááœáẠAdafruit_TFTLCD.h ááœáẠáááºááá¯ááºáᬠááŸááºáá»ááºáá»á¬ážááᯠááŒáá·áºáá«á
// Open-Smart Team ááŸáá·áº Catalex á¡ááœá²á·
//[á¡á®ážáá±ážááºááá¯áá¬ááœááºáá¬ážáááº]
// ááá¯ááº:
//
//Demo áá¯ááºáá±á¬ááºáá»ááº- ááááºáá
áºá áá¬ááºáá±á¬ááºáá»á¬ážááᯠááŒááá«á
//Arduino IDE: 1.6.5
// Board: Arduino UNO R3á Arduino Mega2560á Arduino Leonardo
// áá¯ááº-OPEN-SMART UNO R3 5V / 3.3Vá Arduino UNO R3á Arduino Mega2560
// á.á áááºá TFT
//
//OPEN-SMART UNO R3 5V / 3.3V:
//
#áá«áááºáá«áááºá // á¡áááááááºáá
áºá
á¬ááŒáá·áºááá¯ááº
//#áá«áááºâáááºâ // áá¬á·ááºáá² áá®ážááá·áºá
á¬ááŒáá·áºááá¯ááº
#áá«áááºáá«áááºá
MCUFRIEND_kbv tft;
#include "SdFat.h" // SdFat á
á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«á
SdFat SD;
SdFile ááá¯ááº;
ááá¯áẠmyFile;
#Define SD_CS_PIN SS
#áá«áááºáá«áááºá // SPI áááºá
áºáá¬ážááŒáá·áº á¡áá¯ááºáá¯ááºááẠá
á¬ááŒáá·áºááá¯ááºááᯠáá»áááºáááºáá«á
#áá«áááºáá«áááºá // áááºáááºááá¯ááºááᯠRF24 á
á¬ááŒáá·áºááá¯ááºá០áá»áááºáááºáá«á
#áá«áááºáá«áááºá // nRF24L24+ ááŸáá·áº á¡áá¯ááºáá¯ááºááẠá
á¬ááŒáá·áºááá¯ááºááᯠáá»áááºáááºáá«á
RF24 áá±áá®ááá¯(ááá áá);
#áá«áááºáá«áááºá
DS3231 rtc(27á 25);
á¡áá»ááẠt;
uint16_t r = 6000;
uint32_t k = 0;
ááááºááŒáááºáá±á¬ áááºááŸááºáááá¯ážáá¬ážáá±á¬ ááŸááºáá»á¬ážáá±á¬áá±áá¬á
float leb_1;
float leb_2;
float leb_3;
float leb_4;
uint8_t ááá¯ááº;
int rc = 0;
uint8_t time_sec_prev;
uint8_t time_day_prev;
//************************************************** ****************///
// áááºááẠOPEN-SMART TFT ááœá²ááœááºáá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá«á //
// 5V-3.3V á¡ááá·áºááŒá±á¬ááºážááá·áº áá¬ážáá
áºááᯠááá·áºááẠááá·áºá¡á¬áž á¡ááŒá¶ááŒá¯áá«áááºá
// áá¯ááºáá«ááẠááẠOPEN-SMART UNO Black áá¬ážááŸááºážááᯠ5V/3.3V áá«áá«ááá¯ááºááŒáá·áº á¡áá¯á¶ážááŒá¯ááá¯ááºáááºá
// áááºááẠ3.3V ááá¯á·ááŒá±á¬ááºážáááºáá¬ááá¯áááºá
// LCD á¡ááœáẠcontrol pin áá»á¬ážááᯠáááºááá·áºáá
áºáá»á
áºááẠááá¯á·ááá¯ááºáááᯠáááºááŸááºáá±ážááá¯ááºáá«áááºá
// analog pins...áá«áá±ááá·áº áá»áœááºáá±á¬áºááá¯á·á analog pins ááœá±ááᯠáá¯á¶ážáá«áááá·áºáááºá
//ââââââââââââââ-|
// TFT Breakout - Arduino UNO / Mega2560 / OPEN-SMART UNO Black
// GND - GND
// 3V3 - 3.3V
//CS - A3
// RS - A2
// WR - A1
// RD - A0
// RST - ááŒááºáááºáááºááŸááºáá«á
// LED - GND
// DB0 - á
// DB1 - á
// DB2 - á
// DB3 - á
// DB4 - á
// DB5 - á
// DB6 - á
// DB7 - á
// á¡áá»á¬ážáá¯á¶áž 16-bit á¡áá±á¬ááºáááºááá¯ážá¡áá»áá¯á·ááœáẠáá°áá¬ážáááºááá¯ááºáá±á¬á¡áááºáá»á¬ážááᯠáááºááŸááºáá«-
#á¡áááºáá±á¬ááº0x0000ááá¯áááºááŸááºáá«á
#á¡ááŒá¬áá±á¬ááº0x001Fááá¯áááºááŸááºáá«á
#Define 0xF800
#Define á¡á
áááºážáá±á¬ááº0x07E0
# CYAN 0x07FF ááá¯áááºááŸááºáá«á
#MAGENTA 0xF81F ááá¯áááºááŸááºáá«á
#á¡áá« 0xFFE0 ááá¯áááºááŸááºáá«á
#á¡ááŒá° 0xFFFF ááá¯áááºááŸááºáá«á
# GREY 0x8C51 ááá¯áááºááŸááºáá«á
#áá®ážááá¯ážáá±á¬áẠ0x39E7 ááᯠáááºááŸááºáá«á
//Adafruit_TFTLCD tft(LCD_CSá LCD_CDá LCD_WRá LCD_RDá LCD_RESET);
// á¡áá¬á¡ááœááºááá¯á¡áá¯á¶ážááŒá¯áá«áá ááááºážáá»á¯ááºááŸá¯ááŸáá·áº áá±áá¬ááá¯ááºážá¡á¬ážáá¯á¶ážááᯠááŒá¯ááŒááºááŒá®ážááŒá
áºáááºá
// ááá¯ááá¯ááá¯ážááŸááºážáá±á¬ ááŒá±ááŒá¬áá»ááºááᯠááœá±ážáá»ááºááá¯ááºáááº-
// Adafruit_TFTLCD tft;
uint16_t g_identifier;
á
á¬áááºáž dataString;
//String numfileMonth = "1.txt";
char perv[] = {"2.txt"};
//String *numfileMonth="1.txt" (á¡ááœááºá¡á
á¬áž (numfileMonth));
/////////////////////////////////////////////////// //////////////////
áá»ááºááŒáẠsetup ááᯠ(áá»ááºááŒááº) {
rtc.begin();
// á¡áá»áááºáááºááŸááºááẠááá¯á¡ááºáá±á¬ ááá¯ááºážáá»á¬ážááᯠááŸááºáá»ááºáá±ážáá«á
// rtc.setDOW(6); // áááºááá¹ááááºááá±á·
// rtc.setTime(22á 04á 0); // á¡áá»áááºá 24 áá¬áá®áá¯á¶á
á¶á
// rtc.setDate(4á 5á 2019); // áááºá
áœá²á á¡á±á¬ááºááá¯áᬠááá áááá
Serial.begin (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("Constructor V.V." ));
tft.setCursor(40á 40);
tft.print (utf8rus("Turner 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); // áá±áá¬áááºáá¶ááá°ááẠ1xAABBCCDD1 0 transmitter á identifier ááŒáá·áº 11 pipe ááá¯ááœáá·áºáá«á
// áá±áá¬áááºáá¶ááá°ááẠáá¯ááºááœáŸáá·áºáá° ID 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("initial failed!");
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); // cursor á¡áá±á¡áá¬ážááᯠáááºááŸááºááŒááºážá
tft.fillRect(178á 0á 65á 7á áá®ážááá¯ážáá±á¬ááº); // á¡áá»áááºá¡ááœááºá§áááá¬ááᯠááŸááºážáááºážááŒááºážá
tft.setTextSize(1);
tft.print(rtc.getDateStr());
///////// ááááºážáá»á¯ááºá¡áá¬ááá¹áá¯áá»á¬ážá á¡áááºááᯠáá¯ááºáá«á
tft.setTextSize(2);
tft.setCursor(60á 25);
tft.println(utf8rus("Winches I"));
///////// log file áá
áºáᯠáááºáá®áž. áááºáááºážááŒááºážááŒáá¯ážáááºážááŸá¯áááááºááá¯áááºáá®ážááŒááºáž
tft.setTextSize(1);
tft.setCursor(130á 10); // áá±á¬á·ááºááá¯áẠ2.txt ááᯠáááºáá®ážáá¬ážáá«á ááá¯ááºááá¯á· á
á¬áá±ážááŒááºáž áááºáá¯ááºáá«áááºá
á¡áááºá (SD.exists(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 port áá±á¬áºáá®áá¬ááá¯á· ááŸááºáááºážáá
áºáá¯áá¯ááºáá±ážááẠáá±á¬ááºážááá¯áá»ááºáá
áºáá¯ááŸáááŒá±á¬ááºáž á
á
áºáá±ážááŒááºážá
if (Serial.available() > 0) {
if (1 == Serial.read());
//////// "1" ááá¯áááºáá¶áá«á output ááá¯
ááá¯áẠmyFile = SD.open(perv);
// ááá¯ááºááá«áá áááºážáá¶ááá¯á· á
á¬áá±ážáá«á
á¡áááºá (myFile) {
áá±á
áẠ(myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
áááŒá¬áž {
Serial.println("á¡ááŸá¬ážá¡ááœááºáž .txt ááœáá·áºááŒááºáž");
}
}
//////// á
á¬áááºáá»áááº
t = rtc.getTime();
tft.setTextColor(WHITE);
//////// á¡áá»áááºááŒá±á¬ááºážáá²áá«á áá¬áá®á¡áá
áºáááºááŒááºážááᯠááŒááá«á
if (time_sec_prev != t.sec) {
tft.setCursor(120á 0); // cursor á¡áá±á¡áá¬ážááᯠáááºááŸááºááŒááºážá
tft.fillRect(118á 0á 50á 7á áá®ážááá¯ážáá±á¬ááº); // á¡áá»áááºá¡ááœááºá§áááá¬ááᯠááŸááºážáááºážááŒááºážá
tft.setTextSize(1);
tft.print(rtc.getTimeStr()); // á¡ááœááºáá¬áá®áá»á¬ážáááºááŒááºážá
time_sec_prev = t.sec;
}
//////// áááºá
áœá²ááŒá±á¬ááºážáá«á áááºá
áœá²á¡áá
áºááᯠááŒáá«á
if (time_day_prev != t.date) {
tft.setCursor(180á 0); // cursor á¡áá±á¡áá¬ážááᯠáááºááŸááºááŒááºážá
tft.fillRect(178á 0á 65á 7á áá®ážááá¯ážáá±á¬ááº); // ááŸááºážááŸááºážáááºážáááºáž áááºá
áœá²ááŒáááŸá¯ á§áááá¬
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // áááºá
áœá²áá»á¬ážáááºááŒááºážááá¯ááŒááá«á
time_day_prev = t.date;
}
///////// áá±áá®ááá¯áááºáá¶áááŸááá«áá
á¡áááºá (radio.available(&pipe)) {
///////// áááºáá¶ááŒá¬ážáᶠá¡ááŒáá·áºááŸááááŸá á
á
áºáá±ážááŒááºážá
radio.read(&dataá sizeof(data));
///////// ááá¯á¡ááºáá±á¬ transmitter ááááºá
á¬ááᯠáááá¯ááºáá«áá
if (pipe == 1) {
///////// ááá¯áá¯á¶ážááŒááºááẠSynchronizing sequence ááá¯á
á±á¬áá·áºááá¯ááºáž
// data block áá¡á
á¡áááºá (áá±áᬠ== 0000) {
rc = 0;
} áááºá¡ááŒá¬áž {
rc++;
}
//////// áááºááŒááºáááºááá¯ážáá»á¬ážááᯠááŸááºáááºážáááºááŒá®áž áá
áºáá¬áá®á 10th ááŸáá·áº 100th ááœáẠááœááºáá»ááºááŒááºáž
á¡áááºá (rc == 1) {
leb_1 = áá±áᬠ/ 3600.0;
}
á¡áááºá (rc == 2) {
leb_2 = áá±áᬠ/ 3600.0;
}
á¡áááºá (rc == 3) {
leb_3 = áá±áᬠ/ 3600.0;
}
á¡áááºá (rc == 4) {
leb_4 = áá±áᬠ/ 3600.0;
}
}
}
r++;
k++; // áá±á¬ááºáá¬áá
áºáá¯áá²á
//////// á¡áá»áááºá¡ááá¯ááºážá¡ááŒá¬ážá¡ááá¯áẠáá±áá¬á¡ááºááááº
á¡áááºá (r >= 6500) {
tft.setTextSize(2);
tft.fillRect(0á 41á 180á 64á áá®ážááá¯ážáá±á¬ááº);
Serial.println("Lebedki 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);
r = 0;
}
///////// 10 áááá
áºááá¯ááºáž SD ááœáẠááŸááºáááºážááá¯á· áá±áá¬áá±ážáá«á
if ((t.min %10 == 0) && ( t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200á 10);
tft.setTextColor(BLACK);
///////// .csv áá±á¬áºáááºááŒáá·áº á
á¬ááŒá±á¬ááºážáá
áºáᯠáááºáá®ážááŒááºážá
string dataString = String (rtc.getDateStr()) + ", " +(rtc.getTimeStr()) + ", " + (leb_1) + "," + (leb_2)
+ ", " + (leb_3) + ", " + (leb_4) + ", ";
///////// ááá¯ááºáá
áºáá¯ááá¯á· áá±ážááŒá®áž á
á¬áá±ážááŒááºážáá¯ááºáááºážá
ááºá ááááºáá»á¬ážááᯠáá¯ááºáá±ážáá«á
myFile = SD.open(pervá FILE_WRITE); // â2.txtâ á¡áááºááŸá ááá¯ááºáááŸááá«áá áááºážááᯠáááºáá®ážáááºááŒá
áºáááºá
á¡áááºá (myFile) {
myFile.println(dataString);
myFile.close();
tft.fillRect(198á 8á 42á 10á á¡á
áááºážáá±á¬ááº);
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 (á
á¬ááŒá±á¬ááºážáááºážááŒá
áº)
{
int i,k;
ááŒáá¯ážáááºážáá
áºááŸááº;
char n áááºááŸááºáááá¯ážáá±á¬á
char m[2] = { '0', ' ' };
k = source.length(); i = 0;
áá±á
áẠ(i<k) {
n = á¡áááºážá¡ááŒá
áº[i]; i++;
á¡áááºá (n >= 0xC0) {
switch (n) {
ááŒá
áºáááºááŸáẠ0xD0: {
n = á¡áááºážá¡ááŒá
áº[i]; i++;
if (n == 0x81) { n = 0xA8; áá»áá¯áž; }
á¡áááºá (n >= 0x90 && n <= 0xBF) n=n + 0x30;//0x2F
áá»áá¯áž
}
ááŒá
áºáááºááŸáẠ0xD1: {
n = á¡áááºážá¡ááŒá
áº[i]; i++;
if (n == 0x91) { n = 0xB8; áá»áá¯áž; }
á¡áááºá (n >= 0x80 && n <= 0x8F) n=n + 0x70;//0x6F
áá»áá¯áž
}
}
}
m[0] = n; áá
áºááŸáẠ= áá
áºááŸáẠ+ á
á¬áááºáž(m);
}
ááŒááºáá¬áá
áºááŸááº;
}Adafruit_GFX á
á¬ááŒáá·áºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯á Cyrillic á¡ááœááºá¡ááœááºá¡ááœáẠáá¬ááºáá±á¬ááºá¡ááœááºááŒá±á¬ááºážááŒááºážáááá¯ááááºááᯠáááºááááá¯ááááºááŸáá·áºá¡áá° áá°áá®áá±á¬ááá¯ááºááœá²ááœáẠááá·áºááœááºážáá¬ážáááºá Adafruit_GFX ááŸá glcdfont.c ááá¯ááºááᯠááá°áá®áá±á¬áá±á¬áá·áºááŒáá·áº á¡á
á¬ážááá¯ážááẠááá¯á¡ááºáááºá
á¡áá»ááºážáá»á¯ááºááŒá±á¬ááá»áŸáẠá
áá
áºááẠáá»áŸá±á¬áºááŸááºážáá»ááºáá»á¬ážá¡ááá¯ááºáž ááŸááºáááºáá²á·ááŒá®áž á
ááºáá
á¹á
ááºážáá»á¬ážá áááºáááºáá»áááºááᯠá
á±á¬áá·áºááŒáá·áºááẠááá¯ááá¯ááœááºáá°áá¬áááºá á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá±á«ááºáá¯áá·áºáá¯ááºáá»á¬ážáá±á«áºááœáẠá
á¯á
ááºážáá¬ážáá±á¬áºáááºáž á¡áá¯ááºááŸáá·áºáááºáááºááŒá®áž áá»ááºáá»ááºážááá»á±áááºáá»ááºáááŸááá«á áááááŒááºá
ááºáá»á¬ážááẠááŒá±á¬ááºááá»á±á¬áºááŒá¬ á¡áá¯ááºáá¯ááºáá²á·ááŒá®áž áá±á¬ááºážáá¬áá®ááœáẠááœááºááŒá±á¬ááºáá²á·áááºá
source: www.habr.com