Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <LCDKeypad.h>
- #define UP 1
- #define DOWN 0
- #define COM1 0
- #define COM2 1
- #define COM3 2
- #define AR 4
- LCDKeypad lcd;
- int i = 0;
- int j = 1;
- int menu_find = 0;
- int menu_option;
- bool estado_ar[3] = {0,0,0};
- bool estado_w[3] = {0,0,0};
- int warmer[6]; //definir portas dos resistores de potencia
- int cooler[6]; //definir portas dos coolers
- int temp[3] = {A12, A13, A14}; //definir portas dos sensores de temperatura
- String nomes[5] = {"COMODO 1", "COMODO 2", "COMODO 3", "OUTSIDE", "CONTROLE IR"};
- int n = 5;
- String opc[4] = {"TEMPERATURA", "ON/OFF AIR", "ON/OFF WARMER", "VOLTAR"};
- void setup() {
- lcd.begin(16,2);
- Serial.begin(9600);
- while(lcd.button()!= KEYPAD_SELECT){
- lcd.print("Selecione o");
- lcd.setCursor(0, 1);
- lcd.print("comodo (SELECT) ");
- }
- delay(200);
- lcd.clear();
- menu();
- }
- void loop() {
- for(int k = 0; k < 6; k+=2){
- if(estado_ar[i/2] == 1){
- digitalWrite(cooler[i], HIGH);
- digitalWrite(cooler[i+1], LOW);
- }
- else{
- digitalWrite(cooler[i], LOW);
- digitalWrite(cooler[i+1], LOW);
- }
- if(estado_w[i/2] == 1){
- digitalWrite(warmer[i], HIGH);
- digitalWrite(warmer[i+1], LOW);
- }
- else{
- digitalWrite(warmer[i], LOW);
- digitalWrite(warmer[i+1], LOW);
- }
- }
- switch (lcd.button()) {
- case KEYPAD_DOWN:
- if(menu_find == 0){
- n = 5;
- }
- else if(menu_find == 1){
- n = 4;
- }
- if(i < n - 2 && j == DOWN){
- i = i + 1;
- }
- j = DOWN;
- menu();
- delay(200);
- break;
- case KEYPAD_UP:
- if(i > 0 && j == UP){
- i = i - 1;
- }
- j = UP;
- menu();
- delay(200);
- break;
- case KEYPAD_SELECT:
- if(j == DOWN){
- if(menu_find == 0){
- fn(i + 1);
- }
- else if(menu_find == 1){
- opcoes(i + 1);
- }
- }
- else if(j == UP){
- if(menu_find == 0){
- fn(i);
- }
- else if(menu_find == 1){
- opcoes(i);
- }
- }
- if(menu_find == 2){
- //codigo da luz vem aqui
- }
- delay(200);
- break;
- default:
- break;
- }
- }
- void menu(){
- lcd.clear();
- lcd.setCursor(0, 0);
- if(menu_find == 0){
- lcd.print(nomes[i]);
- }
- if(menu_find == 1){
- lcd.print(opc[i]);
- }
- if(j == 1){
- lcd.print(" <");
- }
- lcd.setCursor(0, 1);
- if(menu_find == 0){
- lcd.print(nomes[i+1]);
- }
- if(menu_find == 1){
- lcd.print(opc[i+1]);
- }
- if(j == 0){
- lcd.print(" <");
- }
- if(menu_find == 2){
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("VOCE ENTROU NO");
- }
- }
- void fn(int x){
- j = 1;
- menu_find = 1;
- i = 0;
- switch (x){
- case 0:
- menu_option = 0;
- break;
- case 1:
- menu_option = 1;
- break;
- case 2:
- menu_option = 2;
- break;
- case 3:
- menu_option = 3;
- break;
- case 4:
- menu_find = 2;
- break;
- }
- menu();
- }
- void opcoes(int x){
- switch (x){
- case 0:
- mostrarT(menu_option);
- break;
- case 1:
- ligarAr(menu_option);
- break;
- case 2:
- ligarW(menu_option);
- break;
- case 3:
- j = 1;
- menu_find = 0;
- i = 0;
- menu();
- break;
- default:
- break;
- }
- }
- void mostrarT(int menu_opt){
- while(lcd.button() != KEYPAD_LEFT){
- delay(150);
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("T = ");
- lcd.print(analogRead(temp[menu_opt])*0.48828125);
- Serial.println(analogRead(temp[menu_opt])*0.48828125);
- lcd.print("*C");
- lcd.setCursor(0, 1);
- lcd.print("<-- HOLD LEFT");
- }
- menu();
- }
- void ligarAr(int menu_opt){
- if(menu_opt == 3){
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("404");
- delay(1000);
- }
- else if(estado_ar[menu_opt] == 0){
- estado_ar[menu_opt] = 1;
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("ON");
- delay(1000);
- }
- else{
- estado_ar[menu_opt] = 0;
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("OFF");
- delay(1000);
- }
- menu();
- }
- void ligarW(int menu_opt){
- if(menu_opt == 3){
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("404");
- delay(1000);
- }
- else if(estado_w[menu_opt] == 0){
- estado_w[menu_opt] = 1;
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("ON");
- delay(1000);
- }
- else{
- estado_w[menu_opt] = 0;
- lcd.clear();
- lcd.setCursor(7, 0);
- lcd.print("OFF");
- delay(1000);
- }
- menu();
- }
Add Comment
Please, Sign In to add comment