Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <EasyTransfer.h>
- EasyTransfer ETin, ETout;
- LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
- byte arrow_left[8] = {
- 0b00010,
- 0b00100,
- 0b01000,
- 0b11111,
- 0b01000,
- 0b00100,
- 0b00010,
- 0b00000
- };
- byte arrow_right[8] = {
- 0b01000,
- 0b00100,
- 0b00010,
- 0b11111,
- 0b00010,
- 0b00100,
- 0b01000,
- 0b00000
- };
- struct SEND_DATA_STRUCTURE {
- unsigned long done;
- bool R1 = false;
- bool R2 = false;
- bool R3 = false;
- bool R4 = false;
- };
- struct RECEIVE_DATA_STRUCTURE {
- float Volt = 0;
- int Level = 0;
- byte temperature = 0;
- byte humidity = 0;
- };
- RECEIVE_DATA_STRUCTURE RX;
- SEND_DATA_STRUCTURE TX;
- bool conn = false;
- unsigned long ms = 0;
- int mode = 0;
- int mode_1 = 1;
- int info_1 = 1;
- int relay = 1;
- int relay_1 = 1;
- int settings_1 = 1;
- int settings = 1;
- int brightness = 20;
- String button() {
- int x = analogRead(A0);
- if (x < 50) return "R";
- else if (x < 150) return "U";
- else if (x < 400) return "D";
- else if (x < 500) return "L";
- else if (x < 800) return "S";
- else return "N";
- }
- void wait() {
- while (button() != "N")
- lcd.clear();
- }
- void setup() {
- Serial.begin(9600);
- ETout.begin(details(TX), &Serial);
- ETin.begin(details(RX), &Serial);
- lcd.begin(16, 2);
- lcd.createChar(0, arrow_left);
- lcd.createChar(1, arrow_right);
- lcd.clear();
- pinMode(A0, INPUT);
- pinMode(10, OUTPUT);
- }
- void loop() {
- mode_1 = constrain(mode_1, 1, 4);
- info_1 = constrain(info_1, 1, 2);
- relay_1 = constrain(relay_1, 1, 6);
- settings_1 = constrain(settings_1, 1, 4);
- brightness = constrain(brightness, 0, 20);
- analogWrite(10, map(brightness, 0, 20, 0, 255));
- switch (mode) {
- case 0:
- lcd.setCursor(0, 0);
- lcd.print("INFO ");
- lcd.setCursor(0, 1);
- lcd.print("RELAY ");
- if (mode_1 == 1) {
- lcd.setCursor(5, 0);
- lcd.write(byte(0));
- lcd.setCursor(6, 1);
- lcd.print(" ");
- }
- if (mode_1 == 2) {
- lcd.setCursor(6, 1);
- lcd.write(byte(0));
- lcd.setCursor(5, 0);
- lcd.print(" ");
- }
- if (button() == "U") {
- wait();
- mode_1 --;
- }
- if (button() == "D") {
- wait();
- mode_1 ++;
- }
- if (mode_1 == 3) {
- mode = 1;
- }
- if (button() == "S" && mode_1 == 1) {
- wait();
- mode = 10;
- }
- if (button() == "S" && mode_1 == 2) {
- wait();
- mode = 11;
- }
- break;
- case 1:
- lcd.setCursor(0, 0);
- lcd.print("BUTTON RELAY ");
- lcd.setCursor(0, 1);
- lcd.print("SETTINGS ");
- if (mode_1 == 3) {
- lcd.setCursor(13, 0);
- lcd.write(byte(0));
- lcd.setCursor(9, 1);
- lcd.print(" ");
- }
- if (mode_1 == 4) {
- lcd.setCursor(9, 1);
- lcd.write(byte(0));
- lcd.setCursor(13, 0);
- lcd.print(" ");
- }
- if (button() == "U") {
- wait();
- mode_1 --;
- }
- if (button() == "D") {
- wait();
- mode_1 ++;
- }
- if (mode_1 == 2) {
- mode = 0;
- }
- if (button() == "S" && mode_1 == 3) {
- wait();
- mode = 13;
- }
- if (button() == "S" && mode_1 == 4) {
- wait();
- mode = 100;
- }
- break;
- case 10:
- lcd.setCursor(0, 0);
- lcd.print("Battery");
- lcd.setCursor(12, 0);
- lcd.print("Temp");
- if (info_1 == 1) {
- lcd.setCursor(8, 0);
- lcd.write(byte(0));
- } else {
- lcd.setCursor(10, 0);
- lcd.write(byte(1));
- }
- if (!conn) {
- lcd.setCursor(0, 1);
- lcd.print("NO CONNECTION ");
- } else {
- if (info_1 == 1) {
- lcd.setCursor(0, 1);
- lcd.print(RX.Volt, 1);
- lcd.print("V ");
- lcd.setCursor(12, 1);
- lcd.print(RX.Level);
- lcd.print("%");
- } else {
- lcd.setCursor(0, 1);
- lcd.print("T:");
- lcd.print(RX.temperature);
- lcd.print("C ");
- lcd.setCursor(11, 1);
- lcd.print("H:");
- lcd.print(RX.humidity);
- lcd.print("%");
- }
- }
- if (button() == "D") {
- wait();
- mode = 0;
- }
- if (button() == "L") {
- wait();
- info_1 --;
- }
- if (button() == "R") {
- wait();
- info_1 ++;
- }
- break;
- case 11:
- switch (relay) {
- case 1:
- lcd.setCursor(0, 0);
- lcd.print("BACK ");
- lcd.setCursor(0, 1);
- lcd.print("RELAY 1");
- if (relay_1 == 1) {
- lcd.setCursor(5, 0);
- lcd.write(byte(0));
- lcd.setCursor(8, 1);
- lcd.print(" ");
- }
- if (relay_1 == 2) {
- lcd.setCursor(8, 1);
- lcd.write(byte(0));
- lcd.setCursor(5, 0);
- lcd.print(" ");
- }
- if (relay_1 == 3) {
- relay = 2;
- }
- if (button() == "U") {
- wait();
- relay_1 --;
- }
- if (button() == "D") {
- wait();
- relay_1 ++;
- }
- if (button() == "S" && relay_1 == 1) {
- wait();
- mode = 0;
- }
- if (button() == "S" && relay_1 == 2) {
- wait();
- relay = 10;
- }
- break;
- case 2:
- lcd.setCursor(0, 0);
- lcd.print("RELAY 2");
- lcd.setCursor(0, 1);
- lcd.print("RELAY 3");
- if (relay_1 == 3) {
- lcd.setCursor(8, 0);
- lcd.write(byte(0));
- lcd.setCursor(8, 1);
- lcd.print(" ");
- }
- if (relay_1 == 4) {
- lcd.setCursor(8, 1);
- lcd.write(byte(0));
- lcd.setCursor(8, 0);
- lcd.print(" ");
- }
- if (relay_1 == 2) {
- relay = 1;
- }
- if (relay_1 == 5) {
- relay = 3;
- }
- if (button() == "U") {
- wait();
- relay_1 --;
- }
- if (button() == "D") {
- wait();
- relay_1 ++;
- }
- if (button() == "S" && relay_1 == 3) {
- wait();
- relay = 11;
- }
- if (button() == "S" && relay_1 == 4) {
- wait();
- relay = 12;
- }
- break;
- case 3:
- lcd.setCursor(0, 0);
- lcd.print("RELAY 4");
- lcd.setCursor(0, 1);
- lcd.print("ALL OFF");
- if (relay_1 == 5) {
- lcd.setCursor(8, 0);
- lcd.write(byte(0));
- lcd.setCursor(8, 1);
- lcd.print(" ");
- }
- if (relay_1 == 6) {
- lcd.setCursor(8, 1);
- lcd.write(byte(0));
- lcd.setCursor(8, 0);
- lcd.print(" ");
- }
- if (relay_1 == 4) {
- relay = 2;
- }
- if (button() == "U") {
- wait();
- relay_1 --;
- }
- if (button() == "D") {
- wait();
- relay_1 ++;
- }
- if (button() == "S" && relay_1 == 5) {
- wait();
- relay = 13;
- }
- if (button() == "S" && relay_1 == 6) {
- wait();
- TX.R1 = false;
- TX.R2 = false;
- TX.R3 = false;
- TX.R4 = false;
- }
- break;
- case 10:
- if (button() == "L") {
- wait();
- TX.R1 = false;
- }
- if (button() == "R") {
- wait();
- TX.R1 = true;
- }
- lcd.setCursor(4, 0);
- lcd.print("Relay 1");
- lcd.setCursor(0, 1);
- lcd.print("OFF");
- lcd.setCursor(14, 1);
- lcd.print("ON");
- if (TX.R1 == false) {
- lcd.setCursor(3, 1);
- lcd.write(byte(0));
- lcd.setCursor(13, 1);
- lcd.print(" ");
- }
- if (TX.R1 == true) {
- lcd.setCursor(13, 1);
- lcd.write(byte(1));
- lcd.setCursor(3, 1);
- lcd.print(" ");
- }
- if (button() == "D") {
- wait();
- relay = 1;
- }
- break;
- case 11:
- if (button() == "L") {
- wait();
- TX.R2 = false;
- }
- if (button() == "R") {
- wait();
- TX.R2 = true;
- }
- lcd.setCursor(4, 0);
- lcd.print("Relay 2");
- lcd.setCursor(0, 1);
- lcd.print("OFF");
- lcd.setCursor(14, 1);
- lcd.print("ON");
- if (TX.R2 == false) {
- lcd.setCursor(3, 1);
- lcd.write(byte(0));
- lcd.setCursor(13, 1);
- lcd.print(" ");
- }
- if (TX.R2 == true) {
- lcd.setCursor(13, 1);
- lcd.write(byte(1));
- lcd.setCursor(3, 1);
- lcd.print(" ");
- }
- if (button() == "D") {
- wait();
- relay = 2;
- }
- break;
- case 12:
- if (button() == "L") {
- wait();
- TX.R3 = false;
- }
- if (button() == "R") {
- wait();
- TX.R3 = true;
- }
- lcd.setCursor(4, 0);
- lcd.print("Relay 3");
- lcd.setCursor(0, 1);
- lcd.print("OFF");
- lcd.setCursor(14, 1);
- lcd.print("ON");
- if (TX.R3 == false) {
- lcd.setCursor(3, 1);
- lcd.write(byte(0));
- lcd.setCursor(13, 1);
- lcd.print(" ");
- }
- if (TX.R3 == true) {
- lcd.setCursor(13, 1);
- lcd.write(byte(1));
- lcd.setCursor(3, 1);
- lcd.print(" ");
- }
- if (button() == "D") {
- wait();
- relay = 2;
- }
- break;
- case 13:
- if (button() == "L") {
- wait();
- TX.R4 = false;
- }
- if (button() == "R") {
- wait();
- TX.R4 = true;
- }
- lcd.setCursor(4, 0);
- lcd.print("Relay 4");
- lcd.setCursor(0, 1);
- lcd.print("OFF");
- lcd.setCursor(14, 1);
- lcd.print("ON");
- if (TX.R4 == false) {
- lcd.setCursor(3, 1);
- lcd.write(byte(0));
- lcd.setCursor(13, 1);
- lcd.print(" ");
- }
- if (TX.R4 == true) {
- lcd.setCursor(13, 1);
- lcd.write(byte(1));
- lcd.setCursor(3, 1);
- lcd.print(" ");
- }
- if (button() == "D") {
- wait();
- relay = 3;
- }
- break;
- }
- break;
- case 100:
- switch (settings) {
- case 1:
- lcd.setCursor(0, 0);
- lcd.print("BACK");
- lcd.setCursor(0, 1);
- lcd.print("BRIGHTNESS");
- if (settings_1 == 1) {
- lcd.setCursor(5, 0);
- lcd.write(byte(0));
- lcd.setCursor(11, 1);
- lcd.print(" ");
- }
- if (settings_1 == 2) {
- lcd.setCursor(11, 1);
- lcd.write(byte(0));
- lcd.setCursor(5, 0);
- lcd.print(" ");
- }
- if (button() == "U") {
- wait();
- settings_1 --;
- }
- if (button() == "D") {
- wait();
- settings_1 ++;
- }
- if (button() == "S" && settings_1 == 1) {
- wait();
- mode = 1;
- }
- if (button() == "S" && settings_1 == 2) {
- wait();
- settings = 10;
- }
- if (settings_1 == 3) {
- settings = 2;
- }
- break;
- case 2:
- lcd.setCursor(0, 0);
- lcd.print("BUTTONS");
- lcd.setCursor(0, 1);
- lcd.print("TIME ON");
- if (settings_1 == 3) {
- lcd.setCursor(8, 0);
- lcd.write(byte(0));
- lcd.setCursor(8, 1);
- lcd.print(" ");
- }
- if (settings_1 == 4) {
- lcd.setCursor(8, 1);
- lcd.write(byte(0));
- lcd.setCursor(8, 0);
- lcd.print(" ");
- }
- if (button() == "U") {
- wait();
- settings_1 --;
- }
- if (button() == "D") {
- wait();
- settings_1 ++;
- }
- if (button() == "S" && settings_1 == 3) {
- wait();
- settings = 11;
- }
- if (button() == "S" && settings_1 == 4) {
- wait();
- settings = 12;
- }
- if (settings_1 == 2) {
- settings = 1;
- }
- break;
- case 10:
- lcd.setCursor(0, 0);
- lcd.print("BRIGHTNESS:");
- lcd.setCursor(11, 0);
- lcd.print(brightness);
- lcd.setCursor(0, 1);
- lcd.print("LB:MIN RB:MAX");
- if (button() == "U") {
- wait();
- brightness += 1;
- }
- if (button() == "D") {
- wait();
- brightness -= 1;
- }
- if (button() == "L") {
- wait();
- brightness = 0;
- }
- if (button() == "R") {
- wait();
- brightness = 20;
- }
- if (button() == "S") {
- wait();
- settings = 1;
- }
- break;
- case 11:
- if (button() != "N") {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print(button());
- lcd.setCursor(0, 1);
- lcd.print(analogRead(A0));
- wait();
- lcd.clear();
- } else {
- lcd.setCursor(0, 0);
- lcd.print("PUSH BUTTON");
- lcd.setCursor(0, 1);
- lcd.print("NO RESET");
- }
- break;
- case 12:
- lcd.setCursor(0, 0);
- lcd.print("TIME ON");
- lcd.setCursor(0, 1);
- lcd.print(millis() / 1000);
- lcd.print(":S");
- if (button() == "D") {
- wait();
- settings = 2;
- }
- break;
- }
- break;
- case 13:
- lcd.setCursor(0, 0);
- lcd.print("R1:");
- if (TX.R1) lcd.print("ON");
- else lcd.print("OFF");
- lcd.setCursor(0, 1);
- lcd.print("R2:");
- if (TX.R2) lcd.print("ON");
- else lcd.print("OFF");
- lcd.setCursor(8, 0);
- lcd.print("R3:");
- if (TX.R3) lcd.print("ON");
- else lcd.print("OFF");
- lcd.setCursor(8, 1);
- lcd.print("R4:");
- if (TX.R4) lcd.print("ON");
- else lcd.print("OFF");
- if (button() == "L") {
- wait();
- TX.R1 = !TX.R1;
- }
- if (button() == "U") {
- wait();
- TX.R2 = !TX.R2;
- }
- if (button() == "D") {
- wait();
- TX.R3 = !TX.R3;
- }
- if (button() == "R") {
- wait();
- TX.R4 = !TX.R4;
- }
- if (button() == "S") {
- wait();
- mode = 1;
- }
- break;
- }
- if (ETin.receiveData()) {
- ms = millis();
- conn = true;
- delay(10);
- TX.done = millis() / 1000;
- ETout.sendData();
- }
- if (millis() - ms > 250) {
- conn = false;
- }
- delay(10);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement