Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Keypad.h>//biblioteca para controle do teclado de membrana.
- #include <DallasTemperature.h>//biblioteca para controle da temperatura que o sensor está medindo.
- #include <Wire.h>//biblioteca para controle da temperatura que o sensor está medindo.
- #include <LiquidCrystal_I2C.h>//biblioteca para utilização do display 16x2 com o modulo I2C.
- int menortemp=999;//controle de temperatura.
- int menortemp2=999;//controle de temperatura.
- int tempatual=0;//controle de temperatura.
- int tempatual2=0;//controle de temperatura.
- int controleTempo=0;//controle de tempo de banho.
- int total;
- int resistencia=13;//porta digital que contola as ações referentes a resistencia.
- int valvulaQuente=10;//porta digital que contola as ações referentes a valvula de agua quente.
- int valvulaFria=11;//porta digital que contola as ações referentes a valvula de agua fria.
- int buzzer=12;//porta digital que contola as ações referentes ao buzzer.
- int minB=35;//variavel de controle dos minutos de banho.
- int tempoPadrao=0;//tempo padrão do banho.
- int banho=10;//variavel de exibição de tempo.
- int termino=0,termino2=0;//controle de ações.
- int imprimeTemp=1;
- int controle=0,controle2=0,controle3=0;
- int o=1;
- float temp1 = 0;
- float temp2 = 0;
- long previousMillis = 0; // Variável de controle do tempo
- long redLedInterval = 5000; // Tempo em ms do intervalo a ser executado
- char state = 1; // variável que guarda posição atual do menu
- OneWire oneWire(14);
- DallasTemperature sensors(&oneWire);//endereço de memoria que auxiliará o sensor a medir as temperaturas.
- DeviceAddress address1 = {0x28, 0xFF, 0x2C, 0xA0, 0x94, 0x16, 0x5, 0xF7};//ENDEREÇO DO SENSOR 1
- DeviceAddress address2 = {0x28, 0xFF, 0xED, 0x93, 0x94, 0x16, 0x5, 0xD8};//ENDEREÇO DO SENSOR 2
- const byte LINHAS = 4;
- const byte COLUNAS = 4;
- //Matriz de caracteres
- char matriz_teclas[LINHAS][COLUNAS] =
- {
- {'1','2','3','A'},
- {'4','5','6','B'},
- {'7','8','9','C'},
- {'*','0','#','D'},
- };
- //Definicao dos pinos das linhas
- byte PinosLinhas[LINHAS] = {4, 5, 6, 7};
- //Definicao dos pinos das colunas
- byte PinosColunas[COLUNAS] = {8, 9, 10,11};
- unsigned long numeroSelecionado = 35;//variavel de conversão do teclado de caracter para inteiro.
- unsigned long tempoSelecionado = 0;//variavel de conversão do teclado de caracter para inteiro.
- Keypad teclado = Keypad( makeKeymap(matriz_teclas), PinosLinhas,
- PinosColunas, LINHAS, COLUNAS);
- LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);//caminho trilhado para ativação do display.
- void setup() {
- lcd.begin(16,2);
- Serial.begin(9600);
- //splash
- lcd.setCursor(0,0);
- lcd.print("CHUVEIRO AUTOMAT");
- lcd.setCursor(0,1);
- lcd.print("TCC 2 - WEMERSON");
- delay(2000);
- lcd.clear();
- // Configura o status das portas digitais
- pinMode(resistencia,OUTPUT);
- pinMode(valvulaQuente,OUTPUT);
- pinMode(valvulaFria,OUTPUT);
- pinMode(buzzer,OUTPUT);
- digitalWrite(resistencia,HIGH);
- digitalWrite(valvulaQuente,HIGH);
- digitalWrite(valvulaFria,HIGH);
- digitalWrite(buzzer,LOW);
- tempoPadrao=(10*60);//definindo o tempo padrão do banho convertendo 10 minutos para 600 segundos.
- }
- void loop() {
- sensors.requestTemperatures(); //envía el comando para obtener las temperaturas
- temp1= sensors.getTempC(address1);//Se obtiene la temperatura en °C del sensor 1
- temp2= sensors.getTempC(address2);//Se obtiene la temperatura en °C del sensor 2
- // char teclaPressionada = teclado.getKey();//leitura da temperatura que o usuario deseja tomar o banho. 'A'
- switch (state) {
- case 1: //DIGITE A TEMPERATURA
- switch (CheckButton()) { // TODA A INFORMAÇÃO DEVE VIM DE "char CheckButton"
- case 'A': // O MENU DESTE CASE ESTA NA SEGUNDA ESTANCIA DO CASE
- tone(buzzer, 1500, 50); // FAZ BEEP
- Set_state(2); //SE APERTAR O "A" SETA "Set_state(2);" E VAI PARA O MENU 2
- break;
- default:
- Set_state(1); // MANTEM O LOOP NO CASE 1
- }
- break;
- case 2: //DIGITE TEMPO DE BANHO
- switch (CheckButton()) {
- case 'A':
- tone(buzzer, 1500, 50);
- break;
- default:
- Set_state(2);
- }
- break;
- case 3: //MONITOR DE BANHO
- switch (CheckButton()) {
- case 'C':
- tone(buzzer, 1500, 50);
- break;
- default:
- Set_state(3);
- }
- break;
- default: ;
- }
- }
- char CheckButton()
- {
- char teclaPressionada = teclado.getKey();//LEITURA DO TECLADO
- }
- void Set_state(char index) {
- state = index; // Atualiza a variável state para a nova tela
- switch (state) { // verifica qual a tela atual e exibe o conteúdo correspondente
- case 1: //==================== state 1
- lcd.setCursor(0,0); //MENU DO CASE 1
- lcd.print("DIGITE TEMP. OU ");
- lcd.setCursor(0,1);
- lcd.print("CONFIRME:");
- lcd.print(numeroSelecionado);
- lcd.write(223);
- lcd.print(" > A");
- break;
- case 2: //==================== state 2
- lcd.setCursor(0,0);
- lcd.print("DIGITE TEMPO OU ");
- lcd.setCursor(0,1);
- lcd.print("CONFIRME:");
- lcd.print(numeroSelecionado);
- lcd.write(223);
- lcd.print(" > A");
- break;
- case 3: //==================== state 3
- break;
- default: ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement