Étape 2: Détection de la température
Tous les détecteurs présentés ici traduisent température tension. En particulier, 10 mV par degré, donc 0 Volt = 0 degrés et 2.5 V = 250 degrés (à l’exception de la LM34, les diplômes sont en degrés Celsius). Nous connecter la sortie du capteur à une entrées analogiques de l’Arduino. Nous le faire maintenant et écrire une programme de détection de température (aka: thermomètre) qui enverra la température actuelle sur votre ordinateur.
Le code ci-dessous va de pair avec le câblage dans l’image pour faire un simple thermomètre.
Si vous n’avez jamais sali avec un Arduino avant, voici un bon tutoriel pour vous aider à démarrer.
Définir quel pin d’entrée analogique nous avons relié à la sonde de température
#define TEMP_SENSOR_PIN 0
Si vous attachez la vRef de l’Arduino à l’alimentation 3,3 volts, changez ce à 3.3
#define ANALOG_VOTLAGE_REFERENCE 5
void setup() {}
Serial.Begin(115200) ;
}
void loop() {}
imprime la température perçoivent avec 1 place après la virgule
printFloat(getTemperature(), 1) ;
imprimer un retour chariot
Serial.println() ;
reste 100 millisecondes
Delay(100) ;
}
flotteur CtoF(float c) {}
convertir éventuellement de Celsius en Fahrenheit si vous êtes dans cette chose sorta
retour de c * 9,0 / 5,0 + 32.0 ;
}
flotteur analogInToDegreesC(int inputValue) {}
Division par 1023, la valeur d’entrée maximale possible, capable d’évoluer à l’entrée entre 0 - 1
puis multiplier par la tension de référence, qui agrandit 0-1 à 0 - vREF (valeur par défaut est de 5 v)
Enfin, multipliez par 100 à échelle à 10 s de millivolts ou degrés
Retour à inputValue / 1023.0 * ANALOG_VOTLAGE_REFERENCE * 100,0 ;
}
flotteur getTemperature() {}
lire l’entrée analogique, convertir en degrés C et covert à F
Return CtoF(analogInToDegreesC(analogRead(TEMP_SENSOR_PIN))) ;
}
---Cette dernière fonction, printFloat n’est pas nécessaire de comprendre à moins que vous vouliez
---n’hésitez pas à l’ignorer pour l’instant et le traiter comme un utilitaire intégré,
---Il imprime flottant des valeurs de point de point
printFloat imprime le flotteur « valeur » arrondie à « lieux préférés » décimales après la virgule
void printFloat (valeur float, int places) {}
Il sert à monter les chiffres
int chiffre ;
flottent des dizaines = 0,1 ;
int tenscount = 0 ;
int i ;
float tempfloat = value ;
Veillez à ce que nous rond correctement. Cela pourrait utiliser pow de < math.h >, mais ne semble pas d’une valeur de l’importation
Si cette étape arrondie n’est pas ici, la valeur 54.321 imprime en 54.3209
calculer l’arrondi terme d: 0.5/pow(10,places)
flotteur d = 0,5 ;
Si (valeur 0 <)
d * = -1,0 ;
diviser par dix pour chaque décimale
pour (i = 0; i < places; i ++)
d / = 10,0 ;
ce petit rajout, combiné avec troncature viendront compléter nos valeurs correctement
tempfloat += d ;
obtenez d’abord la valeur des dizaines à être la grande puissance de dix de moins que la valeur
tenscount n’est pas nécessaire, mais il serait utile que vous avez voulu savoir après ce comment de nombreux caractères le nombre aura
Si (valeur 0 <)
tempfloat * = -1,0 ;
tandis que ((tens * 10.0) < = tempfloat) {}
des dizaines * = 10,0 ;
tenscount += 1 ;
}
écrire le négatif si nécessaire
Si (valeur 0 <)
Serial.Print('-') ;
Si (tenscount == 0)
Serial.Print (0, DEC) ;
pour (i = 0; i < tenscount; i ++) {}
chiffres = (int) (tempfloat / RTE) ;
Serial.Print (chiffre, DEC) ;
tempfloat = tempfloat - (chiffre (flotteur) * dizaines) ;
des dizaines / = 10,0 ;
}
Si aucun chiffres après la décimale, arrêter maintenant et retour
Si (place < = 0)
retour ;
Sinon, écrivez le point et continuer sur
Serial.Print('.') ;
maintenant écrire chaque décimale en déplaçant des chiffres un à un dans les lieu et en écrit la valeur tronquée
pour (i = 0; i < places; i ++) {
tempfloat * = 10,0 ;
chiffres = (int) tempfloat ;
Serial.Print(digit,DEC) ;
une fois écrit, soustraire au large de ce chiffre
tempfloat = tempfloat - chiffre (float) ;
}
}