Professional Documents
Culture Documents
Definies
X = resistor a descobrir
V = 5V volts arduino
R = resistor fixo
Vx = tenso A0
Pin10 = primeiro digito
Pin11 = segundo digito
Pin12 = terceito digito
Pin12 = quarto digito
*/
#define V 4.951
#define R 268.6
#define tempo 3
int X = 0;
float Vx = 0 ;
int milhar = 0;
int centena = 0;
int dezena = 0;
int unidade = 0;
float analog = 0;
long acumulador = 0;
int numeroAmostras = 0;
float analogFiltro = 0;
signed int mul1, mul2, divide, result, temp; // registradores temporarios para
calculo
signed long bigvar; // variavel temporaria para calculo
const int conver[9] = { 928, 903, 874, 841, 803, 762, 718, 671, 623};
const int temper[9] = { 0, 50, 100, 150, 200, 250, 300, 350, 400};
byte seven_seg_digits[16][7] = {
{ 0, 0, 0, 0, 0, 0, 1 }, // = Digito 0
{ 1, 0, 0, 1, 1, 1, 1 }, // = Digito 1
{ 0, 0, 1, 0, 0, 1, 0 }, // = Digito 2
{ 0, 0, 0, 0, 1, 1, 0 }, // = Digito 3
{ 1, 0, 0, 1, 1, 0, 0 }, // = Digito 4
{ 0, 1, 0, 0, 1, 0, 0 }, // = Digito 5
{ 0, 1, 0, 0, 0, 0, 0 }, // = Digito 6
{ 0, 0, 0, 1, 1, 1, 1 }, // = Digito 7
{ 0, 0, 0, 0, 0, 0, 0 }, // = Digito 8
{ 0, 0, 0, 1, 1, 0, 0 }, // = Digito 9
{ 0, 0, 0, 1, 0, 0, 0 }, // = Digito A
{ 1, 1, 0, 0, 0, 0, 0 }, // = Digito B
{ 0, 1, 1, 0, 0, 0, 1 }, // = Digito C
{ 1, 0, 0, 0, 0, 1, 0 }, // = Digito D
{ 0, 1, 1, 0, 0, 0, 0 }, // = Digito E
{ 0, 1, 1, 1, 0, 0, 0 } // = Digito F
};
void Calcula_Temperatura()
{
int n, intervalo;
int adlo, adhi, vallo, valhi;
result += vallo;
temp = result;
Serial.print("intervalo = ");
Serial.println(intervalo);
delay(100);
Serial.print("adhi = ");
Serial.println(adhi);
delay(100);
Serial.print("adlo = ");
Serial.println(adlo);
delay(100);
Serial.print("valhi = ");
Serial.println(valhi);
delay(100);
Serial.print("vallo = ");
Serial.println(vallo);
delay(100);
}
void magica (int digito, int numero) { // Funo para ligar o display e montar o
valor
digitalWrite(digito, HIGH);
int pin = 2;
for (int n = 0; n < 7; n++) { // varre matriz e liga os seguimentos para formar o
digito
digitalWrite(pin, seven_seg_digits[numero][n]);
pin++;
void decompNumeros() {// Funo que decompoe o mumero inteiro Ex: 1234 - (1)-
milhar, (2)-centenas, (3)-dezenas, (4)-unidades
milhar = temp / 1000;
centena = temp / 100;
dezena = (temp - (centena * 100) ) / 10;
unidade = (temp - ( (centena * 100) + (dezena * 10)));
}//end decompNumeros
void filtroAmostras() { // Funo que ira calcular uma amostra de leituras da A0, a
quantidade de amostras definida no "if"
//esta funo torna mais estvel a exibio no display
if (numeroAmostras < 10) {
analog = analogRead(A0);
acumulador = acumulador + analog;
numeroAmostras++;
} else {
analogFiltro = acumulador / numeroAmostras;
numeroAmostras = 0;
acumulador = 0;
}//end if-else
}//end filtroAmostras
void setup() {
Serial.begin(9600);
for (int n = 2; n <= 14; n++) {// Declara que os pinos de 2 a 13 so sadas
pinMode(n, OUTPUT);
}
for (int n = 2; n < 8; n++) { // Passa os pinos 2 a 7 para nvel alto, display da
linha E liga com nvel lgico baixo
digitalWrite(n, HIGH);
}
for (int n = 10; n < 14; n++) {// Passa todos os comuns para nvel baixo
digitalWrite(n, LOW);
}
void loop() {
filtroAmostras();
/******calculo da resistncia medida*******/
/**/ Vx = (V * (analogFiltro / 1023));/**/
/**/ X = (((V * R) / Vx) - R); /**/
/***************************************/
Calcula_Temperatura();
decompNumeros();
long timer = 0;
timer = millis();
Serial.print("temp = ");
Serial.println(temp );