Paso 8: Código de Arduino
#include "MAX31855.h" #include "LiquidCrystal.h" #include "Adafruit_MAX31855.h" LiquidCrystal lcd (12, 11, 5, 4, 3, 2); const int turnonAudioboard = 13; const int audioTrigger0 = A0; const int audioTrigger1 = A1; const int audioTrigger2 = A2; const int audioTrigger3 = A3; const int audioTrigger4 = A4; const int fanRelay = 10; // const int heaterRelay = 9; controles de los calentadores const int countthreshold = 100; restablece los valores max y min cada 100 segundos const int startfrequency = 300; ajustar la frecuencia de comienzo de las señales sonoras const int numberofbeepsmax = 50; establecer la maximumnumber de tonos posibles int fancountdown = 0; int i; int count = 5; int freq = 0; pitidos de int = 0; int beepthreshold = -10; El valor anterior que pitidos empiezan a ser sonado int int audioCount0 = 0; int audioCount1 = 0; int audioCount2 = 0; int audioCount3 = 0; int audioCount4 = 0; int alarmpotvalue = 500; int tempsetpoint = 160; int blowersetpoint = 20; int bloweron = 0; int zeropotvalue = 0; int thermocoupleSOPin = 8; int thermocoupleCSPin = 7; int thermocoupleCLKPin = 6; variables de temperatura: doble punto de ajuste; doble calor; salida doble; doble Unión; MAX31855 termopar (thermocoupleSOPin, thermocoupleCSPin, thermocoupleCLKPin); void setup() { pinMode (audioTrigger0, salida); digitalWrite(audioTrigger0,HIGH); Baja activa el sonido en el tablero de FX pinMode (audioTrigger1, salida); digitalWrite(audioTrigger1,HIGH); Baja activa el sonido en el tablero de FX pinMode (audioTrigger2, salida); digitalWrite(audioTrigger2,HIGH); Baja activa el sonido en el tablero de FX pinMode (audioTrigger3, salida); digitalWrite(audioTrigger3,HIGH); Baja activa el sonido en el tablero de FX pinMode (audioTrigger4, salida); digitalWrite(audioTrigger4,HIGH); Baja activa el sonido en el tablero de FX Delay(500); pinMode (turnonAudioboard, salida); digitalWrite (turnonAudioboard, HIGH); pinMode (fanRelay, salida); Inicializa el pin de relé del ventilador como una salida pinMode (heaterRelay, salida); digitalWrite (fanRelay, bajo); desactivar el relé del ventilador. digitalWrite (heaterRelay, bajo); tono (A5, 400, 100); reproduce un sonido de 400 hz de 100 ms. LCD.Begin(20,4); establecer la dimensión de la pantalla lcd LCD.Clear(); Pantalla LCD clara lcd.setCursor(2,0); LCD.Print ("Varroa Blaster"); Delay(2000); tono (A5, 400, 100); reproduce un sonido de 400 hz de 100 ms. lcd.setCursor(2,1); LCD.Print "(industrias de la cabra del); Delay(2000); noTone (A5); Temperatura actual de la lectura calor = thermocouple.readThermocouple(CELSIUS); calor = calor-3; // Si se detecta problema de termopar Si ((heat == FAULT_OPEN) || (calor == FAULT_SHORT_GND) || Delay(500); Delay(500); Si la olla es demasiado caliente: while(Heat > |
calor = thermocouple.readThermocouple(CELSIUS);
calor =
calor-3;
LCD.Clear();
lcd.setCursor(0,0); LCD.Print ("por favor espere mientras");
lcd.setCursor(0,1); LCD.Print ("el dispositivo se enfría");
lcd.setCursor(0,2); LCD.Print ("hasta abajo 100");lcd.print((char)223);lcd.print("C");
lcd.setCursor (0,3); lcd.print ("punta de prueba
Temp:");LCD.Print(Heat);LCD.Print((Char)223);LCD.Print("C.");
tono (A5, 300,
100); reproduce un sonido de 300 hz para 100 ms
Delay(3000);
}
Si (calor < 90) audio0 //plays cuando la temperatura (calor) es les a 90 grados C.
{
digitalWrite(audioTrigger0,LOW); Bajo
activa el sonido en el tablero de FX
Delay(500);
digitalWrite(audioTrigger0,HIGH);
}
Else {}
while(Count>0) {}
LCD.Clear();
lcd.setCursor(4,0); LCD.Print("Starting");
lcd.setCursor(2,1); LCD.Print("vapourisation");
lcd.setCursor(0,3); LCD.Print("Count:"); lcd.setCursor(6,3);
LCD.Print(Count); lcd.setCursor(8,3);
LCD.Print("Temp:");LCD.Print(Heat);LCD.Print((Char)223);LCD.Print("C");
tono (A5, 400.100);
Count = count -1;
Delay(1000);
noTone (A5);
}
}
void loop()
{
Temperatura actual de la lectura
calor = thermocouple.readThermocouple(CELSIUS);
calor = calor-3;
cruce = thermocouple.readJunction(CELSIUS);
Si se detecta problema de termopar
Si ((heat == FAULT_OPEN) || (calor == FAULT_SHORT_GND) ||
(Heat == FAULT_SHORT_VCC))
blowersetpoint = 20;
calor = 17; línea temporal para la depuración
LCD.Clear();
lcd.setCursor(0,0); LCD.Print ("volar el tiempo:"); lcd.setCursor(10,0);lcd.print(blowersetpoint,DEC);
lcd.setCursor(14,0);lcd.print("Secs.");
lcd.setCursor(0,1); LCD.Print ("punto de ajuste de temperatura:"); lcd.setCursor(15,1);
LCD.Print(tempsetpoint,DEC);LCD.SetCursor(18,1);LCD.Print((Char)223);LCD.Print("C");
lcd.setCursor(0,2);lcd.print("Int.Temp:");lcd.print(junction);lcd.print((char)223);lcd.print("C");
lcd.setCursor (0,3); lcd.print ("sonda Temp:");lcd.print(heat);lcd.print((char)223);lcd.print("C");
If
((Heat>100) & &(heat<105) & &(audioCount1<1)) audio1 de //plays cuando la temperatura (calor) llega a 100 grados centígrados.
{
audioCount1 = 1;
digitalWrite(audioTrigger1,LOW); Bajo
activa el sonido en el tablero de FX
Delay(500); IMPORTANTE esto se debe por lo menos 500.
digitalWrite(audioTrigger1,HIGH);
}
Else {}
If
((Heat>130) & &(heat<135) & &(audioCount2<1)) //plays audio2 cuando temperatura (calor) llega a 130 grados centígrados.
{
audioCount2 = 1;
digitalWrite(audioTrigger2,LOW); Baja activa el sonido en el tablero de FX
Delay(500);
digitalWrite(audioTrigger2,HIGH);
}
Else {}
If
((Heat>150) & &(heat<155) & &(audioCount3<1)) //plays audio3 cuando temperatura (calor) se hace a 150 grados centígrados.
{
audioCount3 = 1;
digitalWrite(audioTrigger3,LOW); Baja activa el sonido en el tablero de FX
Delay(500);
digitalWrite(audioTrigger3,HIGH);
}
Else {}
hacer ruidos pitidos a frecuencias crecientes
Freq =
startfrequency;
pitidos = 0;
beepBeepThreshold
= beepthreshold;
while(beeps < numberofbeepsmax) {}
if(Heat >beepBeepThreshold)
tono (A5, freq, 9); tocar una nota del pin 1 en freq de 9ms
tonos de aviso ++;
beepBeepThreshold
= beepBeepThreshold + 10;
Freq = freq +
200;
Delay(10);
}
noTone (A5);
Si (calor
}
otra cosa
{digitalWrite (heaterRelay, LOW); bloweron = 1;
}
fancountdown = blowersetpoint;
Delay(1000);
Ahora se ha alcanzado la temperatura y el ventilador debe estar encendido.
Iniciar primero el audio:
Si (bloweron > 0) {}
digitalWrite(audioTrigger4,LOW); Baja activa el sonido en el tablero de FX
Delay(500);
digitalWrite(audioTrigger4,HIGH);
Delay(14000);
}
Else {}
Encienda el ventilador:
while(bloweron >0) {/ / bloweron tiene el status de '1' y así se activa este bucle:
digitalWrite (fanRelay, HIGH);
Si (calor
}
otra cosa
{digitalWrite (heaterRelay, bajo);
}
Temperatura actual de la lectura
calor = thermocouple.readThermocouple(CELSIUS);
calor = calor-3;
cruce = thermocouple.readJunction(CELSIUS);
Si se detecta problema de termopar
Si ((heat == FAULT_OPEN) || (calor == FAULT_SHORT_GND) ||
(Heat == FAULT_SHORT_VCC))
tono (A5, 1500, 100); reproduce un sonido de 1500 hz para 100 ms
Delay(500);
tono (A5, 1.500.100); reproduce un sonido de 1500 hz para 100 ms
Delay(500);
fancountdown = fancountdown -1;
LCD.Clear();
lcd.setCursor(0,0);
LCD.Print("Blowing:");
lcd.setCursor(10,0);lcd.print(fancountdown,DEC);
lcd.setCursor(14,0);lcd.print("Secs.");
lcd.setCursor(0,1);
LCD.Print ("punto de ajuste de temperatura:"); lcd.setCursor(15,1);
LCD.Print(tempsetpoint,DEC);LCD.SetCursor(18,1);LCD.Print((Char)223);LCD.Print("C");
lcd.setCursor(0,2);lcd.print("Int.Temp:");lcd.print(junction);lcd.print((char)223);lcd.print("C");
lcd.setCursor (0,3); lcd.print ("punta de prueba
Temp:");LCD.Print(Heat);LCD.Print((Char)223);LCD.Print("C");
noTone (A5);
Si (fancountdown < 1) {}
Esto crea un bucle de 'Acabado'
mientras que (fancountdown < 1) {}
LCD.Clear();
Temperatura actual de la lectura
calor = thermocouple.readThermocouple(CELSIUS);
calor = calor-3;
cruce = thermocouple.readJunction(CELSIUS);
Si se detecta problema de termopar
Si ((heat == FAULT_OPEN) || (calor == FAULT_SHORT_GND) ||
(Heat == FAULT_SHORT_VCC))
lcd.setCursor(0,0); LCD.Print("Finished");
lcd.setCursor(10,0);lcd.print(fancountdown,DEC);
lcd.setCursor(13,0);lcd.print("Secs.");
lcd.setCursor(0,1); LCD.Print ("Temp set
punto: "); lcd.setCursor(15,1);
LCD.Print(tempsetpoint,DEC);LCD.SetCursor(18,1);LCD.Print((Char)223);LCD.Print("C");
lcd.setCursor(0,2);lcd.print("Int.Temp:");lcd.print(junction);lcd.print((char)223);lcd.print("C");
lcd.setCursor (0,3); lcd.print ("punta de prueba
Temp:");LCD.Print(Heat);LCD.Print((Char)223);LCD.Print("C");
digitalWrite (heaterRelay, bajo);
digitalWrite (fanRelay, bajo);
Delay(1000);
}
}
Else {}
}
}