PICAXE - DS18B20 temperatuursensor op LCD- (4 / 7 stap)

Stap 4: Het programma

Hieronder wordt het programma geplakt. In principe kunt u volgen hoe het werkt door het lezen van de opmerkingen van het programma. Meer ervaren programmeurs zullen waarschijnlijk weten hoe eenvoudiger en efficiënter code te schrijven. Wat kan ik zeggen, dit is mijn eerste poging en het schijnt te werken.

' *** TemperatureSensor.bas ***

' Dit programma wordt uitgevoerd op een PICAXE - 20 X 2 bij 4MHz die de temperatuur leest van een
' DS18B20 temperatuursensor & verzonden naar een HD44780 compatibele 16 x 2 LCD display.
'
' Ontwikkeld door Simon Carter, 10 maart 2013.

' *** Constanten ***
symbool EnablePin = C.7 ' LCD inschakelen pin verbonden met C.7
symbool RegSelPin = C.4 ' LCD registreren Selelect pin verbonden met C.4
symbool TempPin = C.1 ' temperatuur sensorgegevens gekoppeld aan C.1
' *** Variabelen ***
symbool char = b0 ' karakter worden verzonden naar de LCD
symbool index = b1 ' gebruikt als teller in de For-Next lussen
symbool degc b2 = ' de waarde van de temperatuur van de DS18B20 sensor ontvangen
symbool intgval = b3 ' gebruikt om tijdelijk elk getalwaarde geëxtraheerd uit het aantal ontvangen van de sensor
symbool degflag = b4 ' een vlag gebruikt bij het omgaan met negatieve temperatuurbereiken. 0 = postive bereik, 1 = negatieve bereik
symbool degf = b5 ' gebruikt voor het houden van graden farenheight waarden
' *** Richtlijnen ***
#com 3' download poort opgeven
#picaxe 20 x 2' opgeven processor
#no_data ' besparen tijd downloaden
#terminal uit ' terminal-venster uitschakelen

' *** Tabel ***
Tabel 0, ("de temperatuur")

' *** Hoofdprogramma ***
dirsB = % 11111111' set alle portB-pinnen als uitgang
dirsC = % 10111001' ingesteld C.6 en C.2, C.1 als input
pullup % 00000010' inschakelen C.6 interne pullup weerstand

' *** Initialiseren het LCD ***
onderbreken 200' pauze 200 mS voor LCD initialisatie volgens de specificaties van de HD44780
char = 56' setup voor 8-bits, 2 lijnen & 5 X 8 display
GOSUB CmdLCD ' instructie verzenden LCD
char = 12' weergave op, cursor uit
GOSUB CmdLCD ' instructie verzenden LCD
char = 1' duidelijke display, ga naar huis naar lijn 1 van LCD-display
GOSUB CmdLCD ' instructie verzenden LCD
wacht 1

' *** 'Temperature' op lijn 1 van de LCD - SMS ***
voor index = 0 tot en met 15
readtable index, char ' teksttekens in de tabel lezen
GOSUB TxtLCD ' tekst in de tabel verzenden met LCD
volgende index

' *** Hoofdlus - lezen van de DS18B20 sensor ***
doen

char = 194' cursor verplaatsen naar het begin van de lijn twee
GOSUB CmdLCD ' de instructie verzenden LCD
readtemp TempPin, degc ' Lees de temperatuur van de DS18B20 sensor op pin C1.0 ontvangen
pauze 800' pauze > 750 mS voor volgens de specificaties van de DS18B20 sensor
' degc = 24 invoegen temperatuur testwaarden hier om te controleren functie
degflag = 0' reset de vlag op 0 d.w.z. veronderstellen positieve temperatuurbereik om mee te beginnen
GOSUB BelowZeroC ' Controleer voor onder nul temperaturen
GOSUB IntgOnly ' uittreksel van 10 en 1 van gehele getallen van de DS18B20 gegevens
GOSUB DegCsign ' genereren deg C teken
GOSUB CheckFlag ' controleren als te maken met temperaturen in de min bereik en aanpassen van degc waarde
GOSUB BelowZeroF ' Controleer voor onder nul temperaturen
GOSUB DegFsign ' Controleer voor onder nul temperaturen
' genereren deg F teken
lus

' *** Subroutines ***

CmdLCD:
lage RegSelPin ' LCD instellen voor een byte van de opdracht
goto LoadLCD

TxtLCD: ' LCD instellen voor tekst byte
hoge RegSelPin

LoadLCD:; uitvoeren van laden byte in LCD
outpinsB = char ' laden byte op outpinsB
pulsout EnablePin, 1' geladen bytes op LCD
terugkeer

LoadIntgLCD: ' uitvoeren laden temperatuur tekst byte die is omgebouwd tot een geheel getal
hoge RegSelPin ' LCD instellen voor tekst byte
outpinsB = intgval ' laden byte op outpinsB
pulsout EnablePin, 1' uitvoeren laden byte in LCD
terugkeer

IntgOnly: "uitpakken 100's, van 10 en 1 van gehele getallen van de DS18B20 gegevens
voor index = stap 2 tot en met 0 -1 ' index 100 's geheel getal eerst uitpakken dan 10 geheel getal dan 1 instellen
laat intgval = degc graven index ' functie gebruik graven om uit te pakken van de gehele getallen

Als intgval = 0 en de index laat intgval dan = 2% 00100000 = ' leeg alle toonaangevende "0" op het display
anders als intgval = 0 dan laat intgval = % 00110000' converteren gehele getallen tot LCD tekencodes
anders als intgval = 1 dan laten intgval = % 00110001
anders als intgval = 2 dan laten intgval = % 00110010
anders als intgval = 3 dan laat intgval = % 00110011
anders als intgval = 4 dan laat intgval = % 00110100
anders als intgval = 5 dan laten intgval = % 00110101
anders als intgval = 6 dan laten intgval = % 00110110
anders als intgval laat intgval dan = 7 = % 00110111
anders als intgval = 8 dan laat intgval = % 00111000
anders als intgval = 9 dan laten intgval = % 00111001

endif

GOSUB LoadIntgLCD ' uitvoeren laden temperatuur tekst byte die is omgebouwd tot een geheel getal
volgende index
terugkeer

DegCsign: ' Maak graden C tekst op het display
intgval = % 11011111' set karakter worden verzonden naar LCD om de tekencode "Mate"
GOSUB LoadIntgLCD ' tekens verzenden LCD

intgval = % 01000011' set karakter worden verzonden naar LCD om "C"-tekencode voor Celsius
GOSUB LoadIntgLCD ' tekens verzenden LCD

intgval = % 00100000' set karakter worden verzonden naar LCD om te "" tekencode voor een spatie voor de farenheight-waarde
GOSUB LoadIntgLCD ' tekens verzenden LCD
terugkeer

DegFsign: ' Maak graden F tekst op het display
intgval = % 11011111' set karakter worden verzonden naar LCD om de tekencode "Mate"
GOSUB LoadIntgLCD ' tekens verzenden LCD

intgval = % 01000110' set karakter worden verzonden naar LCD om de tekencode "F" voor Farenheight
GOSUB LoadIntgLCD ' tekens verzenden LCD
terugkeer

intgval = % 00100000' set karakter worden verzonden naar LCD om te "" tekencode voor een spatie na farenheight waarde te wissen wanneer minteken gebruikt
GOSUB LoadIntgLCD ' tekens verzenden LCD

intgval = % 00100000' set karakter worden verzonden naar LCD om te "" tekencode voor een spatie na farenheight waarde te wissen wanneer intgval > 100 gebruikt
GOSUB LoadIntgLCD ' tekens verzenden LCD

DegFcalc: ' Farenheight waarde voor positieve Farenheight lezingen ontlenen
degC = degc * 9 / 5 + 32' Farenheight waarde van heeft waarde berekenen
GOSUB IntgOnly ' starten als u wilt uitpakken 100's, van 10 en 1 van gehele getallen voor Farenheight waarde
debug
terugkeer

DegFcalcPos: ' Farenheight waarde voor positieve Farenheight lezingen ontlenen wanneer celcius negatief is
degC = degc * 9/5' Farenheight waarde van heeft waarde berekenen
degC = 32-degc ' Farenheight waarde van heeft waarde berekenen
GOSUB IntgOnly ' starten als u wilt uitpakken 100's, van 10 en 1 van gehele getallen voor Farenheight waarde
terugkeer

DegFcalcNeg: ' Farenheight waarde voor negatieve Farenheight lezingen ontlenen
degC = degc * 9/5-32' Farenheight waarde van heeft waarde berekenen
GOSUB IntgOnly ' starten als u wilt uitpakken 100's, van 10 en 1 van gehele getallen voor Farenheight waarde
terugkeer

MinusSign:
intgval = "-" ' karakter worden verzonden naar de LCD voor "minus teken" tekencode instellen
GOSUB LoadIntgLCD
terugkeer

BelowZeroC: ' Kijk voor hieronder nul deg C
Selecteer zaak degc
geval 0 tot 125' negeren dit geval - de temperatuur in het normale bereik van positieve

zaak 129 tot 183' het geval waar celsius in de min bereik verzenden een minteken karakter door LCD
degC degc-128 = ' correct is voor de DSDS18B20 MSB instelt op "1" of 128 voor minus temperatuur voorwaarde
degflag = 1' set vlag die aangeeft negatieve temperatuur voorwaarde
GOSUB MinusSign ' het geval waar celsius in de min bereik verzenden een minteken-karakter LCD
endselect
terugkeer

BelowZeroF:
Selecteer zaak degc
geval 0 tot 124' het negeren van dit geval - de temperatuur in het normale bereik van positieve
GOSUB DegFcalc

kast 129 tot 146' het geval waar enige celsius in de min bereik
degC degc-128 = ' correct is voor de DSDS18B20 MSB instelt op "1" of 128 voor minus temperatuur conditio
GOSUB DegFcalcPos

geval 147 naar 183' het geval waar de farenheight in de min bereik is verzenden een minteken-karakter LCD
degC degc-128 = ' correct is voor de DSDS18B20 MSB instelt op "1" of 128 voor minus temperatuur voorwaarde
GOSUB MinusSign ' het geval waar de farenheight is in de min bereik verzenden een minteken-karakter LCD
GOSUB DegFcalcNeg
endselect
terugkeer

CheckFlag:
Als degflag = 1 dan laat degc = degc + 128' Reset de correctie voor de DSDS18B20 MSB instelt op "1" of 128 voor minus temperatuur voorwaarde
endif
terugkeer

Gerelateerde Artikelen

DS18b20 temperatuursensor als een thermostaat

DS18b20 temperatuursensor als een thermostaat

Dit Instructable toont hoe ik de thermostaat gebouwd voor mijn huis-assistent met behulp van een ESP8266 en MQTT met een DS18b20 temperatuursensor.Deel 1 van deze build is het bouwen van een temperatuur sensor met behulp van een DS18b20 - de video la
ESP8266 DS18B20 temperatuursensor, Arduino IDE, EasyIoT Cloud

ESP8266 DS18B20 temperatuursensor, Arduino IDE, EasyIoT Cloud

In deze tutorial zullen we laten zien hoe bouwen WiFi ESP8266 DS18B20 temperatuur logger verbonden met EasyIoT Cloud. Alle materiaal kost minder dan 5$ op ebay.EasyIoT Cloud werkt ook op de mobiele telefoon of tablet. Native Android app is ook beschi
ESP8266 WiFi DS18B20 temperatuursensor (ESP8266 Arduino IDE zonder Arduino)

ESP8266 WiFi DS18B20 temperatuursensor (ESP8266 Arduino IDE zonder Arduino)

In deze tutorial zullen we laten zien hoe bouwen ESP8266 WiFi temperatuursensor met DB18B20. Zullen we gebruik maken van Arduino IDE, maar zonder Arduino. Gegevens zal worden verzonden naar EasyIoT server (Windows of Raspberry Pi) op het mooi scherm
DS18B20 temperatuursonde met LCD

DS18B20 temperatuursonde met LCD

De DS18B20 komt in een temperatuur sonde formulier, dat waterdicht is. Ik had een echte harde tijd proberen om dit één werkend te krijgen en ik dacht dat ik zou delen hoe ik op het einde kreeg het werkend. Geniet van!Stap 1: onderdelenDe onderdelen d
Digitale thermometer op OLED display met behulp van ESP8266 ESP-12E NodeMCU en DS18B20 temperatuursensor

Digitale thermometer op OLED display met behulp van ESP8266 ESP-12E NodeMCU en DS18B20 temperatuursensor

In mijn vorige instructable gaf ik een introductie tot de ESP8266 en programmeren met onze vertrouwde Arduino IDE.In dit instructable zal ik gaan een stap verder, een digitale temperatuursensor DS18B20 interfacing en weergave van de temperatuur in gr
Arduino aangedreven temperatuursensor met LCD Output eerste tijd auteur vermelding

Arduino aangedreven temperatuursensor met LCD Output eerste tijd auteur vermelding

Nooit geweest een kinda man van de wedstrijd, maar ik ging vooruit en ingevuld aan de eerste wedstrijd voor de auteur van de tijd, als u graag mijn intructable of zelfs alleen maar geleerd iets nieuws en denk ik heb verdiend uw stemming doe! =]Hallo
Het gebruik van de DS18B20 temperatuursensor - Arduino tutorial Arduino Tutorial

Het gebruik van de DS18B20 temperatuursensor - Arduino tutorial Arduino Tutorial

In deze tutorial leert u hoe met de DS18B20 temp sensor met Arduino.De temperatuur moet worden afgedrukt op de seriële monitor van Codebender of de Arduino IDE.Presentatie Video:Voordat we laten we beginnen Zie meer informatie over deze sensor.Stap 1
Arduino - Nokia 5110 LCD temperatuurmeter met de DS18B20

Arduino - Nokia 5110 LCD temperatuurmeter met de DS18B20

Hallo mensen! Ik maakte een temperatuurmeter met een Nokia 5110 LCD.Ik heb toegevoegd de librarys en ik maakte een beeld voor de LCD-achtergrond met een afgeronde rand en temperatuur pictogram diewordt toegevoegd aan de LCD5110_Graph Library en heet
LCD klok met Hebreeuwse kalenderdatum en een Thermometer

LCD klok met Hebreeuwse kalenderdatum en een Thermometer

Dit project is een klok die de tijd, datum en temperatuur kunt weergeven. De belangrijkste uniek kenmerk van deze klok is de mogelijkheid om de datum in Hebreeuws (joodse) agenda-indeling weergeven. Sommige andere speciale functies zijn:U kunt instel
Arduino Digitale Thermometer (met DS18B20)

Arduino Digitale Thermometer (met DS18B20)

Hallovandaag zal ik u tonen hoe te maken van uw eigen digitale thermometer met arduino uno en DS18B20 temperatuursensor.Deze thermometer kan het meten van temperaturen van-55 ° C tot +125 ° C (-67 ° F tot +257 ° F). Het heeft aan knoppen, een om te s
Digitale Thermometer met Arduino & DS18B20

Digitale Thermometer met Arduino & DS18B20

gewoon maken een digitale thermometer met kan u vertellen de huidige kamertemperatuur op een LCD-scherm. Dit is een project voor beginners.Apparatuur die u nodig hebt:1. de Arduino UNO R32. de DS18B20 temperatuursensor.3. 16 x 2 LCD-scherm.4. aanslui
OLED + temperatuursensor op Espruino (JavaScript op MCU)

OLED + temperatuursensor op Espruino (JavaScript op MCU)

Twee korte voorbeelden van de lezing van de temperatuur van de DS18B20 of DHT22 sensor en laten zien op OLED display (4-draads SPI) of (2-draads I2C).Alles is bedraad rechtstreeks met het breadboard kabels aan de Espruino Pico -bestuur.Geen externe v
Temp. Sensor weergave op LCD w / Arduino

Temp. Sensor weergave op LCD w / Arduino

Wat het eigenlijk doet:Dit arduino project detecteert de temperatuur van de temperatuursensor. Wanneer het detecteert de temperatuur het toont het op de seriële monitor, die ik persoonlijk denk dat is natuurlijk zeer vervelend. Nu op te lossen dat ik
Arduino 8 x 8 RGB LED Matrix Controller with 4 Shift Registers en temperatuursensor

Arduino 8 x 8 RGB LED Matrix Controller with 4 Shift Registers en temperatuursensor

De eerste helft van deze instructievideo toont dat een voltooide project van een Arduino met 4 shift registers (74HC595) gebruikt om te bepalen en 8 x 8 RGB LED Matrix. Er is ook een DS18B20 temperatuursensor gebruikt voor weergave van de temperatuur