ãã®ãµã€ãããå§ãã
ã¹ã¿ãŒã¿ãŒã®ãªã³ã«é¢ããæ
å ±ãååŸããããã®æã䟿å©ãªãªãã·ã§ã³ã¯ãPC817 ãã©ãã«ãã©ãŒã䜿çšãããªãã·ã§ã³ã§ããããšãå€æããŸããã æŠç¥å³ããŒãã«ã¯ 100 ã€ã®åäžã®åè·¯ãå«ãŸããŠããããã¹ãŠããµã€ãº 100xXNUMX mm ã® ABS ãã©ã¹ããã¯ã®ç®±ã«å
¥ããããŠããŸãã ãã©ãã«ãã©ã®åç åå°äœãã«ããåããå§åè£
眮ã«æ¥ç¶ãããšããã®æŒãé»æµã PC817 ãéãã®ã«ååã§ãããã«ãŠã³ã¿ãŒã誀ã£ãŠããªã¬ãŒãããŸãã ãããã£ãäºæ
ãæé€ããããã«
åä¿¡éšå㯠ãµã€ã1ãµã€ã2éçºããŒãã ARDUINO MEGA 2560 ã«æ¥ç¶ããŸãããã®ããã«ã端㫠240 åã³ãã¯ã¿ã䜿çšãããŸãã æ
å ±è¡šç€ºããã€ã¹ãšããŠãæµæèã¿ããã¹ã¯ãªãŒã³ãšæž©åºŠã»ã³ãµãŒãåãã解å床 400xXNUMX ã®ã¹ã¯ãªãŒã³ã䜿çšãããŸãã HX8352Bã ãŸããã¹ã¯ãªãŒã³åºæ¿äžã®ICSPãžã®ã³ãã¯ã¿ãæ€å»ãããmicro SDã¹ãããã¯äœ¿çšãããŸããã å®éã«ã¯ãSPI ãã¹äžã®ç«¶åã«ãããããã€ãã£ããSD ãœã±ããã¯äœ¿çšã§ããŸããã ãã©ãã·ã¥ ã«ãŒãã«ã¯ã3,3 V ã¹ã¿ãã©ã€ã¶ãŒãš 74 ã€ã®åºåç¶æ
ãæã€ãããã¡ ããã 125LVS01A ãå«ãå¥åã®ã«ãŒã ãªãŒããŒã䜿çšãããŸããã ããã§çæãç§ãåŸ
ã£ãŠããŸããã ã¹ãªãŒã¹ããŒã ãããã¡ã§ãããE01-ML5DP0108 ãŸãã¯ã«ãŒã ãªãŒããŒã®ãããããåäœããŸããã ã©ã€ãã©ãªã®ã³ã¡ã³ãã§ãSdFat ã¯ä»ã®ããã€ã¹ãšã®éäºææ§ã«é¢ããèŠåã確èªããŸããã TXS01E ã®ã¬ãã« ã³ã³ããŒã¿ãåé€ããããžã£ã³ãã«çœ®ãæããããŸããã E01-ML5DP5 㯠4V ä¿¡å·ã«èæ§ããããŸããã圹ã«ç«ã¡ãŸããã§ããã ãªã·ãã¹ã³ãŒãã䜿çšãããšãã«ãŒã ãªãŒããŒãæ¥ç¶ãããŠãããšãã« MISO ã©ã€ã³ã§ä¿¡å·æ倱ãæ€åºãããŸããã 泚ææ·±ã調ã¹ããšããã74LVS125A ã® OE 5 ãã£ãã«ã®ã€ããŒãã«ä¿¡å·ã®å
¥åã¯åã«å
±éã®ã¯ã€ã€ã«ã¯ãã ä»ããããŠããã第 3.3 ã®ç¶æ
ã«ã€ããŠã¯äœãèªããªãããšãããããŸããã ãããã¡ ãããã¯ãä¿¡å·ç·ãšçŽåã«æ¥ç¶ããã 3,3 KΩ æµæã䜿çšããŠã13 V ãã XNUMX V ãžã®åå§ã¬ãã« ã³ã³ããŒã¿ãšããŠäœ¿çšãããŸããã MISOã©ã€ã³ãé€ãã ããããããã®åºåäžéšã¹ã€ãããä¿¡å·ãã°ã©ã³ãã¬ãã«ã«åŒã蟌ãã ãšèããããŸãã MISO ã©ã€ã³ã®ã€ããŒãã«ä¿¡å·ããã³ XNUMX ã§ãããšå€æãããããããããã©ãã¯ããåãé¢ããã¯ãã ä»ãããã9LVS74A CS ããã€ã¹éžæå
¥åãã³ (125) ãšçµç«¯æµæã®éã ã¡ã¢ãª ã«ãŒãã«ã¢ã¯ã»ã¹ããªãå ŽåãMISO ãããã¡ã¯ç¡å¹ã«ãªããå¥ã®ããã€ã¹ã®åäœã劚ããŸãããéçºããŒãå³åä¿¡æ©åäœäžDS3231 ã¯ããœãããŠã§ã¢ I2C ãã¹ (TWI) ã䜿çšããŠã¯ããã¯ãæ¥ç¶ããŸãã
Arduino IDE ããã°ã©ã // éèŠ: Adafruit_TFTLCD ã©ã€ãã©ãªã¯ç¹å¥ã«æå®ããå¿
èŠããããŸã
// TFT ã·ãŒã«ããŸãã¯ãã¬ãŒã¯ã¢ãŠã ããŒãã®ããããçšã«æ§æãããŠããŸãã
// ã»ããã¢ããã«ã€ããŠã¯ãAdafruit_TFTLCD.h ã®é¢é£ã³ã¡ã³ããåç
§ããŠãã ããã
//Open-Smart ããŒã ãš Catalex ããŒã ã«ãã
//[ã¡ãŒã«ä¿è·]
//åºïŒ
//
//ãã¢æ©èœïŒã°ã©ãã£ãã¯ã¹ãæåã®è¡šç€º
//Arduino IDE: 1.6.5
// ããŒã: Arduino UNO R3ãArduino Mega2560ãArduino Leonardo
// ããŒã:OPEN-SMART UNO R3 5V / 3.3VãArduino UNO R3ãArduino Mega2560
//3.2ã€ã³ãTFT:
//
//ãªãŒãã³ã¹ããŒã UNO R3 5V / 3.3V:
//
ïŒå«ã// ã³ã¢ã°ã©ãã£ãã¯ã¹ã©ã€ãã©ãª
//ïŒå«ã// ããŒããŠã§ã¢åºæã®ã©ã€ãã©ãª
ïŒå«ã
MCUFRIEND_kbv tft;
#include "SdFat.h" // SdFat ã©ã€ãã©ãªã䜿çšãã
SdFat SD;
SdFile ãã¡ã€ã«;
ãã¡ã€ã«myFile;
#SD_CS_PIN SS ãå®çŸ©
ïŒå«ã// SPI ãã¹ã§åäœããããã«ã©ã€ãã©ãªãæ¥ç¶ããŸã
ïŒå«ã// RF24ã©ã€ãã©ãªããèšå®ãã¡ã€ã«ãæ¥ç¶
ïŒå«ã// nRF24L24+ ã§åäœããããã«ã©ã€ãã©ãªãæ¥ç¶ããŸã
RF24 ç¡ç· (47ã49);
ïŒå«ã
DS3231 rtc(27, 25);
æét;
uint16_t r = 6000;
uint32_t k = 0;
æ®çºæ§ã®ç¬Šå·ãªãé·ãããŒã¿ã
ãããŒã leb_1;
ãããŒã leb_2;
ãããŒã leb_3;
ãããŒã leb_4;
uint8_t ãã€ã;
int rc = 0;
uint8_t time_sec_prev;
uint8_t time_day_prev;
//*********************************************** ****************//
// OPEN-SMART TFT ãã¬ãŒã¯ã¢ãŠãããŒãã䜿çšããå Žå //
// 5V-3.3Vã¬ãã«å€æåè·¯ã®è¿œå ãæšå¥šããŸãã
// ãã¡ããã5V/3.3V é»æºã¹ã€ããä»ãã® OPEN-SMART UNO Black ããŒãžã§ã³ã䜿çšã§ããŸãã
// 3.3V ã«åãæ¿ããã ãã§ãã
// LCD ã®å¶åŸ¡ãã³ã¯ãä»»æã®ããžã¿ã«ãŸãã¯ãã³ã«å²ãåœãŠãããšãã§ããŸãã
// ã¢ããã° ãã³...ãã ããããã«ãã次ã®ããšãå¯èœã«ãªããããã¢ããã° ãã³ã䜿çšããŸãã
//ââââââââââââââ-|
// TFT ãã¬ãŒã¯ã¢ãŠã - Arduino UNO / Mega2560 / OPEN-SMART UNO ãã©ãã¯
// GND - GND
// 3V3 - 3.3V
//CS-A3
// RS-A2
// WR-A1
// RD-A0
// RST - ãªã»ãã
// LED - GND
// DB0ïœ8
// DB1ïœ9
// DB2ïœ10
// DB3ïœ11
// DB4ïœ4
// DB5ïœ13
// DB6ïœ6
// DB7ïœ7
// 人éãå€èªã§ããååãããã€ãã®äžè¬ç㪠16 ããã ã«ã©ãŒå€ã«å²ãåœãŠãŸãã
#ãã©ãã¯0x0000ãå®çŸ©ããŸã
#define ãã«ãŒ 0x001F
#RED 0xF800 ãå®çŸ©
#define ç· 0x07E0
#ã·ã¢ã³ 0x07FF ãå®çŸ©
#define ããŒã³ã¿ 0xF81F
#YELLOW 0xFFE0 ãå®çŸ©
#çœ0xFFFFãå®çŸ©
#ã°ã¬ãŒ 0x8C51 ãå®çŸ©ããŸã
#GREYD 0x39E7 ãå®çŸ©ããŸã
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
// ã·ãŒã«ãã䜿çšããå Žåããã¹ãŠã®å¶åŸ¡ç·ãšããŒã¿ç·ã¯åºå®ããã
// ãªãã·ã§ã³ã§ãããåçŽãªå®£èšã䜿çšã§ããŸãã
// Adafruit_TFTLCD tft;
uint16_t g_identifier;
æååããŒã¿æåå;
//æåå 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 æ XNUMX æ¥
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("éçºè
ãšãã«ã");
tft.setCursor(30, 20);
tft.print (utf8rus("ã³ã³ã¹ãã©ã¯ã¿ãŒ V.V." ));
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 ã€ã®ãã€ããéããŸã
// éä¿¡æ© 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);
////////ã«ãŒãã®åæåäž
if (!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, GREY); // æå»åºåé åãã¯ãªã¢
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ïŒ{
////////COMããŒãã¢ãã¿ãžã®ãã°åºåèŠæ±ã®æç¡ã確èª
if (Serial.available() > 0) {
if (1 == Serial.read());
////////ãããŠã1ããåãå
¥ããããå Žåãåºåã¯
ãã¡ã€ã« myFile = SD.open(perv);
// ãã¡ã€ã«ãå©çšå¯èœãªå Žåã¯ãããã«æžã蟌ã¿ãŸã:
if (myFile) {
while (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); // ã«ãŒãœã«äœçœ®ã®èšå®
tft.fillRect(118, 0, 50, 7, GREY); // æå»åºåé åãã¯ãªã¢
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, GREY); // æ¥ä»è¡šç€ºé åãã¯ãªã¢
tft.setTextSize(1);
tft.print(rtc.getDateStr()); // æ¥ä»ã®èªã¿åãå€ã衚瀺ããŸã
time_day_prev = t.date;
}
////////ã©ãžãªåä¿¡ãå¯èœã§ããã°ã
if (radio.available(&pipe)) {
////////åä¿¡ãããã¡ããã£ã±ããã©ããã確èªãã
radio.read(&data, sizeof(data));
////////å¿
èŠãªéä¿¡æ©ã¢ãã¬ã¹ãå©çšå¯èœãªå Žåã
if (ãã€ã == 1) {
////////ãŒãã®åæã·ãŒã±ã³ã¹ã決å®ããã®ãåŸ
ã£ãŠããŸã
//ããŒã¿ãããã¯ã®å
é
if (ããŒã¿ == 0000) {
rc = 0;
å Žå} else {
rc++;
}
////////ã«ãŠã³ã¿å€ãèšé²ãã10 æéã® 100 åã® XNUMX ãš XNUMX åã® XNUMX ã§èšç®ããŸãã
if (rc == 1) {
leb_1 = ããŒã¿ / 3600.0;
}
if (rc == 2) {
leb_2 = ããŒã¿ / 3600.0;
}
if (rc == 3) {
leb_3 = ããŒã¿ / 3600.0;
}
if (rc == 4) {
leb_4 = ããŒã¿ / 3600.0;
}
}
}
r++;
k++; // ãã ã®ã«ãŠã³ã¿ãŒ
//////// äžå®ã®åšæã§ããŒã¿æŽæ°
if ( r >= 6500) {
tft.setTextSize(2);
tft.fillRect(0, 41, 180, 64, GREYD);
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);
r = 0;
}
////////SD äžã®ãã°ã« 10 åããšã«ããŒã¿ãæžã蟌ã¿ãŸãã
if ((t.min % 10 == 0) && ( t.sec == 0)) {
tft.setTextSize(1);
tft.setCursor(200, 10);
tft.setTextColor(BLACK);
////////.csv 圢åŒã§æååãäœæãã
æåå dataString = æåå (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, ç·);
tft.println("SD OK");
Serial.println("SD OK");
é
延(900); // é
延ãããã§ãªãå Žå㯠13 ç§ãçµéãããŸã§ XNUMX åã®åäžã®èªã¿åãå€ãèšé²ããŸã
å Žå} else {
tft.fillRect(198, 8, 42, 10, RED);
tft.println("SD ãšã©ãŒ");
Serial.println("SD ãšã©ãŒ");
}
}
}æåå€æããã°ã©ã /* ãã·ã¢èªãã©ã³ãã UTF-8 ãã Windows-1251 ã«åã³ãŒãåããŸã */
æåå utf8rus(æååãœãŒã¹)
{
int i,k;
æååã¿ãŒã²ããã
笊å·ãªãæå n;
char m[2] = { '0', ' ' };
k = ãœãŒã¹.é·ã(); i = 0;
while (i < k) {
n = ãœãŒã¹[i]; i++;
if (n >= 0xC0) {
ã¹ã€ãã (n) {
ã±ãŒã¹0xD0: {
n = ãœãŒã¹[i]; i++;
if (n == 0x81) { n = 0xA8; å£ã; }
if (n >= 0x90 && n <= 0xBF) n = n + 0x30;//0x2F
ç Žã;
}
ã±ãŒã¹0xD1: {
n = ãœãŒã¹[i]; i++;
if (n == 0x91) { n = 0xB8; å£ã; }
if (n >= 0x80 && n <= 0x8F) n = n + 0x70;//0x6F
ç Žã;
}
}
}
m[0] = n; ã¿ãŒã²ãã = ã¿ãŒã²ãã + æåå(m);
}
ãªã¿ãŒã³ã¿ãŒã²ããã
}Adafruit_GFX ã©ã€ãã©ãªã䜿çšããããªã«æååºåã®æåã³ãŒãå€æããã°ã©ã ã¯ãã¡ã€ã³ ããã°ã©ã ãšåããã©ã«ããŒã«é
眮ãããŸãã Adafruit_GFX ã® glcdfont.c ãã¡ã€ã«ãå¥ã®ãã©ã³ãã«çœ®ãæããå¿
èŠããããŸãã
èŠçŽãããšããã®ã·ã¹ãã ã¯æåŸ
ã©ããã§ãããæ©åšã®çšŒåæéã®ç£èŠã容æã«ãªã£ããšèšããŸãã ãã¹ãŠãã¬ããããŒãäžã§çµã¿ç«ãŠãããŠããŸãããäœæ¥ã«é¢ããŠããã«äžæºã¯ãããŸããã æåã®èŠçŽ ã¯å幎以äžæ©èœããå¬ãä¹ãè¶ããŸããã
åºæïŒ habr.com