Paso 2: Sensor de temperatura
Todos los sensores presentados aquí traducen temperatura en voltaje. En particular, 10 mV por cada grado, así que 0 voltios = 0 grados y 2.5 V = 250 grados (excepto el LM34, son grados centígrados). Conectamos la salida del sensor a una entradas analógicas del Arduino. Voy hacer esto y escribir una programa de detección de temperatura (también conocido como: termómetro) que enviará la temperatura retorna a su computadora.
El código siguiente va con el cableado en la imagen para hacer un termómetro sencillo.
Si nunca has liado con un Arduino antes, aquí está un gran tutorial para empezar.
Definir que perno de la entrada analógica hemos conectado el sensor de temperatura
#define TEMP_SENSOR_PIN 0
Si usted ATA vRef de Arduino a la fuente de 3.3 voltios, cambiar esto a 3.3
#define ANALOG_VOTLAGE_REFERENCE 5
void setup() {}
Serial.Begin(115200);
}
void loop() {}
Imprime la temperatura actual con 1 lugar después del punto decimal
printFloat(getTemperature(), 1);
imprime un retorno de carro
Serial.println();
resto 100 milisegundos
Delay(100);
}
Float CtoF(float c) {}
Opcionalmente convertir de Celsius a Fahrenheit si usted está en esa cosa sorta
volver c * 9.0 / 5.0 + 32.0;
}
Float analogInToDegreesC(int inputValue) {}
División por 1023, el máximo valor posible de entrada, que escala la entrada entre 0 - 1
luego multiplique por la tensión de referencia, que escalas 0-1 0 - vREF (valor por defecto es 5V)
por último, multiplique por 100 para escalar a 10s de milivoltios o grados
volver inputValue / 1023.0 * ANALOG_VOTLAGE_REFERENCE * 100.0;
}
Float getTemperature() {}
Lee la entrada analógica, convertir a grados C y encubierta a F
volver CtoF(analogInToDegreesC(analogRead(TEMP_SENSOR_PIN)));
}
---Esta última función, printFloat no es necesario entender a menos que quiera
---no dude en ignorar por el momento y tratar como una utilidad incorporada,
---imprime valores de punto de punto de flotante
printFloat imprime el flotador 'valor' redondeado 'lugares' lugares después del punto decimal
void printFloat (float valor, lugares de int) {}
se utiliza para la fundición de dígitos
int cifras;
decenas de flotador = 0.1;
int tenscount = 0;
int i;
Float tempfloat = valor;
Asegúrese de que nos ronda correctamente. Esto podría utilizar pow de < math.h >, pero no parece vale la pena la importación
Si este paso redondeo no es aquí, el valor 54.321 imprime como 54.3209
calcular el redondeo término d: 0.5/pow(10,places)
flotador de d = 0,5;
Si (valor < 0)
d * = -1,0;
dividir por diez para cada lugar decimal
para (i = 0; i < lugares; i ++)
d / = 10.0;
Esta pequeña adición, combinada con truncamiento redondeará correctamente nuestros valores
tempfloat += d;
en primer lugar obtener valor decenas para ser la gran potencia de diez menos que el valor
tenscount no es necesario pero sería útil que usted deseó saber después de esto cómo muchos caracteres el número tendrá
Si (valor < 0)
tempfloat * = -1,0;
mientras que ((tens * 10.0) < = tempfloat) {}
decenas * = 10.0;
tenscount += 1;
}
escribir el negativo si es necesario
Si (valor < 0)
Serial.Print('-');
Si (tenscount == 0)
Serial.Print (0, DEC);
para (i = 0; i < tenscount; i ++) {}
Digit = (int) (tempfloat / decenas);
Serial.Print (dígitos, DEC);
tempfloat = tempfloat - (dígitos (float) * decenas);
decenas = 10.0;
}
Si no hay lugares después decimal, ahora pare y
Si (lugares < = 0)
retorno;
de lo contrario, escriba el punto y continuar en
Serial.Print('.');
ahora escribir cada lugar decimal cambio de dígitos uno por uno en el lugar y escribiendo el valor truncado
para (i = 0; i < lugares; i ++) {}
tempfloat * = 10.0;
Digit = (int) tempfloat;
Serial.Print(digit,DEC);
una vez escrito, resta de ese dígito
tempfloat = tempfloat - dígitos (float);
}
}