Paso 2: Programar el Arduino
/* Incluir librerías necesarias Configuración de vars Vars internos (no cambiar) Configura el termómetro void setup() {} if (!. {SD.begin(chipSelect))}
Escritura por Manuel Schutze - mayo de 2013
Conexiones:
DS18B20 termómetro - pin 2
Módulo de relé - pin 3
SD CS - pin 10
SD MOSI - pin 11
MISO de SD - pin 12
SD CLK - pin 13
*/
#include < OneWire.h >
#include < DallasTemperature.h >
#include < SD.h >
intervalTemp largo = 1000; intervalo entre las mediciones de temperatura
intervalSD largo = 5000; intervalo entre guardar los datos en la tarjeta SD
Float tempMin = 42.5; temp min (< truns en calor)
flotador tempMax = 43.5; temperatura máxima (> truns calor)
int TV = 3; PIN donde se conecta el relé de
const int chipSelect = 10; CS de PIN (tarjeta SD)
previousMillisTemp largo = 0;
previousMillisSD largo = 0;
Float tempAtual = 0; temperatura actual
int stat = 0; 0 = relé desactivado / 1 = relé en
Static char tempBuff [15];
Archivo de datos de archivo;
OneWire oneWire(2); PIN donde se conecta el themometer
DallasTemperature sensors (& oneWire);
DeviceAddress insideThermometer;
Sensors.Begin();
sensors.getAddress (insideThermometer, 0);
sensors.setResolution (insideThermometer, 11); Set de termómetro máxima resolución
pinMode (TV, salida);
pinMode (10, salida);
Serial.Begin(9600);
Serial.println ("### Yogurtator ###");
Serial.println ("tarjeta SD fallido, o no presente");
} else {}
Serial.println ("SD tarjeta inicializada.");
Crear un nuevo archivo
char nombre [] = "DATA00. TXT";
para (uint8_t i = 0; i < 100; i ++) {}
nombre de archivo [4] = i / 10 + '0';
nombre de archivo [5] = i % 10 + '0';
if (!. {SD.exists(filename))}
sólo abrir un archivo nuevo si no existe
archivo de datos = SD.open (filename, FILE_WRITE);
rotura; dejar el lazo!
}
}
Si (! datafile) {}
Serial.println ("no se pudo crear archivo");
} else {}
Serial.Print ("registro:");
Serial.println(FileName);
}
}
Serial.Print ("encontrado");
Serial.Print(Sensors.getDeviceCount(), DEC);
Serial.println ("Termómetros.");
Serial.Print ("resolución de dispositivo 0:");
Serial.println(Sensors.getResolution(insideThermometer), DEC);
Serial.Print ("temperatura min:");
Serial.Print(tempMin);
Serial.Print ("temperatura max:");
Serial.println(tempMax);
Serial.println("###");
}
void loop() {}
unsigned currentMillis largo = millis();
Comprueba temp actual e imprime en serie
Si ((currentMillis - previousMillisTemp > intervalTemp) || (currentMillis - previousMillisTemp < 0)) {
Versiones anteriores millis
previousMillisTemp = currentMillis;
Obtiene la temperatura
sensors.requestTemperatures();
tempAtual = sensors.getTempCByIndex(0);
Relé de control
Si (tempAtual! = 0) {}
if(tempAtual < tempMin) {}
digitalWrite (TV, HIGH);
STAT = 1;
}
if(tempAtual > tempMax) {}
digitalWrite (TV, LOW);
STAT = 0;
}
}
Temperatura actual impresiones en serie
Serial.Print ("temperatura:");
Serial.Print(Sensors.getTempCByIndex(0));
Serial.Print ("C - calor:");
if(STAT == 0) {}
Serial.println("OFF");
} else {}
Serial.println("ON");
}
}
Guarda los datos en la tarjeta SD
Si ((currentMillis - previousMillisSD > intervalSD) || (currentMillis - previousMillisSD < 0)) {
Versiones anteriores millis
previousMillisSD = currentMillis;
Crea cadena para guardar en el archivo
Cadena dataString = "";
dtostrf (tempAtual, 5, 2, tempBuff);
dataString.concat(tempBuff);
dataString.concat(",");
dataString.concat(stat);
Si el archivo está disponible, escribir en él:
Si (datafile) {}
DataFile.println(dataString);
DataFile.Flush();
}
Si el archivo no está abierto, surge un error:
Else {}
Serial.println ("Error al abrir archivo de datos.");
}
}
}
/ * Código termina aquí! */
Todo es, comentó. Sólo establece la temperatura max y min y subirlo a la placa Arduino.
Este código imprime el estado actual de la temperatura y el relay en el puerto serie cada 1 segundo, sou tienes una idea de lo que está sucediendo dentro de la caja!
Tenga en cuenta que el código también llama para que una tarjeta SD guardar los datos. Esto es opcional y comentada en el siguiente paso.