ΠΠ°ΡΠ°Π»ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅
Π‘Π°ΠΌΡΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΡΡΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΡΠΊΠ°ΡΠ΅Π»Ρ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Ρ ΠΎΠΏΡΠΎΠΏΠ°ΡΠΎΠΉ PC817. ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½Π°Ρ ΡΡ
Π΅ΠΌΠ°ΠΠ»Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΏΠΎ ΡΡΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΡΡ
Π΅ΠΌΡ, Π²ΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΎ Π² ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΈΠ· ABS ΠΏΠ»Π°ΡΡΠΈΠΊΠ°, ΡΠ°Π·ΠΌΠ΅Ρ 100Ρ
100 ΠΌΠΌ. Π€ΠΎΡΠΎ ΠΎΠΏΡΠΎΠΏΠ°Ρ ΠΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊ ΠΏΡΡΠΊΠΎΠ²ΡΠΌ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ°ΠΌ Ρ ΠΏΠΎΠ»ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠΎΠ²ΡΠΌΠΈ Π²Π΅Π½ΡΠΈΠ»ΡΠΌΠΈ ΠΈΡ
ΡΠΎΠΊ ΡΡΠ΅ΡΠΊΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ΅Π½ Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ Π Π‘817 ΠΈ Π±ΡΠ΄Π΅Ρ Π»ΠΎΠΆΠ½ΠΎΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΡΠΈΠΊΠ°. ΠΠ»Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ
ΠΡΠΈΡΠΌΠ½Π°Ρ ΡΠ°ΡΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π° ΡΡΠΎΡΠΎΠ½Π° 1ΡΡΠΎΡΠΎΠ½Π° 2ΠΌΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΠΎΠΉ ΠΊ ARDUINO MEGA 2560. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²ΡΡ
ΡΡΠ΄Π½ΡΠΉ ΡΠ°Π·ΡΡΠΌ Π½Π° ΡΠΎΡΡΠ΅. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈΠΌΠ΅ΡΡΠΈΠΉ ΡΠ΅Π·ΠΈΡΡΠΈΠ²Π½ΡΠΉ ΡΠ°Ρ ΠΈ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΡΠΊΡΠ°Π½ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ 240Ρ
400 HX8352B. ΠΡΠΈΡΡΠΌ ΡΠ°Π·ΡΡΠΌ ΠΊ ICSP Π½Π° ΠΏΠ»Π°ΡΠ΅ ΡΠΊΡΠ°Π½Π° Π΄Π΅ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π³Π½Π΅Π·Π΄ΠΎ Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎ- SD. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Β«ΡΠΎΠ΄Π½ΠΎΠ΅Β» Π³Π½Π΅Π·Π΄ΠΎ SD Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ° Π½Π° ΡΠΈΠ½Π΅ SPI. ΠΠ»Ρ ΡΠ»Π΅Ρ- ΠΊΠ°ΡΡΡ Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠ°ΡΠ΄ΡΠΈΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π² ΡΠΎΡΡΠ°Π²Π΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΎΡ 3,3Π ΠΈ Π±ΡΡΠ΅ΡΠ½ΡΡ ΠΌΠΈΠΊΡΠΎΡΡ
Π΅ΠΌΡ Ρ ΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ Π²ΡΡ
ΠΎΠ΄ΠΎΠ² 74LVS125A. ΠΠΎΡ ΡΡΡ ΠΆΠ΄Π°Π»ΠΈ ΠΌΠ΅Π½Ρ Π³ΡΠ°Π±Π»ΠΈ. ΠΡΡΠ΅Ρ Ρ ΡΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ, Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» ΠΈΠ»ΠΈ E01-ML01DP5 ΠΈΠ»ΠΈ ΠΊΠ°ΡΠ΄ΡΠΈΠ΄Π΅Ρ. Π ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SdFat ΡΠ°Π·Π³Π»ΡΠ΄Π΅Π» ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ. ΠΡΠ» ΡΠ΄Π°Π»ΡΠ½ ΠΊΠΎΠ½Π²Π΅ΡΡΠ΅Ρ ΡΡΠΎΠ²Π½Π΅ΠΉ Π½Π° TXS0108E ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ½ ΠΏΠ΅ΡΠ΅ΠΌΡΡΠΊΠ°ΠΌΠΈ, Ρ.ΠΊ. E01-ML01DP5 ΡΠΎΠ»Π΅ΡΠ°Π½ΡΠ΅Π½ ΠΊ 5Π ΡΠΈΠ³Π½Π°Π»Π°ΠΌ- Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΡΡΠΈΠ»Π»ΠΎΠ³ΡΠ°ΡΠ° Π²ΡΡΠ²Π»Π΅Π½ΠΎ ΠΏΡΠΎΠΏΠ°Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°Π»Π° Π½Π° Π»ΠΈΠ½ΠΈΠΈ MISO ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΊΠ°ΡΠ΄ΡΠΈΠ΄Π΅ΡΠ°. ΠΡΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎΠΌ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ Π±ΡΠ»ΠΎ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΡΡΠΎ Π²Ρ
ΠΎΠ΄Ρ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΡ
ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΠ 4-Ρ
ΠΊΠ°Π½Π°Π»ΠΎΠ² 74LVS125A Π±ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠΏΠ°ΡΠ½Ρ ΠΊ ΠΎΠ±ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²ΠΎΠ΄Ρ ΠΈ Π½ΠΈ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ ΡΡΠ΅ΡΡΠ΅ΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΡΠ΅ΡΠΈ Π±ΡΡΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΎ. ΠΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠΈΠΊΡΠΎΡΡ
Π΅ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ²Π½Π΅ΠΉ ΠΎΡ 5Π ΠΊ 3.3Π Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² 3,3 ΠΠΠΌ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Ρ ΡΠΈΠ³Π½Π°Π»ΡΠ½ΡΠΌΠΈ Π»ΠΈΠ½ΠΈΡΠΌΠΈ. ΠΡΠΎΠΌΠ΅ Π»ΠΈΠ½ΠΈΠΈ MISO. ΠΡ Π²ΡΡ
ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΠΊΠ»ΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΡΠΈΡΡΠ³ΠΈΠ²Π°Π» ΡΠΈΠ³Π½Π°Π»Ρ ΠΊ ΡΡΠΎΠ²Π½Ρ Β«Π·Π΅ΠΌΠ»ΠΈΒ». ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π» Π»ΠΈΠ½ΠΈΠΈ MISO- ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ 13, ΠΎΠ½ Π±ΡΠ» ΠΎΡΠΎΡΠ²Π°Π½ ΠΎΡ Π΄ΠΎΡΠΎΠΆΠΊΠΈ ΠΈΠΏΡΠΈΠΏΠ°ΡΠ½ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π²Ρ
ΠΎΠ΄Π° (9) 74LVS125A Π²ΡΠ±ΠΎΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° CS ΠΈ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠΌ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΊΠ°ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, MISO- Π±ΡΡΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΈ Π½Π΅ ΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°.Π‘Ρ
Π΅ΠΌΠ° ΠΌΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΡΠΈΡΠΌΠ½ΠΈΠΊ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ°ΡΠΎΠ² Π½Π° DS3231 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠΈΠ½Π° I2C (TWI).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Arduino IDE// IMPORTANT: Adafruit_TFTLCD LIBRARY MUST BE SPECIFICALLY
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
// SEE RELEVANT COMMENTS IN Adafruit_TFTLCD.h FOR SETUP.
//by Open-Smart Team and Catalex Team
//[email protected]
//Store:
//
//Demo Function: Display graphics, characters
//Arduino IDE: 1.6.5
// Board: Arduino UNO R3, Arduino Mega2560,Arduino Leonardo
// Board:OPEN-SMART UNO R3 5V / 3.3V, Arduino UNO R3, Arduino Mega2560
//3.2INCH TFT:
//
//OPEN-SMART UNO R3 5V / 3.3V:
//
#include <Adafruit_GFX.h> // Core graphics library
//#include <Adafruit_TFTLCD.h> // Hardware-specific library
#include <MCUFRIEND_kbv.h>
MCUFRIEND_kbv tft;
#include Β«SdFat.hΒ» // Use the SdFat library
SdFat SD;
SdFile file;
File myFile;
#define SD_CS_PIN SS
#include <SPI.h> // ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠ½ΠΎΠΉ SPI
#include <nRF24L01.h> // ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ RF24
#include <RF24.h> // ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ nRF24L01+
RF24 radio(47, 49);
#include <DS3231.h>
DS3231 rtc(27, 25);
Time t;
uint16_t r = 6000;
uint32_t k = 0;
volatile unsigned long data;
float leb_1;
float leb_2;
float leb_3;
float leb_4;
uint8_t pipe;
int rc = 0;
uint8_t time_sec_prev;
uint8_t time_day_prev;
//***********************************************//
// If you use OPEN-SMART TFT breakout board //
// Reconmmend you to add 5V-3.3V level converting circuit.
// Of course you can use OPEN-SMART UNO Black version with 5V/3.3V power switch,
// you just need switch to 3.3V.
// The control pins for the LCD can be assigned to any digital or
// analog pins…but we’ll use the analog pins as this allows us to
//—————————————-|
// TFT Breakout β Arduino UNO / Mega2560 / OPEN-SMART UNO Black
// GND β GND
// 3V3 β 3.3V
// CS β A3
// RS β A2
// WR β A1
// RD β A0
// RST β RESET
// LED β GND
// DB0 β 8
// DB1 β 9
// DB2 β 10
// DB3 β 11
// DB4 β 4
// DB5 β 13
// DB6 β 6
// DB7 β 7
// Assign human-readable names to some common 16-bit color values:
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define GRAY 0x8C51
#define GRAYD 0x39E7
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// Adafruit_TFTLCD tft;
uint16_t g_identifier;
String dataString;
//String numfileMonth =Β«1.txtΒ»;
char perv [] = {Β«2.txtΒ»};
//String *numfileMonth=Β«1.txtΒ» (sizeof (numfileMonth));
///////////////////////////////////////////////////////////////////
void setup(void) {
rtc.begin();
// ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ- ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ
// rtc.setDOW(6); // ΠΠ΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ
// rtc.setTime(22, 04, 0); // ΠΡΠ΅ΠΌΡ, Π² ΡΠΎΡΠΌΠ°ΡΠ΅ 24 ΡΠ°ΡΠ°.
// rtc.setDate(4, 5, 2019); // ΠΠ°ΡΠ°, 29 ΠΎΠΊΡΡΠ±ΡΡ 2018Π³.
Serial.begin(2000000);
//////// ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΡΠ°Π½Π°
tft.begin(0x65);
tft.reset();
tft.setRotation(0);
tft.cp437(true);
//////////////////ΠΡΠ²ΠΎΠ΄ ΠΈΠΌΠ΅Π½, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.setCursor (8, 0);
tft.println (Β«DEVELOPERS & BUILDΒ» );
tft.setCursor (30, 20);
tft.print (utf8rus(Β«ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π.Π.Β» ));
tft.setCursor (40, 40);
tft.print (utf8rus(Β«Π’ΠΎΠΊΠ°ΡΡ Π.Π.Β» ));
delay (2000);
radio.begin(); // ΠΠ½ΠΈΡΠΈΠΈΡΡΠ΅ΠΌ ΡΠ°Π±ΠΎΡΡ nRF24L01+
radio.setChannel(120); // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΊΠ°Π½Π°Π» ΠΏΡΠΈΡΠΌΠ° Π΄Π°Π½Π½ΡΡ
(ΠΎΡ 0 Π΄ΠΎ 127)
radio.setDataRate (RF24_250KBPS); // Π£ΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
(RF24_250KBPS, RF24_1MBPS, RF24_2MBPS), RF24_1MBPS β 1ΠΠ±ΠΈΡ/ΡΠ΅ΠΊ
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 ΡΡΡΠ±Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ 1 ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ° 0xAABBCCDD11, Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ
// ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ 2 ΡΡΡΠ±Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ 2 ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ° 0xAABBCCDD22, Π΄Π»Ρ ΠΏΡΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ
radio.startListening (); // ΠΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ, Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΡΡΠ±Ρ
// radio.stopListening ();
////////ΠΡΠ²ΠΎΠ΄ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ
tft.fillScreen(BLACK);
tft.setCursor (8, 0);
tft.setTextSize(1);
////////ΠΠ°ΡΠ°Π»ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ SD ΠΊΠ°ΡΡΡ
Serial.println(Β«Initial SD cardΒ»);
tft.println(Β«Initial SD cardΒ»);
tft.setCursor (8, 10);
////////ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ°ΡΡΡ
if (!SD.begin(SD_CS_PIN)) {
Serial.println(Β«initial failed!Β»);
tft.fillRect ( 8, 10, 85, 7, RED);
tft.setTextColor(BLACK);
tft.println(Β«Initial failed!Β»);
return;
}
tft.setTextColor(WHITE);
Serial.println(Β«initialization doneΒ»);
tft.println(Β«Initialization doneΒ»);
delay (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(Β«ΠΠ΅Π±ΡΠ΄ΠΊΠΈ IΒ»));
////////Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° Π»ΠΎΠ³Π° ΠΈ Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΏΠΎΠΏΡΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ
tft.setTextSize(1);
tft.setCursor(130, 10); // Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» Π»ΠΎΠ³Π° 2.txt ΡΠΎΠ·Π΄Π°Π½, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ»
if (SD.exists (perv)) {
//tft.setCursor(0, 90);
tft.println(perv);
Serial.println(perv);
} else {
myFile = SD.open(perv, FILE_WRITE); // Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ»Π° 2.txt Π½Π΅Ρ, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½
myFile.close();
tft.println(perv);
Serial.println(perv);
}
}
void loop(void) {
////////ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠ° Π²ΡΠ²ΠΎΠ΄Π° Π»ΠΎΠ³Π° Π² ΠΌΠΎΠ½ΠΈΡΠΎΡ Π‘ΠΠ- ΠΏΠΎΡΡΠ°
if (Serial.available() > 0) {
if (1 == Serial.read());
////////Π Π΅ΡΠ»ΠΈ ΠΏΡΠΈΠ½ΡΡΠ° Β«1Β»- ΡΠΎ Π²ΡΠ²ΠΎΠ΄
File myFile = SD.open(perv);
// if the file is available, write to it:
if (myFile) {
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
else {
Serial.println(Β«error opening .txtΒ»);
}
}
////////Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
t = rtc.getTime();
tft.setTextColor(WHITE);
////////ΠΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ, ΡΠΎ Π²ΡΠ²ΠΎΠ΄ Π½ΠΎΠ²ΡΡ
ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ ΡΠ°ΡΠΎΠ²
if ( 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;
}
////////ΠΡΠ»ΠΈ Π΄Π°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ, ΡΠΎ Π²ΡΠ²ΠΎΠ΄ Π½ΠΎΠ²ΠΎΠΉ Π΄Π°ΡΡ
if ( 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;
}
////////ΠΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ°Π΄ΠΈΠΎΠΏΡΠΈΡΠΌ, ΡΠΎ
if (radio.available(&pipe)) {
////////ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΈΡΠΌΠ°,
radio.read(&data, sizeof(data));
////////Π΅ΡΠ»ΠΈ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π½ΡΠΆΠ½ΡΠΉ Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ°, ΡΠΎ
if (pipe == 1) {
////////ΠΆΠ΄ΡΠΌ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½ΡΠ»Π΅ΠΉ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ
//Π½Π°ΡΠ°Π»Π° Π±Π»ΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ
if ( data == 0000 ) {
rc = 0;
} else {
rc ++;
}
////////ΠΠ°ΠΏΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΡΡΡΠΈΠΊΠΎΠ² ΠΈ ΡΠ°ΡΡΡΡ ΠΈΡ
Π² 10 ΠΈ 100-Ρ
Π΄ΠΎΠ»ΡΡ
ΡΠ°ΡΠ°
if ( rc == 1 ) {
leb_1 = data / 3600.0;
}
if ( rc == 2 ) {
leb_2 = data / 3600.0;
}
if ( rc == 3 ) {
leb_3 = data / 3600.0;
}
if ( rc == 4 ) {
leb_4 = data / 3600.0;
}
}
}
r ++;
k ++; // ΠΏΡΠΎΡΡΠΎ ΡΡΡΡΡΠΈΠΊ
//////// Π‘ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΉ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ
if ( r >= 6500) {
tft.setTextSize(2);
tft.fillRect ( 0, 41, 180, 64, GRAYD);
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;
}
////////ΠΠ°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ
Π² Π»ΠΎΠ³ Π½Π° SD ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΠΌΠΈΠ½.
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Β» β Π½Π΅Ρ, ΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½.
if (myFile) {
myFile.println(dataString);
myFile.close();
tft.fillRect ( 198, 8, 42, 10, GREEN);
tft.println(Β«SD OKΒ»);
Serial.println(Β«SD OKΒ»);
delay (900); // Π·Π°Π΄Π΅ΡΠΆΠΊΠ°, ΠΈΠ½Π°ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ 13 ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ, ΠΏΠΎΠΊΠ° ΡΠ΅ΠΊΡΠ½Π΄Π° Π½Π΅ ΠΏΡΠΎΠΉΠ΄ΡΡ
} else {
tft.fillRect ( 198, 8, 42, 10, RED);
tft.println(Β«SD ERRΒ»);
Serial.println(Β«SD ERRΒ»);
}
}
}ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²/* Recode russian fonts from UTF-8 to Windows-1251 */
String utf8rus(String source)
{
int i,k;
String target;
unsigned char n;
char m[2] = { ‘0’, ‘ ‘ };
k = source.length(); i = 0;
while (i < k) {
n = source[i]; i++;
if (n >= 0xC0) {
switch (n) {
case 0xD0: {
n = source[i]; i++;
if (n == 0x81) { n = 0xA8; break; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
break;
}
case 0xD1: {
n = source[i]; i++;
if (n == 0x91) { n = 0xB8; break; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
break;
}
}
}
m[0] = n; target = target + String(m);
}
return target;
}ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Adafruit_GFX ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΎΠ΄Π½Ρ ΠΏΠ°ΠΏΠΊΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ. ΠΡΠ΅ Π½Π°Π΄ΠΎ Π² Adafruit_GFX Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ°ΠΉΠ» glcdfont.Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠΈΡΡΠΎΠΌ.
ΠΠΎΠ΄Π²ΠΎΠ΄Ρ ΠΈΡΠΎΠ³ ΡΠΊΠ°ΠΆΡ ΡΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΏΡΠ°Π²Π΄Π°Π»Π° Π½Π°Π΄Π΅ΠΆΠ΄Ρ, ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. Π₯ΠΎΡΡ Π²ΡΡ ΡΠΎΠ±ΡΠ°Π½ΠΎ Π½Π° ΠΌΠ°ΠΊΠ΅ΡΠ½ΡΡ
ΠΏΠ»Π°ΡΠ°Ρ
, ΠΈ Π² ΡΡΠΎΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Π½Π°ΡΠ΅ΠΊΠ°Π½ΠΈΠΉ Π² ΡΠ°Π±ΠΎΡΠ΅ Π½Π΅Ρ. ΠΠ΅ΡΠ²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»ΡΠ³ΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΆΠΈΠ»ΠΈ Π·ΠΈΠΌΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com