extern unsigned char SmallFont[];
extern unsigned char MediumNumbers[];
//
int estado,estado1,estado2;
int ledState = LOW,ledState1=LOW;
long previousMillis = 0;
long interval = 200;
//
float Vin=5.0; // [V] Supply voltage in the Voltage-Divider
float Raux=10000; // [ohm] Secondary resistor in the Voltage-Divider
float R0=10000; // [ohm] NTC nominal value at 25ºC
float T0=298.15; // [K] (25ºC)
float Vout=0.0; // [V] Voltage given by the Voltage-Divider
float Rout=0.0; // [ohm] Current NTC resistance
float beta=4100; // [K] Beta parameter
float Rinf=0.0; // [ohm] Rinf parameter
float TempK=0.0; // [K] Temperature output in Kelvin
float TempC=0.0; // [ºC] Temperature output in Celsius
float TempK1=0.0; // [K] Temperature output in Kelvin
float TempC1=0.0; // [ºC] Temperature output in Celsius
float TempK2=0.0; // [K] Temperature output in Kelvin
float TempC2=0.0; // [ºC] Temperature output in Celsius
void setup()
{
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
pinMode(5,OUTPUT);
pinMode(13,OUTPUT);
pinMode(6,OUTPUT);
pinMode(3,OUTPUT);
pinMode(7, OUTPUT);
Rinf=R0*exp(-beta/T0);
Serial.begin(9600);
}
void loop()
{
//TEMPERATURA Y COMUNICACION
int valor=0,valor1=0;
if(Serial.available()>0){
valor=Serial.read();
Serial.println(valor);
valor1=255-valor;
if(valor1<=100)valor1=0;
analogWrite(3,valor1);
}
digitalWrite(13,HIGH);
Vout=Vin*((float)(analogRead(A0))/1024.0);
Rout=(Raux*Vout/(Vin-Vout));
TempK=(beta/log(Rout/Rinf));
TempC=TempK-273.15;
Vout=Vin*((float)(analogRead(A1))/1024.0);
Rout=(Raux*Vout/(Vin-Vout));
TempK1=(beta/log(Rout/Rinf));
TempC1=TempK-273.15;
Vout=Vin*((float)(analogRead(A2))/1024.0);
Rout=(Raux*Vout/(Vin-Vout));
TempK2=(beta/log(Rout/Rinf));
TempC2=TempK-273.15;
//INTERMITENTES Y FARO
estado=digitalRead(A3);//DERECHA
estado1=digitalRead(A5);//LUZ
estado2=digitalRead(A4);//IZQUIRDA
//LA LUZ
digitalWrite(5,estado1);
//IZQUIRDA
unsigned long currentMillis = millis();
if (currentMillis - previousMillis > interval){
previousMillis = currentMillis;
if (ledState1 == HIGH && estado2==LOW)
ledState1 = LOW;
else
ledState1 = HIGH;
digitalWrite(6, !ledState1);
//DERECHA
if (ledState == HIGH && estado==LOW)
ledState = LOW;
else
ledState = HIGH;
digitalWrite(7, !ledState);
}
// LCD NOKIA
myGLCD.clrScr();
myGLCD.setFont(MediumNumbers);
myGLCD.printNumI(TempC,LEFT, 0);
myGLCD.printNumI(TempC1,LEFT, 16);
myGLCD.printNumI(TempC2,LEFT, 32);
myGLCD.setFont(SmallFont);
myGLCD.print("INTER C",RIGHT, 4);
myGLCD.print("EXTER C",RIGHT, 20);
myGLCD.print("MOTOR C",RIGHT, 36);
delay(30);
}