Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.66 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2. #include <EasyTransfer.h>
  3.  
  4. EasyTransfer ETin, ETout;
  5.  
  6. LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
  7.  
  8. byte arrow_left[8] = {
  9. 0b00010,
  10. 0b00100,
  11. 0b01000,
  12. 0b11111,
  13. 0b01000,
  14. 0b00100,
  15. 0b00010,
  16. 0b00000
  17. };
  18. byte arrow_right[8] = {
  19. 0b01000,
  20. 0b00100,
  21. 0b00010,
  22. 0b11111,
  23. 0b00010,
  24. 0b00100,
  25. 0b01000,
  26. 0b00000
  27. };
  28.  
  29. struct SEND_DATA_STRUCTURE {
  30. unsigned long done;
  31. bool R1 = false;
  32. bool R2 = false;
  33. bool R3 = false;
  34. bool R4 = false;
  35. };
  36. struct RECEIVE_DATA_STRUCTURE {
  37. float Volt = 0;
  38. int Level = 0;
  39.  
  40. byte temperature = 0;
  41. byte humidity = 0;
  42. };
  43. RECEIVE_DATA_STRUCTURE RX;
  44. SEND_DATA_STRUCTURE TX;
  45.  
  46. bool conn = false;
  47. unsigned long ms = 0;
  48.  
  49. int mode = 0;
  50. int mode_1 = 1;
  51.  
  52. int info_1 = 1;
  53.  
  54. int relay = 1;
  55. int relay_1 = 1;
  56.  
  57. int settings_1 = 1;
  58. int settings = 1;
  59. int brightness = 20;
  60.  
  61. String button() {
  62. int x = analogRead(A0);
  63. if (x < 50) return "R";
  64. else if (x < 150) return "U";
  65. else if (x < 400) return "D";
  66. else if (x < 500) return "L";
  67. else if (x < 800) return "S";
  68. else return "N";
  69. }
  70.  
  71. void wait() {
  72. while (button() != "N")
  73. lcd.clear();
  74. }
  75.  
  76. void setup() {
  77. Serial.begin(9600);
  78. ETout.begin(details(TX), &Serial);
  79. ETin.begin(details(RX), &Serial);
  80.  
  81. lcd.begin(16, 2);
  82. lcd.createChar(0, arrow_left);
  83. lcd.createChar(1, arrow_right);
  84. lcd.clear();
  85.  
  86. pinMode(A0, INPUT);
  87. pinMode(10, OUTPUT);
  88. }
  89.  
  90. void loop() {
  91. mode_1 = constrain(mode_1, 1, 4);
  92. info_1 = constrain(info_1, 1, 2);
  93. relay_1 = constrain(relay_1, 1, 6);
  94. settings_1 = constrain(settings_1, 1, 4);
  95. brightness = constrain(brightness, 0, 20);
  96. analogWrite(10, map(brightness, 0, 20, 0, 255));
  97.  
  98. switch (mode) {
  99. case 0:
  100. lcd.setCursor(0, 0);
  101. lcd.print("INFO ");
  102. lcd.setCursor(0, 1);
  103. lcd.print("RELAY ");
  104.  
  105. if (mode_1 == 1) {
  106. lcd.setCursor(5, 0);
  107. lcd.write(byte(0));
  108. lcd.setCursor(6, 1);
  109. lcd.print(" ");
  110. }
  111. if (mode_1 == 2) {
  112. lcd.setCursor(6, 1);
  113. lcd.write(byte(0));
  114. lcd.setCursor(5, 0);
  115. lcd.print(" ");
  116. }
  117.  
  118. if (button() == "U") {
  119. wait();
  120. mode_1 --;
  121. }
  122. if (button() == "D") {
  123. wait();
  124. mode_1 ++;
  125. }
  126.  
  127. if (mode_1 == 3) {
  128. mode = 1;
  129. }
  130.  
  131. if (button() == "S" && mode_1 == 1) {
  132. wait();
  133. mode = 10;
  134. }
  135. if (button() == "S" && mode_1 == 2) {
  136. wait();
  137. mode = 11;
  138. }
  139. break;
  140. case 1:
  141. lcd.setCursor(0, 0);
  142. lcd.print("BUTTON RELAY ");
  143. lcd.setCursor(0, 1);
  144. lcd.print("SETTINGS ");
  145.  
  146. if (mode_1 == 3) {
  147. lcd.setCursor(13, 0);
  148. lcd.write(byte(0));
  149. lcd.setCursor(9, 1);
  150. lcd.print(" ");
  151. }
  152. if (mode_1 == 4) {
  153. lcd.setCursor(9, 1);
  154. lcd.write(byte(0));
  155. lcd.setCursor(13, 0);
  156. lcd.print(" ");
  157. }
  158.  
  159. if (button() == "U") {
  160. wait();
  161. mode_1 --;
  162. }
  163. if (button() == "D") {
  164. wait();
  165. mode_1 ++;
  166. }
  167.  
  168. if (mode_1 == 2) {
  169. mode = 0;
  170. }
  171.  
  172. if (button() == "S" && mode_1 == 3) {
  173. wait();
  174. mode = 13;
  175. }
  176. if (button() == "S" && mode_1 == 4) {
  177. wait();
  178. mode = 100;
  179. }
  180. break;
  181. case 10:
  182. lcd.setCursor(0, 0);
  183. lcd.print("Battery");
  184. lcd.setCursor(12, 0);
  185. lcd.print("Temp");
  186.  
  187. if (info_1 == 1) {
  188. lcd.setCursor(8, 0);
  189. lcd.write(byte(0));
  190. } else {
  191. lcd.setCursor(10, 0);
  192. lcd.write(byte(1));
  193. }
  194.  
  195. if (!conn) {
  196. lcd.setCursor(0, 1);
  197. lcd.print("NO CONNECTION ");
  198. } else {
  199. if (info_1 == 1) {
  200. lcd.setCursor(0, 1);
  201. lcd.print(RX.Volt, 1);
  202. lcd.print("V ");
  203. lcd.setCursor(12, 1);
  204. lcd.print(RX.Level);
  205. lcd.print("%");
  206. } else {
  207. lcd.setCursor(0, 1);
  208. lcd.print("T:");
  209. lcd.print(RX.temperature);
  210. lcd.print("C ");
  211. lcd.setCursor(11, 1);
  212. lcd.print("H:");
  213. lcd.print(RX.humidity);
  214. lcd.print("%");
  215. }
  216. }
  217.  
  218. if (button() == "D") {
  219. wait();
  220. mode = 0;
  221. }
  222.  
  223. if (button() == "L") {
  224. wait();
  225. info_1 --;
  226. }
  227. if (button() == "R") {
  228. wait();
  229. info_1 ++;
  230. }
  231.  
  232. break;
  233. case 11:
  234. switch (relay) {
  235. case 1:
  236. lcd.setCursor(0, 0);
  237. lcd.print("BACK ");
  238. lcd.setCursor(0, 1);
  239. lcd.print("RELAY 1");
  240.  
  241. if (relay_1 == 1) {
  242. lcd.setCursor(5, 0);
  243. lcd.write(byte(0));
  244. lcd.setCursor(8, 1);
  245. lcd.print(" ");
  246. }
  247. if (relay_1 == 2) {
  248. lcd.setCursor(8, 1);
  249. lcd.write(byte(0));
  250. lcd.setCursor(5, 0);
  251. lcd.print(" ");
  252. }
  253.  
  254. if (relay_1 == 3) {
  255. relay = 2;
  256. }
  257.  
  258. if (button() == "U") {
  259. wait();
  260. relay_1 --;
  261. }
  262. if (button() == "D") {
  263. wait();
  264. relay_1 ++;
  265. }
  266.  
  267. if (button() == "S" && relay_1 == 1) {
  268. wait();
  269. mode = 0;
  270. }
  271. if (button() == "S" && relay_1 == 2) {
  272. wait();
  273. relay = 10;
  274. }
  275.  
  276. break;
  277. case 2:
  278. lcd.setCursor(0, 0);
  279. lcd.print("RELAY 2");
  280. lcd.setCursor(0, 1);
  281. lcd.print("RELAY 3");
  282.  
  283. if (relay_1 == 3) {
  284. lcd.setCursor(8, 0);
  285. lcd.write(byte(0));
  286. lcd.setCursor(8, 1);
  287. lcd.print(" ");
  288. }
  289. if (relay_1 == 4) {
  290. lcd.setCursor(8, 1);
  291. lcd.write(byte(0));
  292. lcd.setCursor(8, 0);
  293. lcd.print(" ");
  294. }
  295.  
  296. if (relay_1 == 2) {
  297. relay = 1;
  298. }
  299. if (relay_1 == 5) {
  300. relay = 3;
  301. }
  302.  
  303. if (button() == "U") {
  304. wait();
  305. relay_1 --;
  306. }
  307. if (button() == "D") {
  308. wait();
  309. relay_1 ++;
  310. }
  311.  
  312. if (button() == "S" && relay_1 == 3) {
  313. wait();
  314. relay = 11;
  315. }
  316. if (button() == "S" && relay_1 == 4) {
  317. wait();
  318. relay = 12;
  319. }
  320. break;
  321. case 3:
  322. lcd.setCursor(0, 0);
  323. lcd.print("RELAY 4");
  324. lcd.setCursor(0, 1);
  325. lcd.print("ALL OFF");
  326.  
  327. if (relay_1 == 5) {
  328. lcd.setCursor(8, 0);
  329. lcd.write(byte(0));
  330. lcd.setCursor(8, 1);
  331. lcd.print(" ");
  332. }
  333. if (relay_1 == 6) {
  334. lcd.setCursor(8, 1);
  335. lcd.write(byte(0));
  336. lcd.setCursor(8, 0);
  337. lcd.print(" ");
  338. }
  339.  
  340. if (relay_1 == 4) {
  341. relay = 2;
  342. }
  343.  
  344. if (button() == "U") {
  345. wait();
  346. relay_1 --;
  347. }
  348. if (button() == "D") {
  349. wait();
  350. relay_1 ++;
  351. }
  352.  
  353. if (button() == "S" && relay_1 == 5) {
  354. wait();
  355. relay = 13;
  356. }
  357. if (button() == "S" && relay_1 == 6) {
  358. wait();
  359. TX.R1 = false;
  360. TX.R2 = false;
  361. TX.R3 = false;
  362. TX.R4 = false;
  363. }
  364. break;
  365. case 10:
  366. if (button() == "L") {
  367. wait();
  368. TX.R1 = false;
  369. }
  370. if (button() == "R") {
  371. wait();
  372. TX.R1 = true;
  373. }
  374.  
  375. lcd.setCursor(4, 0);
  376. lcd.print("Relay 1");
  377. lcd.setCursor(0, 1);
  378. lcd.print("OFF");
  379. lcd.setCursor(14, 1);
  380. lcd.print("ON");
  381.  
  382. if (TX.R1 == false) {
  383. lcd.setCursor(3, 1);
  384. lcd.write(byte(0));
  385. lcd.setCursor(13, 1);
  386. lcd.print(" ");
  387. }
  388. if (TX.R1 == true) {
  389. lcd.setCursor(13, 1);
  390. lcd.write(byte(1));
  391. lcd.setCursor(3, 1);
  392. lcd.print(" ");
  393. }
  394.  
  395. if (button() == "D") {
  396. wait();
  397. relay = 1;
  398. }
  399. break;
  400. case 11:
  401. if (button() == "L") {
  402. wait();
  403. TX.R2 = false;
  404. }
  405. if (button() == "R") {
  406. wait();
  407. TX.R2 = true;
  408. }
  409.  
  410. lcd.setCursor(4, 0);
  411. lcd.print("Relay 2");
  412. lcd.setCursor(0, 1);
  413. lcd.print("OFF");
  414. lcd.setCursor(14, 1);
  415. lcd.print("ON");
  416.  
  417. if (TX.R2 == false) {
  418. lcd.setCursor(3, 1);
  419. lcd.write(byte(0));
  420. lcd.setCursor(13, 1);
  421. lcd.print(" ");
  422. }
  423. if (TX.R2 == true) {
  424. lcd.setCursor(13, 1);
  425. lcd.write(byte(1));
  426. lcd.setCursor(3, 1);
  427. lcd.print(" ");
  428. }
  429.  
  430.  
  431. if (button() == "D") {
  432. wait();
  433. relay = 2;
  434. }
  435. break;
  436. case 12:
  437. if (button() == "L") {
  438. wait();
  439. TX.R3 = false;
  440. }
  441. if (button() == "R") {
  442. wait();
  443. TX.R3 = true;
  444. }
  445.  
  446. lcd.setCursor(4, 0);
  447. lcd.print("Relay 3");
  448. lcd.setCursor(0, 1);
  449. lcd.print("OFF");
  450. lcd.setCursor(14, 1);
  451. lcd.print("ON");
  452.  
  453. if (TX.R3 == false) {
  454. lcd.setCursor(3, 1);
  455. lcd.write(byte(0));
  456. lcd.setCursor(13, 1);
  457. lcd.print(" ");
  458. }
  459. if (TX.R3 == true) {
  460. lcd.setCursor(13, 1);
  461. lcd.write(byte(1));
  462. lcd.setCursor(3, 1);
  463. lcd.print(" ");
  464. }
  465.  
  466.  
  467. if (button() == "D") {
  468. wait();
  469. relay = 2;
  470. }
  471. break;
  472. case 13:
  473. if (button() == "L") {
  474. wait();
  475. TX.R4 = false;
  476. }
  477. if (button() == "R") {
  478. wait();
  479. TX.R4 = true;
  480. }
  481.  
  482. lcd.setCursor(4, 0);
  483. lcd.print("Relay 4");
  484. lcd.setCursor(0, 1);
  485. lcd.print("OFF");
  486. lcd.setCursor(14, 1);
  487. lcd.print("ON");
  488.  
  489. if (TX.R4 == false) {
  490. lcd.setCursor(3, 1);
  491. lcd.write(byte(0));
  492. lcd.setCursor(13, 1);
  493. lcd.print(" ");
  494. }
  495. if (TX.R4 == true) {
  496. lcd.setCursor(13, 1);
  497. lcd.write(byte(1));
  498. lcd.setCursor(3, 1);
  499. lcd.print(" ");
  500. }
  501.  
  502.  
  503. if (button() == "D") {
  504. wait();
  505. relay = 3;
  506. }
  507. break;
  508. }
  509. break;
  510. case 100:
  511. switch (settings) {
  512. case 1:
  513. lcd.setCursor(0, 0);
  514. lcd.print("BACK");
  515. lcd.setCursor(0, 1);
  516. lcd.print("BRIGHTNESS");
  517.  
  518. if (settings_1 == 1) {
  519. lcd.setCursor(5, 0);
  520. lcd.write(byte(0));
  521. lcd.setCursor(11, 1);
  522. lcd.print(" ");
  523. }
  524. if (settings_1 == 2) {
  525. lcd.setCursor(11, 1);
  526. lcd.write(byte(0));
  527. lcd.setCursor(5, 0);
  528. lcd.print(" ");
  529. }
  530. if (button() == "U") {
  531. wait();
  532. settings_1 --;
  533. }
  534. if (button() == "D") {
  535. wait();
  536. settings_1 ++;
  537. }
  538.  
  539. if (button() == "S" && settings_1 == 1) {
  540. wait();
  541. mode = 1;
  542. }
  543. if (button() == "S" && settings_1 == 2) {
  544. wait();
  545. settings = 10;
  546. }
  547.  
  548. if (settings_1 == 3) {
  549. settings = 2;
  550. }
  551. break;
  552.  
  553. case 2:
  554. lcd.setCursor(0, 0);
  555. lcd.print("BUTTONS");
  556. lcd.setCursor(0, 1);
  557. lcd.print("TIME ON");
  558.  
  559. if (settings_1 == 3) {
  560. lcd.setCursor(8, 0);
  561. lcd.write(byte(0));
  562. lcd.setCursor(8, 1);
  563. lcd.print(" ");
  564. }
  565. if (settings_1 == 4) {
  566. lcd.setCursor(8, 1);
  567. lcd.write(byte(0));
  568. lcd.setCursor(8, 0);
  569. lcd.print(" ");
  570. }
  571. if (button() == "U") {
  572. wait();
  573. settings_1 --;
  574. }
  575. if (button() == "D") {
  576. wait();
  577. settings_1 ++;
  578. }
  579.  
  580. if (button() == "S" && settings_1 == 3) {
  581. wait();
  582. settings = 11;
  583. }
  584. if (button() == "S" && settings_1 == 4) {
  585. wait();
  586. settings = 12;
  587. }
  588.  
  589. if (settings_1 == 2) {
  590. settings = 1;
  591. }
  592. break;
  593. case 10:
  594. lcd.setCursor(0, 0);
  595. lcd.print("BRIGHTNESS:");
  596. lcd.setCursor(11, 0);
  597. lcd.print(brightness);
  598. lcd.setCursor(0, 1);
  599. lcd.print("LB:MIN RB:MAX");
  600.  
  601. if (button() == "U") {
  602. wait();
  603. brightness += 1;
  604. }
  605. if (button() == "D") {
  606. wait();
  607. brightness -= 1;
  608. }
  609. if (button() == "L") {
  610. wait();
  611. brightness = 0;
  612. }
  613. if (button() == "R") {
  614. wait();
  615. brightness = 20;
  616. }
  617. if (button() == "S") {
  618. wait();
  619. settings = 1;
  620. }
  621. break;
  622. case 11:
  623. if (button() != "N") {
  624. lcd.clear();
  625. lcd.setCursor(0, 0);
  626. lcd.print(button());
  627. lcd.setCursor(0, 1);
  628. lcd.print(analogRead(A0));
  629. wait();
  630. lcd.clear();
  631. } else {
  632. lcd.setCursor(0, 0);
  633. lcd.print("PUSH BUTTON");
  634. lcd.setCursor(0, 1);
  635. lcd.print("NO RESET");
  636. }
  637. break;
  638. case 12:
  639. lcd.setCursor(0, 0);
  640. lcd.print("TIME ON");
  641. lcd.setCursor(0, 1);
  642. lcd.print(millis() / 1000);
  643. lcd.print(":S");
  644.  
  645. if (button() == "D") {
  646. wait();
  647. settings = 2;
  648. }
  649. break;
  650. }
  651. break;
  652. case 13:
  653. lcd.setCursor(0, 0);
  654. lcd.print("R1:");
  655. if (TX.R1) lcd.print("ON");
  656. else lcd.print("OFF");
  657.  
  658. lcd.setCursor(0, 1);
  659. lcd.print("R2:");
  660. if (TX.R2) lcd.print("ON");
  661. else lcd.print("OFF");
  662.  
  663. lcd.setCursor(8, 0);
  664. lcd.print("R3:");
  665. if (TX.R3) lcd.print("ON");
  666. else lcd.print("OFF");
  667.  
  668. lcd.setCursor(8, 1);
  669. lcd.print("R4:");
  670. if (TX.R4) lcd.print("ON");
  671. else lcd.print("OFF");
  672.  
  673. if (button() == "L") {
  674. wait();
  675. TX.R1 = !TX.R1;
  676. }
  677. if (button() == "U") {
  678. wait();
  679. TX.R2 = !TX.R2;
  680. }
  681. if (button() == "D") {
  682. wait();
  683. TX.R3 = !TX.R3;
  684. }
  685. if (button() == "R") {
  686. wait();
  687. TX.R4 = !TX.R4;
  688. }
  689.  
  690.  
  691. if (button() == "S") {
  692. wait();
  693. mode = 1;
  694. }
  695. break;
  696. }
  697.  
  698. if (ETin.receiveData()) {
  699. ms = millis();
  700. conn = true;
  701. delay(10);
  702. TX.done = millis() / 1000;
  703. ETout.sendData();
  704. }
  705. if (millis() - ms > 250) {
  706. conn = false;
  707. }
  708. delay(10);
  709. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement