#include #include #include //const int mode = 1; //царь //const int mode = 2; //яга //const int mode = 3; // тролль; const int mode = 4; // кащей; // ж byte _0 [8] = { 0b00000, 0b00000, 0b10101, 0b10101, 0b11111, 0b10101, 0b10101, 0b00000 }; //л byte _1 [8] = { 0b00000, 0b00000, 0b00100, 0b01010, 0b01010, 0b10010, 0b10010, 0b00000 }; //ш byte _2 [8] = { 0b00000, 0b00000, 0b10101, 0b10101, 0b10101, 0b10101, 0b11111, 0b00000 }; //ы byte _3 [8] = { 0b00000, 0b00000, 0b10001, 0b10001, 0b11101, 0b10101, 0b11101, 0b00000 }; //ю byte _4 [8] = { 0b00000, 0b00000, 0b10111, 0b10101, 0b11101, 0b10101, 0b10111, 0b00000 }; //я byte _5 [8] = { 0b00000, 0b00000, 0b01111, 0b01001, 0b01111, 0b00101, 0b01101, 0b00000 }; //ч byte _6 [8] = { 0b00000, 0b00000, 0b01001, 0b01001, 0b01111, 0b00001, 0b00001, 0b00000 }; //ц byte _7 [8] = { 0b00000, 0b00000, 0b01010, 0b01010, 0b01010, 0b01111, 0b00001, 0b00000 }; const char c0[236] PROGMEM = "Xo\6e\2b npuH\7eccy B \0eH\3? Torga goka\0u \6To T\3 gocTouH u coBep\2u nogBur-y6eu Ka\2e\5 6eccmepTHoro. T\3 mo\0e\2b cge\1aTb eTo \1u6o c nomo\2b\4 maruu, Torga Te6e Hy\0Ho 3e\1be 6a6\3-\5ru 609077, \1u6o c nomo\2b\4 opy\0u\5, Torga Te6e Hy\0eH me\6 Tpo\1\1\5 213305"; const char c1[107] PROGMEM = "T\3 cBeprHy\1 meH\5, 3aH\5\1 moe mecTo, npo\2e\1 ypoBeHb, Ho kapmy y\0e He o\6ucTuTb. Kog npoxo\0geHu\5 ypoBH\5: 424242"; const char c2[69] PROGMEM = "ypa no6ega, BoT Te6e npuH\7ecca B \0eH\3 u kog npoxo\0geHu\5 ypoBH\5 424242"; const char b0[103] PROGMEM = "g\1\5 Ha\6a\1a, nomoru T\3 mHe. npuHecu mHe meT\1y u cTyny, \5 ux c\1y\6auHo y Tpo\1\1\5 Ho\6b\4 ocTaBu\1a. Cgau cymmy"; const char b1[249] PROGMEM = "\6To6\3 cBapuTb no\1TuHHoe 3e\1be, mHe u3 moero \6epgaka Hy\0H\3 TpaB\3, \7BeT\3 u \5rog\3. y TpaB - 1 cu\1a, y \5rog- 3 cu\1\3, y rpu6oB - 7 cu\1. npuHecu mHe Bcero poBHo Ha 50 cu\1 cymmou kogoB aHTu\6uTa. U nomHu \6To rpu6\3 np\5\6yTc\5 He To\1bko B TpaBe Ho u B \7BeTax"; const char b2[20] PROGMEM = "Ha Te6e 3e\1be 844701"; const char t0[74] PROGMEM = "g\1\5 Ha\6a\1a, npuHecu mHe gocnexu u \2\1em, y 6a6\3-\5ru 3a6\3\1 B\6epa. Cgau cymmy"; const char t1[95] PROGMEM = "\6To6\3 B\3koBaTb me\6 rHomoB Hy\0Ho co6paTb pygy B \2axTe, g\1\5 eToro co6epuTe cymmy 12u eguHu\7 pyg\3."; const char t2[18] PROGMEM = "Ha Te6e me\6 294661"; const char k0[124] PROGMEM = "He y6uBau meH\5, u \5 noge\1\4cb 6eccmepTuem u paccka\0y Te6e kak go6\3Tb no\1\6aca \0u3Hu 6oHycom. 91119 - no\2aguTb, 62222 - y6uTb"; const char k1[147] PROGMEM = "B komHaTe cocegHeu c Tpo\1\1em HaHeceH 6oHycH\3u kog cToumocTb\4 5 muHyT, cgau ero B gBu\0ok, a Tak \0e cgau mHe u \5 Te6e paccka\0y rge HaxoguTc\5 e\2e oguH"; const char k2[60] PROGMEM = "1 6oHyc ecTb, Tenepb HanpoTuB TpoHa \7ap\5 B koH\7e 3a\1a BTopou"; const char k3[56] PROGMEM = "2u 6oHyc ecTb, Tenepb Ha eTa\0 Hu\0e nog 6a6ou \5rou TpeTuu"; const char k4[74] PROGMEM = "3u 6oHyc ecTb, Tenepb 3a yr\1om c\1eBa oT B\3xoga Ha \7apckuu 6a\1koH \6eTBepT\3u"; const char k5[58] PROGMEM = "4u 6oHyc ecTb, a Tenepb B komHaTe 3a cnuHou y Tpo\1\1\5 n\5T\3u"; const char k6[46] PROGMEM = "5u 6oHyc ecTb, noc\1egHuu y ka\2e\5 nog \1ecTHu\7eu"; const char k7[191] PROGMEM = "6u 6oHyc ecTb. T\3 mo\1oge\7, xopo\2o c\1y\2ae\2bc\5, Tenepb gaBau cBeprHem \7ap\5. g\1\5 eToro Hy\0Ho nogroBopuTb 5 6o\5p u c ux cymmou npuuTu k \7ap\4. 6o\5p mo\0Ho HauTu B 3a\1e coBeTa nog TpoHH\3m 3a\1om \7ap\5"; const char k8[120] PROGMEM = "He Bce Tak npocTo, cmepTb mo\5 He TyT u T\3 He cmo\0e\2b y6uTb meH\5. OHa Hage\0Ho cnp\5TaHa B \1ap\7e B B\3cokou 6a\2He Ha 7 eTa\0e"; const char k9[42] PROGMEM = "T\3 y6u\1 meH\5, coo6\2uTe o6 eTom \7ap\4 223322"; const char err[13] PROGMEM = "HeBepH\3u kog!"; const char hello[12] PROGMEM = "Hello world"; LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем дисплей int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results decoded; unsigned long mul =1; unsigned long code = 0; unsigned long lastInputTime = 0; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver lcd.init(); lcd.createChar(0, _0); lcd.createChar(1, _1); lcd.createChar(2, _2); lcd.createChar(3, _3); lcd.createChar(4, _4); lcd.createChar(5, _5); lcd.createChar(6, _6); lcd.createChar(7, _7); gprint(hello,11); } void loop() { if (irrecv.decode(&decoded)) { int d; if (toDigit(decoded.value, d)) { if (d == -1) { answer(code); mul = 1; code = 0; }else { lcd.backlight(); lcd.print((char)'*'); lastInputTime = millis()/1000; code = code*10 + d; mul*=10; } } irrecv.resume(); } if (lastInputTime >0) { if ( millis()/1000 - lastInputTime > 2) { lcd.noBacklight(); lastInputTime =0; } } } void answer (unsigned long v) { if (mode ==1) //царь { if (v==3197) { gprint (c0,236); } else if (v==558957) { gprint (c1,107); } else if (v==223322) { gprint (c2,69); } else { gprint(err,13); } } else if (mode ==2) //яга { if (v == 9606 || v== 9614 || v==9937 || v==10099 || v==10181 || v==10343 || v==10666 || v==11030 || v==12337 || v==12659 || v==12660 || v==12822 || v==12904 || v==12982 || v==13033 || v==13043 || v==13066 || v==13144 || v==13154 || v==13226 || v==13356 || v==13366 || v==13388 || v==13389 || v==13476 || v==13477 || v==13518 || v==13528 || v==13600 || v==13610 || v==13639 || v==13711 || v==13721 || v==13762 || v==13772 || v==13799 || v==13883 || v==13961 || v==14043 || v==14085 || v==14095 || v==14134 || v==14205 || v==14206 || v==14457 || v==14528 || v==14619 || v==14701 || v==14863 || v==15186 || v==15550 || v==15558 || v==15881 || v==16043 || v==16125 || v==16287 || v==16610 || v==16857 || v==17179 || v==17180 || v==17342 || v==17424 || v==17502 || v==17553 || v==17563 || v==17586 || v==17664 || v==17674 || v==17746 || v==17876 || v==17886 || v==17908 || v==17909 || v==17917 || v==17996 || v==17997 || v==18038 || v==18048 || v==18120 || v==18130 || v==18159 || v==18231 || v==18239 || v==18241 || v==18281 || v==18282 || v==18292 || v==18319 || v==18403 || v==18481 || v==18563 || v==18603 || v==18604 || v==18605 || v==18613 || v==18615 || v==18623 || v==18725 || v==18726 || v==18734 || v==18766 || v==18848 || v==18926 || v==18977 || v==18987 || v==19010 || v==19048 || v==19056 || v==19088 || v==19098 || v==19170 || v==19300 || v==19310 || v==19332 || v==19333 || v==19420 || v==19421 || v==19462 || v==19472 || v==19544 || v==19554 || v==19583 || v==19655 || v==19665 || v==19706 || v==19716 || v==19743 || v==19827 || v==19905 || v==19987 || v==20029 || v==20039 || v==20149 || v==20150 || v==20472 || v==20962 || v==21336 || v==21346 || v==21457 || v==21658 || v==21668 || v==21779 || v==21779 || v==22042 || v==22101 || v==22153 || v==22163 || v==22475 || v==22485 || v==22596) { gprint (b2,20); } else if (v==609077) { gprint (b0,103); } else if (v ==87875) { gprint (b1,249); } else { gprint (err,13); } } else if (mode ==3) //тролль { if (v == 11804 || v == 14446 || v ==14749 || v ==20131 || v ==20207 || v ==20230 || v ==20379 || v ==20434 || v ==20451 || v ==20478 || v ==20510 || v ==20513 || v ==20533 || v ==20577 || v ==20682 || v ==20739 || v ==20754 || v ==20781 || v ==20816 || v ==20836 || v ==20873 || v ==20880 || v ==21042 || v ==21139 || v ==21176 || v ==23076 || v ==23152 || v ==23175 || v ==23324 || v ==23396 || v ==23423 || v ==23458 || v ==23522 || v ==23684 || v ==23781 || v ==23818 || v ==28837 || v ==28860 || v ==28936 || v ==29009 || v ==29081 || v ==29085 || v ==29108 || v ==29108 || v ==29143 || v ==29157 || v ==29180 || v ==29184 || v ==29207 || v ==29207 || v ==29219 || v ==29242 || v ==29283 || v ==29306 || v ==29329 || v ==29356 || v ==29369 || v ==29391 || v ==29428 || v ==29445 || v ==29455 || v ==29463 || v ==29466 || v ==29468 || v ==29490 || v ==29503 || v ==29527 || v ==29542 || v ==29554 || v ==29565 || v ==29579 || v ==29589 || v ==29602 || v ==29617 || v ==29689 || v ==29714 || v ==29716 || v ==29751 || v ==29751 || v ==29786 || v ==29813 || v ==29815 || v ==29823 || v ==29848 || v ==29850 || v ==29885 || v ==29912 || v ==29949 || v ==30074 || v ==30111 || v ==30208) { gprint (t2,18); } else if (v==213305) { gprint (t0,74); } else if (v ==1281095) { gprint (t1,95); } else { gprint (err,13); } } else if (mode ==4) { if (v == 844701 || v == 294661) { gprint (k0,124); } else if (v==91119) { gprint (k1,147); } else if (v==335864) { gprint (k2,60); } else if (v==39734) { gprint (k3,56); } else if (v==49328) { gprint (k4,74); } else if (v==65432) { gprint (k5,58); } else if (v==731646) { gprint (k6,46); } else if (v==319459) { gprint (k7,191); } else if (v ==62222) { gprint (k8,120); } else if (v ==725136) { gprint (k9,42); } else { gprint (err,13); } } } bool toDigit (unsigned long value, int &digit) { if (value ==0xFF4AB5) //0 { digit = 0; return true; } if (value ==0xFF6897) //1 { digit = 1; return true; } else if (value == 0xFF9867 ) //2 { digit =2 ; return true; } else if (value == 0xFFB04F ) //3 { digit = 3; return true; } else if (value == 0xFF30CF ) //4 { digit = 4; return true; } else if (value == 0xFF18E7 ) //5 { digit = 5 ; return true; } else if (value == 0xFF7A85 ) //6 { digit = 6; return true; } else if (value == 0xFF10EF ) // 7 { digit = 7; return true; } else if (value == 0xFF38C7 ) //8 { digit = 8; return true; } else if (value == 0xFF5AA5 ) //9 { digit =9 ; return true; } else if (value == 0xFF02FD) //ok { digit = -1; return true; } return false; } void gprint (const char* v, int len) { int c = 0; int ps = 0; lcd.clear(); lcd.backlight(); lcd.setCursor(0, ps); for (int i = 0; i < len; ++i) { lcd.print((char)pgm_read_byte_near(v + i)); c++; if (c > 15) { while (i < len - 1 && ((char)pgm_read_byte_near(v + i + 1) == ' ' || (char)pgm_read_byte_near(v + i + 1) == '.' || (char)pgm_read_byte_near(v + i + 1) == ',')) { i++; } ps = 1 - ps; lcd.setCursor(0, ps); c = 0; if (ps == 0) { delay(3200); lcd.clear(); } } } delay(3200); lcd.noBacklight(); lcd.clear(); } void displayKeyCodes(void) { uint8_t i = 0; while (1) { lcd.clear(); lcd.print("Codes 0x"); lcd.print(i, HEX); lcd.print("-0x"); lcd.print(i + 16, HEX); lcd.setCursor(0, 1); for (int j = 0; j < 16; j++) { lcd.write(i + j); } i += 16; delay(8000); } }