Etape 1: Le CODE
2 mars 2013
Basé sur un projet Arduino par DJ Mentzik.
Amélioré et modifié par la CME.
Renforcée par Vic Velcro.
Converti de l’Arduino à MSPEXP430FR5739 (FraunchPad) par Vic Velcro.
http://www.vicstricks.com/forum/viewforum.php?f=16
Utiliser et modifier au besoin.
Affiche la température actuelle moyenne d’échantillon 8 C et F, Max en C et Min en C.
Pour câbler votre HP44780 fonction écran LCD pour votre FraunchPad, connecter les points suivants :
LCD 4 broche Broche numérique 3 ou P2_5
6 broches LCD numérique broche 4 ou P2_6
Écran LCD Pin 11 broche numérique 20 ou P1_3
Écran LCD Pin 12 à axe numérique 15 ou P1_2
13 broches LCD numérique broche 14 ou P1_1
14 Pin LCD digital pin 13 ou P1_0
En outre, raccorder un pot 10K pour + 5V et GND, avec ses essuie-glace (sortie) à la broche de VO de l’écran LCD (broche 3) pour régler le contraste des caractères.
Pour enfoncer le rétro-éclairage, fil une résistance 270 ohms du FraunchPad VCC sur la broche 15 de LCD.
Le capteur de température est un LM335Z. La jambe (adj) n’est pas utilisée pour ce projet. Localiser une feuille de données si vous n’êtes pas familier avec l’appareil.
Alors que les broches sont en maquette et côté plat est loin de vous, repose sur la jambe gauche et la jambe droite est non utilisée.
La jambe de centre est reliée à broches A0, qui est également marquée P1_5. En outre, la goupille de centrage connecte à une résistance de 2,2 k ohms, puis
la jambe opposée de la résistance va à VCC de le FraunchPad.
*/
#if defined(__MSP430FR5739__) / / FraunchPad ! SEULEMENT !
#include « Energia.h »
#else // no good
#error plate-forme non prise en charge. Seulement FraunchPad.
#endif
#include < LiquidCrystal.h > / / inclure la bibliothèque de pilote LCD
int tempPin = A0 ; Déclarer l’entrée analogique est 0 (A0) du Conseil de FraunchPad.
int i ; variable pour délimiter la séquence itération échantillon
flotter à VCC = 3,63 ; déclarer la tension Conseil
float tempRAW ; déclarer des variables
flotteur tempK ; variable pour la tenue de température Kelvin (Floating (planer pour précision décimale
flotteur NC = 0 ; variable pour la tenue de temp Celsius (Floating (planer pour précision décimale)
flotteur tempF = 0 ; variable pour tenir Fahrenheit temp
échantillons de flotteur [8] ; Tableau pour contenir 8 échantillons pour le calcul de la température moyenne
maxi de flotteur = 0, mini = 100 ; Variables de température Max/Min avec des valeurs initiales. LM335 en configuration simple ne mesure que Temp supérieur à 0.
Innovente lcd (P2_5, P2_6, P1_3, P1_2, P1_1, P1_0) ; initialiser la bibliothèque avec les numéros des broches interface
void setup()
{
Serial.Begin(9600) ; Ouvre le port série, établit le taux de données à 9600 bits/s
LCD.Begin (16, 2) ; Mis en place nombre de l’écran LCD de colonnes et de lignes :
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Serial.println ("projet de Thermo-mètre par Vic Velcro.") ; Imprimez du texte Serial monitor
Serial.Print ("gratuit pour modifier et utiliser au besoin.") ;
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
LCD.Clear() ;
lcd.setCursor (2, 0) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print ("astuces de Vic") ; Imprimer un texte à l’écran LCD
lcd.setCursor (2, 1) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print("thermo-Meter") ; Imprimer un texte à l’écran LCD
Delay(10000) ; Retard pour lire le texte
LCD.Clear() ;
lcd.setCursor (1, 0) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print ("* sur le Web *") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print("vicstricks.com") ; Imprimer un texte à l’écran LCD
Delay(10000) ; Retard pour lire le texte
LCD.Clear() ; Désactivez l’affichage à cristaux liquides / / efface l’écran
lcd.setCursor (1, 0) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print ("Temp moyenne") ; Imprimer un texte à l’écran LCD
lcd.setCursor (1, 1) ; Définir la position du curseur LCD (colonne, ligne)
LCD.Print ("affiché") ; Imprimer un texte à l’écran LCD
Delay(5000) ; Retard pour lire le texte
LCD.Clear() ; Clear LCD
}
void loop()
{
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Serial.Print ("données brutes LM335Z:") ; Imprimez du texte Serial monitor
Serial.println(analogRead(tempPin)) ; Affiche sur le moniteur de la série la valeur échantillonnée avant la conversion à la lecture de la température réelle
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Début des calculs pour la boucle.
pour (i = 0; j’ai < = 7; i ++) {/ / gets 8 échantillons de température
les échantillons [i] = analogRead(tempPin) ; mathématiques de conversion de l’échantillon LM335 lisible température Kelvin et magasins résultat au tableau des échantillons.
5V est normale d’alimentation volts de LM335. Changer appropriatelly pour avoir une mesure correcte. Mon cas est de 3,63 Volts.
Si alimenté par USB, puis utiliser valeur 3.6V.
La tension est essentielle pour une lecture précise
Serial.println(Samples[i]) ; Imprimer les échantillons [i] à serial monitor
Note de LCD: la ligne 1 est la seconde ligne, puisque le décompte commence par
LCD.Clear() ; Désactivez l’affichage à cristaux liquides / / efface l’écran
lcd.setCursor (0, 0) ; Définir la position du curseur LCD (colonne 0, ligne 0)
LCD.Print ("lecture actuelle:") ; Imprimer un texte à l’écran LCD
lcd.setCursor (0, 1) ; Définir la position du curseur LCD (colonne 1, ligne 1)
LCD.Print ("échantillons RAW") ; Imprimer un texte à l’écran LCD
lcd.setCursor (12, 1) ; Définir la position du curseur LCD (colonne 12, ligne 1)
LCD.Print(Samples[i]) ; imprimer l’itération actuelle de l’échantillon brut pour LCD
tempRAW = tempRAW + échantillons [i] ; calculer pour la moyenne des échantillons bruts
Delay(800) ; attendre un peu
} // END of FOR loop
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
Serial.println("") ; Ligne vide pour l’espacement dans le moniteur de la série
tempK = (((tempRAW/8.0)/1023)*VCC)*100) ; Formule de conversion pour échantillons combinés à Kelvin en moyenne
NC = (tempK-273.15) ; Convertir Kelvin en Celcius
tempF = (((tempK-273.15) * 1,8) + 32) ; Convertir Kelvin en Fahrenheit
if(tempC > maxi) {maxi = NC;} mise à jour max température observée
if(tempC < mini) {mini = NC;} mise à jour min température observée
Serial.println ("nouvelle mesure:") ;
Serial.Print ("température moyenne en Celcius est") ; Imprimez du texte Serial monitor
Serial.println (NC); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("moyenne température en Fahrenheit est") ; Imprimez du texte Serial monitor
Serial.println (tempF); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("MAX température en Celsius est") ; Imprimez du texte Serial monitor
Serial.println (maxi); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
Serial.Print ("MIN température en Celsius est") ; Imprimez du texte Serial monitor
Serial.println (mini); //send les données de l’ordinateur / / envoyer les données à l’ordinateur
LCD.Clear() ; Effacer l’affichage
lcd.setCursor (0, 0) ; Définir la position du curseur LCD (colonne 0, ligne 0)
LCD.Print ("c") ; Imprimer un texte à l’écran LCD
lcd.setCursor (12, 0) ; Définir la position du curseur LCD (colonne 12, ligne 0)
LCD.Print(tempC) ;
lcd.setCursor (0, 1) ; Définir la position du curseur LCD (colonne 0, ligne 1)
LCD.Print (« Fahrenheit ») ; Imprimer un texte à l’écran LCD
lcd.setCursor (12, 1) ; Définir la position du curseur LCD (colonne 12, ligne 1)
LCD.Print(tempF) ; Envoyer les données à l’écran LCD
Delay(5000) ; Attendre après affichage temp à LCD écran befor recommencer la boucle.
tempRAW = 0 ; La valeur tempRAW à 0 avant de répéter la boucle.
}