Advertisement
Guest User

Untitled

a guest
Nov 6th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. #include <Keypad.h>//biblioteca para controle do teclado de membrana.
  2. #include <DallasTemperature.h>//biblioteca para controle da temperatura que o sensor está medindo.
  3. #include <Wire.h>//biblioteca para controle da temperatura que o sensor está medindo.
  4. #include <LiquidCrystal_I2C.h>//biblioteca para utilização do display 16x2 com o modulo I2C.
  5.  
  6. int menortemp=999;//controle de temperatura.
  7. int menortemp2=999;//controle de temperatura.
  8. int tempatual=0;//controle de temperatura.
  9. int tempatual2=0;//controle de temperatura.
  10. int controleTempo=0;//controle de tempo de banho.
  11. int total;
  12. int resistencia=13;//porta digital que contola as ações referentes a resistencia.
  13. int valvulaQuente=10;//porta digital que contola as ações referentes a valvula de agua quente.
  14. int valvulaFria=11;//porta digital que contola as ações referentes a valvula de agua fria.
  15. int buzzer=12;//porta digital que contola as ações referentes ao buzzer.
  16.  
  17. int minB=35;//variavel de controle dos minutos de banho.
  18. int tempoPadrao=0;//tempo padrão do banho.
  19. int banho=10;//variavel de exibição de tempo.
  20. int termino=0,termino2=0;//controle de ações.
  21. int imprimeTemp=1;
  22. int controle=0,controle2=0,controle3=0;
  23. int o=1;
  24. float temp1 = 0;
  25. float temp2 = 0;
  26.  
  27. long previousMillis = 0; // Variável de controle do tempo
  28. long redLedInterval = 5000; // Tempo em ms do intervalo a ser executado
  29.  
  30. char state = 1; // variável que guarda posição atual do menu
  31.  
  32. OneWire oneWire(14);
  33.  
  34. DallasTemperature sensors(&oneWire);//endereço de memoria que auxiliará o sensor a medir as temperaturas.
  35.  
  36. DeviceAddress address1 = {0x28, 0xFF, 0x2C, 0xA0, 0x94, 0x16, 0x5, 0xF7};//ENDEREÇO DO SENSOR 1
  37. DeviceAddress address2 = {0x28, 0xFF, 0xED, 0x93, 0x94, 0x16, 0x5, 0xD8};//ENDEREÇO DO SENSOR 2
  38.  
  39. const byte LINHAS = 4;
  40. const byte COLUNAS = 4;
  41.  
  42. //Matriz de caracteres
  43. char matriz_teclas[LINHAS][COLUNAS] =
  44. {
  45. {'1','2','3','A'},
  46. {'4','5','6','B'},
  47. {'7','8','9','C'},
  48. {'*','0','#','D'},
  49. };
  50.  
  51. //Definicao dos pinos das linhas
  52. byte PinosLinhas[LINHAS] = {4, 5, 6, 7};
  53. //Definicao dos pinos das colunas
  54. byte PinosColunas[COLUNAS] = {8, 9, 10,11};
  55.  
  56. unsigned long numeroSelecionado = 35;//variavel de conversão do teclado de caracter para inteiro.
  57. unsigned long tempoSelecionado = 0;//variavel de conversão do teclado de caracter para inteiro.
  58.  
  59. Keypad teclado = Keypad( makeKeymap(matriz_teclas), PinosLinhas,
  60. PinosColunas, LINHAS, COLUNAS);
  61.  
  62. LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7,3, POSITIVE);//caminho trilhado para ativação do display.
  63.  
  64.  
  65. void setup() {
  66.  
  67. lcd.begin(16,2);
  68. Serial.begin(9600);
  69. //splash
  70. lcd.setCursor(0,0);
  71. lcd.print("CHUVEIRO AUTOMAT");
  72. lcd.setCursor(0,1);
  73. lcd.print("TCC 2 - WEMERSON");
  74. delay(2000);
  75. lcd.clear();
  76. // Configura o status das portas digitais
  77. pinMode(resistencia,OUTPUT);
  78. pinMode(valvulaQuente,OUTPUT);
  79. pinMode(valvulaFria,OUTPUT);
  80. pinMode(buzzer,OUTPUT);
  81. digitalWrite(resistencia,HIGH);
  82. digitalWrite(valvulaQuente,HIGH);
  83. digitalWrite(valvulaFria,HIGH);
  84. digitalWrite(buzzer,LOW);
  85.  
  86. tempoPadrao=(10*60);//definindo o tempo padrão do banho convertendo 10 minutos para 600 segundos.
  87. }
  88.  
  89. void loop() {
  90.  
  91. sensors.requestTemperatures(); //envía el comando para obtener las temperaturas
  92. temp1= sensors.getTempC(address1);//Se obtiene la temperatura en °C del sensor 1
  93. temp2= sensors.getTempC(address2);//Se obtiene la temperatura en °C del sensor 2
  94.  
  95. // char teclaPressionada = teclado.getKey();//leitura da temperatura que o usuario deseja tomar o banho. 'A'
  96.  
  97. switch (state) {
  98. case 1: //DIGITE A TEMPERATURA
  99. switch (CheckButton()) { // TODA A INFORMAÇÃO DEVE VIM DE "char CheckButton"
  100. case 'A': // O MENU DESTE CASE ESTA NA SEGUNDA ESTANCIA DO CASE
  101. tone(buzzer, 1500, 50); // FAZ BEEP
  102. Set_state(2); //SE APERTAR O "A" SETA "Set_state(2);" E VAI PARA O MENU 2
  103. break;
  104. default:
  105. Set_state(1); // MANTEM O LOOP NO CASE 1
  106. }
  107. break;
  108.  
  109. case 2: //DIGITE TEMPO DE BANHO
  110. switch (CheckButton()) {
  111. case 'A':
  112. tone(buzzer, 1500, 50);
  113. break;
  114. default:
  115. Set_state(2);
  116. }
  117. break;
  118.  
  119. case 3: //MONITOR DE BANHO
  120. switch (CheckButton()) {
  121. case 'C':
  122. tone(buzzer, 1500, 50);
  123. break;
  124. default:
  125. Set_state(3);
  126. }
  127. break;
  128. default: ;
  129. }
  130. }
  131.  
  132. char CheckButton()
  133. {
  134. char teclaPressionada = teclado.getKey();//LEITURA DO TECLADO
  135. }
  136.  
  137. void Set_state(char index) {
  138. state = index; // Atualiza a variável state para a nova tela
  139. switch (state) { // verifica qual a tela atual e exibe o conteúdo correspondente
  140. case 1: //==================== state 1
  141. lcd.setCursor(0,0); //MENU DO CASE 1
  142. lcd.print("DIGITE TEMP. OU ");
  143. lcd.setCursor(0,1);
  144. lcd.print("CONFIRME:");
  145. lcd.print(numeroSelecionado);
  146. lcd.write(223);
  147. lcd.print(" > A");
  148. break;
  149. case 2: //==================== state 2
  150. lcd.setCursor(0,0);
  151. lcd.print("DIGITE TEMPO OU ");
  152. lcd.setCursor(0,1);
  153. lcd.print("CONFIRME:");
  154. lcd.print(numeroSelecionado);
  155. lcd.write(223);
  156. lcd.print(" > A");
  157. break;
  158.  
  159. case 3: //==================== state 3
  160. break;
  161. default: ;
  162. }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement