Étape 5: Lecture de la température - DS18B20
Environ 2 $ chaque au http://goo.gl/X5FRN
Initialement, j’ai installé la résistance et les connexions sur la carte de diviseur de tension. Je recevais la sortie 85C/185F redoutée par le capteur, alors j’ai pensé que mes connexions étaient mauvaises. Ensuite, j’ai déménagé les connexions directement à l’Arduino et fait deux ports numériques inutilisés + 5 Vcc et Gnd en écrivant un haut et un bas respectivement. Je l’ai fait pour garder les fils ensemble, au lieu de couper le câble en dehors et en les séparant. Qui n’a pas fixé le problème, alors j’ai regardé sur mon code avec un peigne à dents fines. Je n’ai pas trouvé toutes les erreurs, donc j’ai créé un deuxième croquis (aucun découpage et le collage), et qu’on a travaillé. Je ne vois aucune différence par rapport à l’ancien, mais il devait y avoir que quelque chose de corrompu quelque part. J’ai utilisé ces capteurs dans des dizaines de projets et jamais eu ce problème sautent vers le haut avant. Il n’était pas un mauvais capteur ou la connexion.
Ce sketch Arduino lit digital « 1-Wire » DS18B20
capteurs de température.
Tutoriel :
http://www.hacktronics.com/tutorials/Arduino-1-Wire-Tutorial.html
#include < OneWire.h >
#include < DallasTemperature.h >
Câble de données est branché sur la broche 3 sur l’Arduino
#define ONE_WIRE_BUS 3
Configurer une instance oneWire pour communiquer avec les périphériques OneWire
OneWire oneWire(ONE_WIRE_BUS) ;
Passez notre référence oneWire à température de Dallas.
Capteurs DallasTemperature (& oneWire) ;
Affectez les adresses de vos capteurs de température 1-Wire.
Voir le tutoriel sur la façon d’obtenir ces adresses :
http://www.hacktronics.com/tutorials/Arduino-1-Wire-Address-Finder.html
DeviceAddress insideThermometer = {0 x 28, 0x94, 0xE2, 0xDF, 0 x 02, 0 x 00, 0 x 00, 0xFE} ; votre adresse sera différent
Sub setup(void)
{
serial port de départ
Serial.Begin(9600) ;
Démarrage de la bibliothèque
sensors.Begin() ;
Sélectionnez une résolution de 10 bits (assez bon?)
sensors.setResolution (insideThermometer, 10) ;
}
Sub printTemperature(DeviceAddress deviceAddress)
{
flotteur NC = sensors.getTempC(deviceAddress) ;
Si (NC ==-127.00) {}
Serial.Print ("Error getting température") ;
} else {}
Serial.Print ("C:") ;
Serial.Print(tempC) ;
Serial.Print ("f") ;
Serial.Print(DallasTemperature::toFahrenheit(tempC)) ;
}
}
Sub loop(void)
{
Delay(2000) ;
Serial.Print ("Getting temperatures...\n\r") ;
sensors.requestTemperatures() ;
Serial.Print ("est la température à l’intérieur:") ;
printTemperature(insideThermometer) ;
Serial.Print("\n\r\n\r") ;
}