Silícios LabPCBWay
Published © GPL3+

Programmable Alarm of High-Temperature

In this article, you'll learn how to develop a simple thermometer using digital temperature sensor with Arduino.

BeginnerFull instructions provided30 minutes5,126
Programmable Alarm of High-Temperature

Things used in this project

Hardware components

PCBWay Custom PCB
PCBWay Custom PCB
×1
Display LCD 16x2 - UTSOURCE
×1
DS18B20 Temperature Sensor - UTSOURCE
×1
Active Buzzer - UTSOURCE
×1
LED 5mm - UTSOURCE
×1
Switch Button - UTSOURCE
×1
10k Resistor - UTSOURCE
×1
330R Resistor - UTSOURCE
×1
4k7 Resistor - UTSOURCE
×1
Arduino UNO R3 - UTSOURCE
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Schematics

Schematic - Alarm of the high-temperature

Code

Alarm of the high-temperature

Arduino
Alarm of the high-temperature using DS18B20 Sensor with Arduino
#include <LiquidCrystal.h> //Inclusao da biblioteca do LCD
#include <EEPROM.h> //Inclusao da biblioteca para manipulacao das funcoes da memoria EEPROM
#include <OneWire.h>  //Inclusao da biblioteca para manipulacao das funcoes de dispositivos OneWire
#include <DallasTemperature.h> //Inclusao da biblioteca para manipulacao das funcoes do sensor DS18B20
 
const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
 
//Fio de dados de temperatura é conectado ao pino 11 no Arduino 
#define ONE_WIRE_BUS 8 
/********************************************************************/
//Configura uma instância oneWire para se comunicar com qualquer dispositivo OneWire 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
 
//Passar nossa referência oneWire para Dallas Temperature.
DallasTemperature sensors(&oneWire);
 
unsigned int verificador = 0;
bool increment, decrease, set = 0; 
bool IncrementState = 0, DecreaseState = 0, EstadoSet = 0;
unsigned int temperature = 0;
byte PreviousValue = 0;

#define EndVerif 120 
#define EndTemp  125
 
void setup()
{
 
      lcd.begin(16, 2);
 
      delay(500);
 
      lcd.setCursor(2,0);
      lcd.print("PCB Factory");
      lcd.setCursor(5,1);
      lcd.print("PCBWay");
 
      delay(3000);
      
      sensors.begin();
      lcd.clear();    
      pinMode(13, OUTPUT);
      temperature = EEPROM.read(EndTemp);
       
}
 
void loop() 
{
     
         set = digitalRead(12);
          
         if(set == 1) 
         {
 
           lcd.clear();
           lcd.setCursor(2,0);
           lcd.print("Reconfigure ?");
 
           lcd.setCursor(0,1);
           lcd.print("Yes (+)   No (-)");
            
           do
           {
            
           increment = digitalRead(10); 
           decrease  = digitalRead(11); 
            
           delay(50);
 
              if(increment == 1 && decrease == 0)
              {
               EEPROM.write(EndVerif,0);
              }
               
           }while(increment == 0 && decrease == 0);
 
               lcd.clear();
         }
     
          verificador = EEPROM.read(EndVerif);
 
      if(verificador != 75)
      {
         
        lcd.setCursor(3,0);
        lcd.print("Configure");
        lcd.setCursor(0,1);
        lcd.print("Temperature:");
 
              temperature = EEPROM.read(EndTemp); //Leitura do valor da posicao EndTemp
         
            do
            {
              increment = digitalRead(10); //Leitura do estado do pino digital do botao incremento
              decrease = digitalRead(11); //Leitura do estado do pino digital do botao decremento
              set        = digitalRead(12); //Leitura do estado do pino digital do botao set
               
                delay(200);
 
                  if(increment == 1 && IncrementState == 0)
                  {
                    temperature++; //Incrementa o valor da temperatura
                    IncrementState = 1; //Armazena 1 na variavel incremento 
                  }
 
                  if(increment == 0 && IncrementState == 1)
                  {
                    IncrementState = 0; //Armazena 0 na variavel decremento para indicar o estado atual do botao incremento - desacionado  
                  }
 
                  if(decrease == 1 && DecreaseState == 0)
                  {
                    temperature--; //Decrementa o valor da temperatura
                    DecreaseState = 1; //Armazena 0 na variavel decremento para indicar o estado atual do botao decremento    
                  }
 
                  if(decrease == 0 && DecreaseState == 1)
                  {
                    DecreaseState = 0; //Armazena 0 na variavel decremento para indicar o estado atual do botao decremento - desacionado
                  }
 
             lcd.setCursor(13,1); //Configura o cursor na posição da segunda linha e coluna 13
             lcd.print("  ");
             lcd.setCursor(13,1); //Configura o cursor na posição da segunda linha e coluna 13
             lcd.print(temperature); //Imprime o valor da temperatura na tela     
 
            }while(set != 1);
 
            lcd.clear();
            EEPROM.write(EndVerif,75); //Salva o valor 75 na posição EndVerif
            EEPROM.write(EndTemp, temperature); //Salva o valor da temperatura configurada na posição EndTemp
      }
              
             sensors.requestTemperatures(); // Envia o comando para obter leituras de temperatura 
              
             float TempSensor = sensors.getTempCByIndex(0);
                 
                if(TempSensor != PreviousValue)
                {
                 lcd.setCursor(2,0);
                 lcd.print("Temperature");
                 lcd.setCursor(4,1);
                 lcd.print(TempSensor);
                 lcd.print((char)223);
                 lcd.print("C");
              
                    PreviousValue = TempSensor;
 
                 if(TempSensor >= temperature)
                 {
                    digitalWrite(9, HIGH);
                    digitalWrite(13, HIGH);
                    delay(1000);
                    digitalWrite(13, LOW);  
                    delay(1000);
                 }
 
                 if(TempSensor < temperature)
                 {
                    digitalWrite(9, LOW);
                    digitalWrite(13, LOW); 
                 }
               }                         
}

Credits

Silícios Lab
75 projects • 178 followers
Hello, I love program microcontrollers and works with electronic projects.
Contact
PCBWay
96 projects • 150 followers
We are a PCB and assembly manufacturer, As low as $5/10pcs and 24 hours delivery time. We are committed to helping creators build project.
Contact

Comments

Please log in or sign up to comment.