PICAXE - capteur de température DS18B20 pour LCD (4 / 7 étapes)

Étape 4: Le programme

Ci-dessous le programme est collé. Fondamentalement, vous pouvez suivre son fonctionnement en lisant les commentaires de programme. Les programmeurs plus expérimentés sauront probablement d’écrire du code plus simple et plus efficace. Ce que je peux dire, c’est ma première tentative, et il semble fonctionner.

' *** TemperatureSensor.bas ***

« Ce programme s’exécute sur un PICAXE - 20 X 2 à 4MHz qui se lit la température d’un
"Capteur de température DS18B20 & envoie à un écran de LCD 16 x 2 compatible HD44780.
'
"Développé par Simon Carter 10 mars 2013.

' *** Constantes ***
symbole EnablePin = C.7 ' Enable LCD broche reliée à C.7
symbole RegSelPin = C.4 ' LCD Registre selectionner broche reliée à C.4
symbole TempPin = C.1 ' données de capteur de température relié à C.1
' *** Variables ***
symbole de char = b0 ' caractère qui seront envoyés au LCD
indice du symbole = b1 ' utilisé comme compteur de boucles For-Next
symbole ° c = b2 "la valeur de température provenance du capteur DS18B20
symbole intgval = b3 ' utilisée pour stocker temporairement chaque valeur entière extraite le numéro reçu par le capteur
symbole degflag = b4 ' un drapeau utilisé lorsqu’il s’agit des températures négatives. 0 = plage postive, 1 = plage négative
symbole degf = b5 ' utilisé pour maintenir les degrés farenheight valeurs
' *** Directives ***
#com 3' spécifier Télécharger port
#picaxe 20 x 2' spécifier processeur
#no_data ' enregistrer le temps de téléchargement
#terminal off ' désactiver la fenêtre de terminal

' *** Table ***
Tableau 0, (« la température »)

' *** Programme principal ***
dirsB = % 11111111' ensemble toutes les broches de port comme sorties
dirsC = % 10111001' définir C.6 et C.2, C.1 comme entrées
pullup % 00000010' enable C.6 pullup interne résistance

' *** Initialiser l’écran LCD ***
pause pause 200' 200 mS pour l’initialisation des LCD selon les spécifications du HD44780
char = 56' installation pour 8 bits, 2 lignes et affichage de 5 X 8
GoSub CmdLCD ' envoyer les instructions pour LCD
char = 12' affichage sur, curseur off
GoSub CmdLCD ' envoyer les instructions pour LCD
char = 1' affichage clair, rentrer à la maison à la ligne 1 de l’affichage à cristaux liquides
GoSub CmdLCD ' envoyer les instructions pour LCD
attendre 1

' *** Envoyer du texte - « Température » de la ligne 1 du LCD ***
pour index = 0 à 15
indice de ReadTable, char ' lire les caractères de texte dans le tableau
GoSub TxtLCD ' envoyer le texte dans le tableau pour LCD
prochain indice

' *** Boucle principale - lire DS18B20 capteur ***
faire

char = 194' déplacer le curseur au début de la ligne 2
GoSub CmdLCD ' envoyer l’instruction à l’écran LCD
readtemp TempPin, degc ' lire la valeur de la température provenant de la sonde DS18B20 sur broche C1.0
pause 800' pause > 750 mS pour capteur selon les spécifications DS18B20
« ° c = 24 température test valeurs d’insertion ici pour vérifier la fonction code
degflag = 0' réinitialiser l’indicateur 0 c'est-à-dire assumer des températures positives de commencer par
GoSub BelowZeroC ' recherchez zéro températures inférieures
GoSub IntgOnly ' extrait de 10 et de 1 entiers de données DS18B20
GoSub DegCsign ' générer signe deg C
GoSub CheckFlag ' vérifier si vous traitez avec des températures comprises entre moins et ajuster la valeur de ° c
GoSub BelowZeroF ' recherchez zéro températures inférieures
GoSub DegFsign ' recherchez zéro températures inférieures
' générer signe deg F
boucle

' *** Sous-routines ***

CmdLCD :
faible RegSelPin ' mis en place l’écran LCD pour un octet de commande
Goto LoadLCD

TxtLCD: ' mis en place le LCD pour octets de texte
haute RegSelPin

LoadLCD: ; exécuter le chargement octets en LCD
outpinsB = char ' charger octet sur outpinsB
pulsout EnablePin, 1' charger octets sur LCD
retour

LoadIntgLCD: ' exécuter température de chargement octets de texte qui a été converti en un entier
haute RegSelPin ' mis en place le LCD pour octets de texte
outpinsB = intgval ' charger octet sur outpinsB
pulsout EnablePin, 1' exécuter chargement octets en LCD
retour

IntgOnly: ' extrait de 10, de 100 et de 1 entiers de données DS18B20
pour index = étape 2 à 0 -1 ' index pour extraire des entiers 100 ' s tout d’abord la valeur entier 10 puis 1
Let intgval = ° c indice de dig ' fonction utilisation creuser pour en extraire les entiers

Si intgval = 0 et l’index = 2 then let intgval = % 00100000 ' Blank tout menant à « 0 » sur l’écran
sinon si intgval = 0 alors laissez intgval = % 00110000' Convert entiers à codes de caractères LCD
sinon si intgval = 1 then let intgval = % 00110001
sinon si intgval = 2 then let intgval = % 00110010
sinon si intgval = 3 then let intgval = % 00110011
sinon si intgval = 4 puis laissez intgval = % 00110100
sinon si intgval = 5 alors laissez intgval = % 00110101
sinon si intgval = 6 then let intgval = % 00110110
sinon si intgval = 7 puis laissez intgval = % 00110111
sinon si intgval = 8 puis laissez intgval = % 00111000
sinon si intgval = 9 puis laissez intgval = % 00111001

endif

GoSub LoadIntgLCD ' exécuter température de chargement octets de texte qui a été converti en un entier
prochain indice
retour

DegCsign: ' créer des degrés C texte sur écran
intgval = % 11011111' character set qui seront envoyés au LCD au Code de caractère de « Degré »
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD

intgval = % 01000011' character set à envoyer à écran LCD au Code de caractère « C » pour Centigrade
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD

intgval = % 00100000' character set à envoyer à l’écran LCD pour "" Code de caractère pour un espace avant la valeur de farenheight
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD
retour

DegFsign: ' créer des degrés F texte sur écran
intgval = % 11011111' character set qui seront envoyés au LCD au Code de caractère de « Degré »
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD

intgval = % 01000110' character set à envoyer à écran LCD au Code de caractère « F » pour Farenheight
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD
retour

intgval = % 00100000' character set à envoyer à l’écran LCD pour "" Code de caractère pour un espace après la valeur de farenheight pour effacer lorsque le signe utilisé moins
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD

intgval = % 00100000' character set à envoyer à l’écran LCD pour "" Code de caractère pour un espace après la valeur de farenheight pour effacer quand intgval > 100 utilisé
GoSub LoadIntgLCD ' envoyer des caractères à l’écran LCD

DegFcalc: « valoriser Farenheight pour positive Farenheight lectures
° c = ° c * 9 / 5 + 32' calculer la valeur de Farenheight de valeur Centigrade
GoSub IntgOnly "commencer le processus pour extraire de 10, de 100 et de 1 entiers de Farenheight valeur
débogage
retour

DegFcalcPos: « valoriser Farenheight pour des lectures de Farenheight positifs lorsque celcius est négatif
° c = ° c * 9/5' calculer la valeur de Farenheight de valeur Centigrade
° c = 32-degc ' calculer la valeur de Farenheight de valeur Centigrade
GoSub IntgOnly "commencer le processus pour extraire de 10, de 100 et de 1 entiers de Farenheight valeur
retour

DegFcalcNeg: « valoriser Farenheight pour négatif Farenheight lectures
° c = ° c * 9/5-32' calculer Farenheight valeur de valeur Centigrade
GoSub IntgOnly "commencer le processus pour extraire de 10, de 100 et de 1 entiers de Farenheight valeur
retour

MinusSign :
intgval = "-" ' définir le caractère à envoyer à écran LCD au « signe » Code de caractère
GoSub LoadIntgLCD
retour

BelowZeroC: « recherchez ci-dessous zéro deg C
Sélectionnez la case degc
case 0 à 125' ignorer ce cas - la température dans la plage normale de positive

cas 129 à 183' le cas où le celsius est dans la gamme moins envoyer un caractère de signe moins pour LCD
° c = ° c-128 ' correct pour la DSDS18B20 affectant MSB « 1 » ou 128 pour moins les conditions de température
degflag = 1' ensemble drapeau indiquant les conditions de température négatif
GoSub MinusSign ' le cas où le celsius est dans la gamme moins envoyer un caractère de signe moins pour LCD
EndSelect
retour

BelowZeroF :
Sélectionnez la case degc
0 cas de 124' ignorer ce cas - la température dans la plage normale de positive
GoSub DegFcalc

-affaire 129 à 146' le cas où seul celsius est de l’ordre négatif
° c = ° c-128 ' correct pour la DSDS18B20 affectant MSB « 1 » ou 128 pour moins température conditio
GoSub DegFcalcPos

cas 147 à 183' lorsque farenheight est dans la gamme moins envoyer un caractère de signe moins pour LCD
° c = ° c-128 ' correct pour la DSDS18B20 affectant MSB « 1 » ou 128 pour moins les conditions de température
GoSub MinusSign ' lorsque farenheight est dans la gamme moins envoyer un caractère de signe moins pour LCD
GoSub DegFcalcNeg
EndSelect
retour

CheckFlag :
Si degflag = 1 puis laissez ° c = ° c + 128' Reset la correction pour la DSDS18B20 affectant MSB « 1 » ou 128 pour moins les conditions de température
endif
retour

Articles Liés

Capteur de température DS18B20 avec écran LCD

Capteur de température DS18B20 avec écran LCD

Le DS18B20 se présente sous une forme de sonde de température, qui est imperméable à l'eau. J'ai eu un temps réel dur essayer d'obtenir ce un travail et j'ai pensé que partager comment j'ai finalement obtenu qu'il fonctionne. Profitez !Étape 1: pièce
Capteur de température DS18b20 comme un Thermostat

Capteur de température DS18b20 comme un Thermostat

Ce Instructable montre comment j'ai construit le thermostat pour ma maison-assistant à l'aide d'un ESP8266 et MQTT avec un capteur de température DS18b20.Partie 1 de cette construction est de construire un senor de température à l'aide d'un DS18b20 -
Capteur de température DS18B20 ESP8266, IDE Arduino, nuage de EasyIoT

Capteur de température DS18B20 ESP8266, IDE Arduino, nuage de EasyIoT

Dans ce tutoriel, nous montrerons comment construire l'enregistreur de température DS18B20 ESP8266 WiFi connecté au EasyIoT Cloud. Tout le matériel coûte moins de 5$ sur ebay.EasyIoT nuage travaille également sur téléphone mobile ou tablette. Applica
Comment utiliser le capteur de température DS18B20 - Arduino Tutorial

Comment utiliser le capteur de température DS18B20 - Arduino Tutorial

Dans ce tutoriel, vous apprendrez comment utiliser le capteur de température DS18B20 avec Arduino.La température sera imprimée sur le moniteur série de Codebender ou IDE Arduino.Vidéo de présentation :Avant de commencer nous allons voir plus d'inform
Capteurs de température portable pour travailler dans un froid extrême

Capteurs de température portable pour travailler dans un froid extrême

Lorsque vous travaillez dans des températures extrêmes, il est important de surveiller la température de votre corps. En temps de gel, vos doigts et les orteils s'engourdissent et vous pouvez développer des engelures sans même s'en apercevoir. De mêm
Lire la température DS18B20 | Raspberry Pi 2

Lire la température DS18B20 | Raspberry Pi 2

Salut!Il s'agit de mon premier projet instructable, alors il ne sera pas aussi professionnel que les autres !Nous utilisons le capteur de température DS18B20 pour obtenir la température de votre chambre.Profitez !Étape 1: approvisionnement Vous aurez
Thermomètre numérique à écran OLED utilisant le capteur de température de NodeMCU de ESP8266 ESP-12F et DS18B20

Thermomètre numérique à écran OLED utilisant le capteur de température de NodeMCU de ESP8266 ESP-12F et DS18B20

Dans mon précédent instructable j'ai donné une introduction à ESP8266 et en programmant avec notre IDE Arduino familier.Dans ce instructable je vais aller un peu plus loin, interfaçage d'un capteur de température DS18B20 et affichage de la températur
Capteur de température WiFi DS18B20 ESP8266 (ESP8266 de l’IDE Arduino sans Arduino)

Capteur de température WiFi DS18B20 ESP8266 (ESP8266 de l’IDE Arduino sans Arduino)

Dans ce tutoriel, nous montrerons comment construire la sonde de température ESP8266 WiFi avec DB18B20. Nous utiliserons IDE Arduino, mais sans Arduino. Données seront envoyées au serveur EasyIoT (Windows ou Raspberry Pi) pour la journalisation et af
Capteur de température sans fil

Capteur de température sans fil

composé de 2 circuitsOn lit la température à l'aide d'un DS18B20, puis transmet sur les ondes radio.L'autre reçoit les données et l'affiche.J'ai testé pas entièrement la gamme encore, mais je l'ai eu plus de 12 pieds, en passant par 2 murs de travail
Envoi des données de capteur de température à la base de données d’Azur

Envoi des données de capteur de température à la base de données d’Azur

Ce projet utilise une framboise de Pi B + joint à 2 capteurs de température et envoie des données à une source de données Azure qui peut être utilisée pour créer des graphiques.Un tas de mon code d'accès à des capteurs de température provient de la A
Adaptateur RJ45 de capteur de température 1-wire

Adaptateur RJ45 de capteur de température 1-wire

1-wire est un protocole de bus électronique inventé par Dallas Semiconductor (maintenant détenue par Maxim). Une des utilisations plus populaires de 1 fils est pour capteurs de température. Le capteur de température DS18B20 est plus couramment dispon
Comment mesurer la température très précisément avec un Arduino et un Conseil de capteur de température TSYS01.

Comment mesurer la température très précisément avec un Arduino et un Conseil de capteur de température TSYS01.

Alors qu'il étudiait à l'Université, nous avons été contestés dans le cadre d'un travail en cours dans la conception d'une boîte avec un contrôle très précis de la température. Si le projet devait réussir, plusieurs boîtes devaient être construits et
Edison Intel avec Grove LCD, capteur de température et capteur infrarouge

Edison Intel avec Grove LCD, capteur de température et capteur infrarouge

Grove LCD.Temperature capteur infrarouge ESRM分別是以I2C.ADC.GPIO作為傳輸介面使用上也相當的簡單bibliothèque de MRAA中有完整的使用方式Grove的官方資料與範例也相當齊全所以實作上並不會太困難Étape 1: Grove LCD 此部分需要 importation pupm_i2clcd建議以下寫法(使用Python)importations pyupm_i2clcd lcdmyLcd = lcd. Jhd1313m1
Capteur de température pour douche

Capteur de température pour douche

avec cet appareil vous diminuer l'utilisation de l'eau dans votre maison ou votre travail. Au lieu d'attendre de voir la vapeur dans la douche pour obtenir dans, cet appareil vous aider à savoir quand l'eau son à la température souhaitée et vous pouv