Paso 10: Agregue el código principal para el firmware
< el comenzar del código >
Establecer los valores de constantes para la ecuación de Steinhart-Hart
proporcionados por la aplicación de
http://www.Vishay.com/resistors-Non-linear/NTC-Curve-List/
constA de local = 0.003354016; A1
local constB = 0.00025698501802; B1
constC local = 0.0000026201306709; C1
local constD = 0.000000063830907998; D1
Instanciar el sensor con los valores requeridos
local tempSensor = ThermistorCelcius (2, 10000, 4700, constA, constB, constC, constD, 0);
Crear el puerto de salida para enviar las lecturas de temperatura
local salida = OutputPort ("Temperatura, voltios, ubicación", "tabla");
iteración local = 0; utilizado para contar el número de muestras tomadas
tempval local = 0; almacenar el valor acumulado para calcular el promedio
Capturar y registrar una temperatura cada 30s
función capture()
{
Sistema temporizador para la captura siguiente
en el tiempo de 0,1 segundos, hacer la 'captura' de función
Imp.WakeUp (0,1, captura);
El valor de la salida después de recoger muestras de 50 y con un promedio de
Obtener una lectura de temperatura utilizando la clase anterior
temperatura local = tempSensor.readTemp();
Si tenemos 50 muestras, luego reset contador y la salida
valor medio
Si (iteración == 50)
{
Iteración = 0;
Crear una tabla con los pares clave: valor a enviar
dTable local = {}
"temp": tempval/50,
"v": hardware.voltage(),
"location": "por encima del interruptor de la oficina"
}
output.set(dTable);
Server.Show (formato ("Sent:" temp':%3.1f,'volt':%3.2f ", tempval/50, hardware.voltage()));
tempVal = 0;
}
Else / / si no siga colectando muestras
{
iteración ++;
tempVal tempval = temperatura;
}
}
Registrar con el servidor
Imp.Configure ("Wireless termistor", [], [salida]);
Iniciar captura de temperatura
Capture();
Final del código.
< final código >