#include // incluindo o display lcd LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // definindo a pinagem do display lcd int ledPin = 3; // define ledPin com sendo pino 3 int var = 30; int i; // Variável auxiliar #define SAMPLES 500 //Número de amostras de temperaturas #define sensortemp 1 //Pino analógico em que estará conectado o sensor LM35 #define TEMPO_LEITURA 1000 //Intervalo entre cada leitura do sensor LM35 em milisegundos! OBS: 1000ms = 1s int tempvector[SAMPLES]; //Vetor que armazenará as temperaturas double tempSensor = 0.0; //Variável auxiliar int valAnalog = 0; // Variável para aramazenar a leitura do sensor LM35 int botLed = 2; // define botLed como sendo pino 2 int lcd_key = 0; // parametros para definir botões do display int adc_key_in = 0; // parametros para definir botões do display /* Define valores dos botões */ # define btnRIGHT 0 # define btnUP 1 # define btnDOWN 2 # define btnLEFT 3 # define btnSELECT 4 # define btnNONE 5 /*********** Lê os botões **************/ int read_LCD_buttons() { { adc_key_in = analogRead (0); // le o valor do sensor /*** Limites dos valores de cada botão *****/ if (adc_key_in <50) return btnRIGHT; if (adc_key_in <195) return btnUP; if (adc_key_in <380) return btnDOWN; if (adc_key_in <555) return btnLEFT; if (adc_key_in <790) return btnSELECT; return btnNONE; // Quando todos os outros falham, devolve este valor } } byte a[8]= {B00110,B01001,B00110,B00000,B00000,B00000,B00000,B00000,}; // Array que desenha o simbolo de grau void setup() { Serial.begin(9600); // Inicia comunicação serial, para uma eventual verificação na porta serial int i,k; // Variaveis auxiliares para função mover letreiro lcd.begin(16,2); // Define tamanho do dislay pinMode(ledPin, OUTPUT); // Define a função do pino citado pinMode(botLed, OUTPUT); // Define a função do pino citado lcd.clear(); // Limpa a tela lcd.print("Inicializando..."); // Imprime na tela lcd a mensagem descrita delay(1500); // Pausa em milisegundos lcd.setCursor(0,1); // Move o Cursor para coluna X linha lcd.print("..."); // Imprime na tela delay(800); // Pausa em milisegundos lcd.setCursor(3,1); // Move o cursor para: lcd.print("..."); // Imprime na tela delay(800); // Pausa em milisegundos lcd.setCursor(6,1); // Move o cursor para: lcd.print("..."); // Imprime na tela delay(800); // Pausa em milisegundos lcd.setCursor(9,1); // Move o cursor para: lcd.clear(); // Limpa a tela lcd.print(" CONTROLADOR"); // Imprime na tela lcd.setCursor(0,1); // Move o cursor para: lcd.print("DE TEMPERATURA"); // Imprime na tela delay(3000); // Pausa em milisegundos for (k=0;k<3;k++) // Função de que incrementa a quantidade de movimentos do letreiro { lcd.scrollDisplayLeft(); // Move a escrita para esquerda delay(250); // Pausa em milisegundos } for (i=0;i<3;i++) // Função de incremento, verifica se a condição chegou a seu limite { for (k=0;k<6;k++) // Função de incremento { lcd.scrollDisplayRight(); // Move a escrita para a direita delay(250); // Pausa em milisegundos } } lcd.clear(); // Limpa a tela // Limpa a tela lcd.print("LEITOR"); // Imprime na tela lcd.setCursor(2,1); // Move o cursor para: lcd.print("DIGITAL"); // Imprime na tela delay(3000); // Pausa em milisegundos lcd.clear(); // Limpa a tela } void loop() // Função loop ( Laço ) { for (int i=0; i <= SAMPLES; i++) // Incrementa i ate i = SAMPLES { valAnalog = analogRead(sensortemp); // Faz a leitura do pino analógico do sensor e armazena em valAnalog tempvector[i] =( 5.0 * valAnalog * 100.0)/1024.0; // Armazena as temperaturas num vetor de tamanho = SAMPLES tempSensor = tempSensor +tempvector[i]; // Soma as temperaturas e armazena em tempSensor } tempSensor = tempSensor/SAMPLES; // Calcula a média das temperaturas e as armazena em tempSensor Serial.println(tempSensor); // Envia a temperatura para porta COMX delay(TEMPO_LEITURA); // Espera um tempo determinado em TEMPO_LEITURA (milisegundos) lcd.setCursor(0,0); // Posiciona o cursor lcd.print("TEMP1:"); // Imprime na tela lcd.setCursor(7,0); // Posiciona o cursor lcd.print(tempSensor); // Imprime o valor da variavel lcd.createChar(1, a); // converte a array "a" no numeral "1" que é o simbolo de grau º lcd.setCursor(12,0); // Coloca o cursor na coluna 7, linha 1 lcd.write(1); // Imprime o simbolo de grau lcd.setCursor(13,0); // Posiciona o cursor lcd.print("C"); // Imprime a letra "C" lcd.setCursor(0,1); // Posiciona o cursor lcd.print("Set:"); // Imprime na tela lcd.setCursor(5,1); // Posiciona o cursor lcd.print(var); // Imprime o valor da variavel "var" lcd.setCursor(7,1); // Posiciona o cursor lcd.write(1); // Imprime o simbolo de grau lcd.setCursor(8,1); lcd.print("C"); lcd.setCursor (11,1); // move cursor para segunda linha "1" e 9 espaços mais lcd.print (millis () / 1000); // exibição segundos decorrido desde power-up lcd.setCursor(15,1); // Posiciona o cursor para: lcd.print("s"); // Imprime na tela if (tempSensor >= var) {digitalWrite(ledPin, HIGH);} // Comando if else define quando ligar a saida else { digitalWrite(ledPin, LOW); if (tempSensor <= var) {digitalWrite(ledPin, LOW);} else {digitalWrite(ledPin, HIGH);} } lcd_key = read_LCD_buttons(); // ler os botões /* dependendo de qual botão foi pressionado, realizamos uma ação*/ switch (lcd_key) { case btnRIGHT: { var++; break; } case btnLEFT: { var--; break; } case btnUP: { digitalWrite(botLed, HIGH); break; } case btnDOWN: { digitalWrite(botLed, LOW); break; } case btnSELECT: { break; } case btnNONE: { break; } } }