projeto de instrumentação emmanuele e marcos programa
DESCRIPTION
ÂTRANSCRIPT
/*Projeto de Instrumentação Emmanuele e Marcos
Esse programa lê a entrade de temperatura de um NTC
e controla a temperatura de uma caldeira, atuando
em uma resistência de aquecimento.
O circuito:
Um transdutor de entrada do sinal no pino A3, e saída digital
PWM 6, com resultados mostrados em um LCD e atuaçao humana
através dos botões desse shield.
Projeto feito para a Disciplina de Instrumentação do
Professor Márlio Bonfin
Criado 2013
Marcos C Matos
*/
#include <LiquidCrystal.h> // Funciona o LCD
#include <LCDKeypad.h> // Funciona os botões
// LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // ativa o lcd
LCDKeypad lcd;
const int sensor = A1; // sensor NTC
const int saida = 9; // Saida PWM
const int aliment = A2; // alimentaçao
int sens1 = 0; // variavel sensor
int sens2 = 0;
int sens3 = 0;
int sens4 = 0;
int sens5 = 0;
int sensFinal = 0;
float tensao = 0; // variavel tensao
float temperatura = 0; // variavel da temperatura
//criando os caracteres especiais
byte c_up[8] = {
B00100,
B01110,
B10101,
B00100,
B00100,
B00100,
B00100,
B00100,
};
byte c_down[8] = {
B00100,
B00100,
B00100,
B00100,
B00100,
B10101,
B01110,
B00100,
};
byte c_select[8] = {
B00000,
B01110,
B11111,
B11111,
B11111,
B11111,
B01110,
B00000,
};
byte c_left[8] = {
B00001,
B00110,
B01100,
B11111,
B11111,
B01000,
B00110,
B00001,
};
byte c_right[8] = {
B10000,
B01100,
B00010,
B11111,
B11111,
B00010,
B01100,
B10000,
};
// fim dos caracteres
void setup ()
{
set.pinMode (A1,INPUT);
set.pinMode (A2,OUTPUT);
lcd.createChar(1,c_select);
lcd.createChar(2,c_up);
lcd.createChar(3,c_down);
lcd.createChar(4,c_left);
lcd.createChar(5,c_right);
lcd.begin(16, 2);
lcd.clear ();
lcd.setCursor (3,0);
lcd.print ("Projeto de");
lcd.setCursor (1,2);
lcd.print ("Instrumentacao");
delay (3000);
lcd.clear ();
lcd.setCursor(2,0);
lcd.print ("Emmanuele L.");
lcd.setCursor (3,1);
lcd.print ("& Marcos C.");
delay (3000);
lcd.clear ();
lcd.setCursor (3,0);
lcd.print ("Calibracao?");
lcd.setCursor (3,1);
lcd.print ("Sim ou Nao");
lcd.setCursor (1,1);
lcd.write (4);
lcd.setCursor (14,1);
lcd.write (5);
int buttonPressed;
waitButton();
waitReleaseButton();
do
{
buttonPressed=waitButton();
}
while(!(buttonPressed==KEYPAD_LEFT || buttonPressed==KEYPAD_RIGHT ));
lcd.setCursor(0,1);
lcd.write(buttonPressed==KEYPAD_LEFT?4:' ');
lcd.write(' ');
lcd.write(buttonPressed==KEYPAD_RIGHT?5:' ');
lcd.write(' ');
delay(50);
waitReleaseButton();
if (buttonPressed==KEYPAD_LEFT)
{
lcd.clear ();
lcd.print(" Calibrando");
lcd.setCursor (10,1);
lcd.print ("V");
lcd.setCursor (1,1);
calibracao();
}
else if (buttonPressed==KEYPAD_RIGHT);
{
lcd.clear ();
lcd.print ("ATUAL OBJET ER");
if (buttonPressed==KEYPAD_SELECT);
{
lcd.setCursor(3,1);
lcd.write (223);
lcd.print ("C");
lcd.setCursor(10,1);
lcd.write (223);
lcd.print ("C");
}
}
// botão pra esquerda, entra na calibraçao
// calibracao > le o analog 2 e coloca na tela o valor em tensao lido. botao seleciona finaliza e termina o setup +-
//botão pra direita, acaba o void setup ok
}
void loop ()
// aonde ele lê a temperatura atual, pede a temperatura objetivo e através de controle, finalmente alcança
{
lcd.setCursor (0,1);
lcd.print(millis()/1000);
lcd.setCursor (7,1);
lcd.print(millis()/2000);
}
int waitButton() // rotina de esperar o botão
{
int buttonPressed;
waitReleaseButton;
lcd.blink();
while((buttonPressed=lcd.button())==KEYPAD_NONE)
{
}
delay(50);
lcd.noBlink();
return buttonPressed;
}
void calibracao() // nao funcionando direito, verificar pq
{ int buttonPressed;
do
{
LeSensor();
tensao = sensFinal;
lcd.setCursor (3,1);
lcd.write (tensao);
delay (100);
}
while(buttonPressed=lcd.button()!=KEYPAD_SELECT);
{
}
}
int LeSensor() // rotina para ler o sensor, é puxada toda vez que precisa
{
sens1 = analogRead (sensor);
delayMicroseconds(150);
sens2 = analogRead (sensor);
delayMicroseconds(150);
sens3 = analogRead (sensor);
delayMicroseconds(150);
sens4 = analogRead (sensor);
delayMicroseconds(150);
sens5 = sens1+sens2+sens3+sens4;
sensFinal = sens5 << 1;
}
void waitReleaseButton() // acho que é para esperar soltar o botão
{
delay(100);
while(lcd.button()!=KEYPAD_NONE)
{
}
delay(100);
}