Hallo
Ich wünsche euch nachträglich alles gute zu Weihnachten!
So nun zu meinen Problem,
Da ich jetzt wieder mal ein paar Tage Zeit habe/hatte dachte ich mir ich setze mich wieder mal zu meinem Spielzeug
Ich habe diese Woche mein LCD 128x64 an mein Pollin EVA Board angeschlossen
und mit einigen Anfangsproblemen läuft dieses nun. (Danke an Cassio habe seinen Code + Schaltplan verwendet obwohl der schaltplan beim Pollin - Display leider nicht 100% stimmt ?!)
Da ich auch 2 DS18S20 damals mitbestellt habe dachte ich mir ich versuche mich mal mit einer einfachen Temp - Messung.
Gesagt getan gleich mal ein paar Testscripts runtergeladen zum Probieren.
Nur will irgendwie keiner der Testscripts so richtig
Das Display zeigt immer Werte um die 300°C an (Raumtemp. ca. 22)
Habe schon verschiedene Formel für die Berechnung probiert nur bekomme ich immer einen Falschen wert.
Mit der Formel laut Datenblatt bekomme ich Werte zwischen 55-60 Grad
Hier mal mein Code
CodeBox bascom
Ich hoffe jemand von euch kann mir sagen was ich Falsch mache.
Danke
mfg
Florian
Ich wünsche euch nachträglich alles gute zu Weihnachten!
So nun zu meinen Problem,
Da ich jetzt wieder mal ein paar Tage Zeit habe/hatte dachte ich mir ich setze mich wieder mal zu meinem Spielzeug
Ich habe diese Woche mein LCD 128x64 an mein Pollin EVA Board angeschlossen
und mit einigen Anfangsproblemen läuft dieses nun. (Danke an Cassio habe seinen Code + Schaltplan verwendet obwohl der schaltplan beim Pollin - Display leider nicht 100% stimmt ?!)
Da ich auch 2 DS18S20 damals mitbestellt habe dachte ich mir ich versuche mich mal mit einer einfachen Temp - Messung.
Gesagt getan gleich mal ein paar Testscripts runtergeladen zum Probieren.
Nur will irgendwie keiner der Testscripts so richtig
Das Display zeigt immer Werte um die 300°C an (Raumtemp. ca. 22)
Habe schon verschiedene Formel für die Berechnung probiert nur bekomme ich immer einen Falschen wert.
Mit der Formel laut Datenblatt bekomme ich Werte zwischen 55-60 Grad
Hier mal mein Code
CodeBox bascom
'--------------------------------------------------------------------------'
' LCD Testprogramm '
' LCD_128x64.bas '
' 2010, Phantomias '
' Freeware '
'--------------------------------------------------------------------------'
'
'--------------------------------------------------------------------------'
$regfile = "m16def.dat" 'definieren des verwendeten Chips
$crystal = 8000000 'definieren des verwendeten externen Quarz (8MHz)
' Configuriere das LCD
'some routines to control the display are in the glcdKS108.lib file
$lib "glcdKS108.lbx"
'First we define that we use a graphic LCD
Config Graphlcd = 128 * 64sed , Dataport = Portc , Controlport = Portd , Cd = 0 , Rd = 1 , Ce = 2 , Ce2 = 3 , Enable = 4 , Reset = 5
'CE =CS1 Chip select
'CE2=CS2 Chip select second chip
'CD=Data/instruction
'RD=Read
'RESET = reset
'ENABLE= Chip Enable
Dim X As Byte , Y As Byte , Z1 As Byte , Z2 As Byte
Setfont Font8x8
Gosub Lcd_cls2
Config 1wire = Porta.0
Declare Sub Convallt ' Convert T on ALL sensors
Declare Function Decigrades(byval Sc(9) As Byte) As Single
Waitms 10
Dim B As Byte
Dim W As Word
Dim Dg As Single 'DECIgrades, I call it, cause I have no space for commas on the display....
Dim Min1 As Single
Dim Max1 As Single
Dim Deci As Integer
Dim Akt As String * 10
Dim Minn As String * 10
Dim Maxx As String * 10
Dim Line1 As String * 20
Dim Dsid1(8) As Byte
Dim Decigrades1 As Single
Dim Sc(9) As Byte
Setfont Font8x8
'---------------------------------------------------------------------------
Gosub Lcd_cls2
Lcdat 1 , 1 , " 1-Wire"
Lcdat 2 , 1 , " Thermometer"
Lcdat 3 , 1 , " mit DS18S20"
Lcdat 5 , 1 , "2010 Phantomias"
Wait 2
Gosub Lcd_cls2
W = 1wirecount()
' Search for Sensor - no errorcontrol made, but would be easy to do with the "Err"-variable
' Getting the sensor ID.
Dsid1(1) = 1wsearchfirst()
' Sensor identified and stored in variable
If Dsid1(8) = Crc8(dsid1(1) , 7) Then ' Control that the received CRC match the calculated
Lcdat 1 , 1 , "CRC OK"
Lcdat 2 , 1 , "Sensor ID"
Wait 1
End If
Wait 1
Gosub Lcd_cls2
Line1 = "Aktuell: " + Chr(248) + "C"
Lcdat 1 , 1 , Line1
Line1 = "Min: " + Chr(248) + "C"
Lcdat 3 , 1 , Line1
Line1 = "Max: " + Chr(248) + "C"
Lcdat 4 , 1 , Line1
Min1 = 9999 ' to get a real value from start
' Main loop
Do
Convallt ' "Convert ALL T on the 1w-bus"
Waitus 200 ': Waitus 200 : Waitus 200 : Waitus 200 'if you use 2-wire, could be reduced to 200us
1wverify Dsid1(1) 'Issues the "Match ROM "
If Err = 1 Then
Lcdat 1 , 1 , "Err " 'Err = 1 if something is wrong
Elseif Err = 0 Then 'lcd " Sensor found"
1wwrite &HBE
Sc(1) = 1wread(9) 'read bytes into array
If Sc(9) = Crc8(sc(1) , 8) Then
Dg = Decigrades(sc(9))
If Min1 > Dg Then Min1 = Dg
If Max1 < Dg Then Max1 = Dg
Akt = Fusing(dg , "##.##")
Minn = Fusing(min1 , " ##.##")
Maxx = Fusing(max1 , " ##.##")
Lcdat 1 , 64 , Akt 'Anzeige geändert
Lcdat 3 , 32 , Minn
Lcdat 4 , 32 , Maxx
End If
End If
Wait 1
Loop
End 'end program
'Makes the Dallas "Convert T" command on the 1w-bus configured in "Config 1wire = Portb. "
'WAIT 200-750 ms after issued, internal conversion time for the sensor
'SKIPS ROM - so it makes the conversion on ALL sensors on the bus simultaniously
'When leaving this sub, NO sensor is selected, but ALL sensors has the actual
'temperature in their scratchpad ( within 750 ms )
Sub Convallt
1wreset ' reset the bus
1wwrite &HCC ' skip rom
1wwrite &H44 ' Convert T
End Sub
'Makes a integer value of the first two bytes in scratchpad
Function Decigrades(byval Sc(9) As Byte)
Deci = 0
Deci = Makeint(sc(1) , Sc(2))
Decigrades = Deci
Decigrades = Decigrades * 50
Decigrades = Decigrades - 25
Decigrades1 = Sc(8) - Sc(7)
Decigrades1 = Decigrades1 * 100
Decigrades1 = Decigrades1 / Sc(8)
Decigrades = Decigrades + Decigrades1
Decigrades = Decigrades / 10
' Decigrades = Decigrades * 50
' Decigrades = Decigrades - 0.25
' Decigrades1 = Sc(8) - Sc(7)
' Decigrades1 = Decigrades1 * 100
' Decigrades1 = Decigrades1 / Sc(8)
' Decigrades = Decigrades + Decigrades1
' Decigrades = Decigrades / 10
End Function
'---------------------------------------------------------------------
Lcd_cls2:
Glcdcmd &H3E , 1 : Glcdcmd &H3E , 2 ' both displays off
Cls
Waitms 10
Glcdcmd &H3F , 1 : Glcdcmd &H3F , 2 'both on
Return
'---------------------------------------------------------------------
$include "font8x8.font"
Ich hoffe jemand von euch kann mir sagen was ich Falsch mache.
Danke
mfg
Florian