Created
June 30, 2015 02:15
-
-
Save gioufop/975126451db35c1e3134 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <OneWire.h> // inclusão da biblioteca | |
#include "LiquidCrystal.h" | |
int TempInput = 8; // entrada de temperatura | |
int releAque = 9; // sinal rele de aquecimento | |
int releRes = 10; // sinal rele de resfriamento | |
String valor; | |
int v =0 ; | |
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);// inicializa os pinos Display | |
float temperature; // armazena a temperatura | |
OneWire SensorTemp(TempInput); // cria um objeto que representa o sensor ligado ao pino TempInput | |
void setup(void) { | |
lcd.begin(16,2);// define 16 colunas e 2 linhas Display | |
Serial.begin(9600); // inicia a comunicação serial com velocidade de 9600 bits/s (baud) | |
pinMode(releAque, OUTPUT); //Define o pino como saída | |
pinMode(releRes, OUTPUT); //Define o pino como saída | |
} | |
void inicializa (void){ | |
digitalWrite(releAque,LOW); | |
digitalWrite(releRes,LOW); | |
} | |
void loop(void) { | |
if(Serial.available()>=2) | |
{ | |
while(Serial.available()){ //enquanto estiver recebendo bytes executa o while | |
//recebe dados da serial e armazena em uma string | |
char c = Serial.read(); | |
valor += c; //concatena caracteres em uma string | |
} | |
v = valor.toInt(); | |
lcd.clear(); | |
lcd.print("V = "); | |
lcd.print(valor); | |
lcd.print(" * "); | |
lcd.print(v); | |
lcd.print(" *"); | |
delay(1000); | |
} | |
temperature = getTemp(); // obtem a temperatura como um numero real | |
delay(250) | |
Serial.println("l"); | |
Serial.println (temperature); // envia o valor pela porta serial | |
display1(temperature); | |
//* | |
if ((int)temperature > v){ | |
digitalWrite(releAque,LOW); | |
digitalWrite(releRes,HIGH); | |
Serial.println ("a0"); | |
Serial.println ("b1"); | |
} | |
else if ((int)temperature < v){ | |
digitalWrite(releAque,HIGH); | |
digitalWrite(releRes,LOW); | |
Serial.println ("a1"); | |
Serial.println ("b0"); | |
} | |
else { | |
digitalWrite(releAque,LOW); | |
digitalWrite(releRes,LOW); | |
Serial.println ("a0"); | |
Serial.println ("b0"); | |
} | |
//*/ | |
delay(1000); | |
valor = ""; | |
} | |
float getTemp(){ // se comunica com o sensor DS, obtem os bytes dele, processa-os e com isso calcula a temperatura em graus C | |
byte data[12]; // conjunto de variáveis | |
byte addr[8]; // conjunto de variáveis | |
if (!SensorTemp.search(addr)) { // não há mais sensores pendurados no pino 2 (dos DS) | |
SensorTemp.reset_search(); | |
return -500; // se a programação der erro, esse será o valor que ira aparecer | |
} | |
if (OneWire::crc8(addr, 7) != addr[7]) { | |
Serial.println("Erro de leitura – CRC invalido!"); // se der erro na leitura, é mostrado "Erro de leitura – CRC invalido!" | |
return -501; // é mostrado um valor impossível para representar o erro | |
} | |
if (addr[0] != 0x10 && addr[0] != 0x28) { | |
Serial.print("Sensor nao reconhecido :("); // sensor não encontrado | |
return -502; // é mostrado um valor impossivel para representar o erro | |
} | |
SensorTemp.reset(); | |
SensorTemp.select(addr); | |
SensorTemp.write(0x44,1); // inicia conversão | |
byte present = SensorTemp.reset(); | |
SensorTemp.select(addr); | |
SensorTemp.write(0xBE); | |
for (int i = 0; i < 9; i++) { // sao 9 bytes lidos | |
data[i] = SensorTemp.read(); | |
} | |
SensorTemp.reset_search(); | |
byte MSB = data[1]; | |
byte LSB = data[0]; | |
float tempRead = ((MSB << 8) | LSB); | |
float TemperatureSum = tempRead / 16; | |
return TemperatureSum; | |
} | |
void display1(float t){ | |
if (t==-500){ | |
lcd.clear(); | |
lcd.setCursor(0,0 ); | |
lcd.print("Sensor nao"); | |
lcd.setCursor(4,1); | |
lcd.print(" detectado!!"); | |
} | |
else if (t==-501){ | |
lcd.clear(); | |
lcd.setCursor(0,0 ); | |
lcd.print("Erro de leitura –"); | |
lcd.setCursor(0,1); | |
lcd.print("CRC invalido!"); | |
} | |
else if(t==-502){ | |
lcd.clear(); | |
lcd.setCursor(0,0 ); | |
lcd.print("Sensor nao reconhecido :("); | |
lcd.setCursor(0,1); | |
lcd.print("reconhecido :("); | |
} | |
else{ | |
lcd.clear(); | |
lcd.setCursor(0,0 ); | |
lcd.print("Temperatura = "); | |
lcd.setCursor(0,1); | |
lcd.print(t); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment