اطلاعیه

Collapse
No announcement yet.

مشگل در نگه داشتن دما ثابت در محدوده منفی

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

    این کد رو هم یه امتحان بکن
    راستی اگه سنور دما دوتان اون یکی رو هم امتحان بکن
    کد:
    $regfile = "m16def.dat"
    $crystal = 2000000
    Config Lcdpin = Pin , Rs = Porta.7 , E = Porta.6 , Db4 = Porta.5 , Db5 = Porta.4 , _
     Db6 = Porta.3 , Db7 = Porta.2
    Config Lcd = 16 * 2
    Cursor Off
    Config Single = Scientific , Digits = 1
    Config 1wire = Portd.7
    Dim Ss As String * 30
    Dim Temp As String * 6
    Dim Temp1 As String * 6
    Dim Temp2 As String * 6
    Dim I1 As Integer
    Dim I2 As Integer
    Dim I11 As Single
    Dim I22 As Single
    Dim Dsid1(8) As Byte
    Dim Dsid2(8) As Byte
    '##############################################################################'
    Dim L As Single
    Dim H As Single
    Dim Ll As String * 4
    Dim Hh As String * 4
    Dim T As Single
    Dim T1 As Single
    Dim T2 As Single
    Dim Dt As Single
    Dim F As Byte , V As Byte , Kilid As Byte
    Dim String_s As String * 3 , String_a As String * 2 , Sr(5) As String * 1 , P(5) As Integer
    Dim Val_s As Single , D1 As Word , D2 As Word
    Dim Cont(5) As Byte , I As Integer , N As Byte , Ul As String * 6
    Dim Pg As Single , R As Byte , W As Word
    Declare Sub Segment
    '##############################################################################'
    W = 1wirecount()
    Dsid1(1) = 1wsearchfirst()
    'Dsid2(1) = 1wsearchnext()
    '**************'
    Config Portb = Output
    Config Portc = Output
    Config Portd.2 = Output
    Config Portd.0 = Output
    Config Porta.1 = Output
    Config Porta.0 = Output
    Config Portd.1 = Input
    Config Portd.5 = Input
    Config Portd.6 = Input
    Config Portd.4 = Input
    Config Portd.3 = Input
    '**************'
    Set Porta.1
    Cls
    Lcd "azar"
    Wait 2
    For N = 0 To 167
    Segment
    Portb = &B01000000
    Next
    R = 1
    Submain:
    Set Porta.1
    F = 1
    Cls
    Cursor Off
    Readeeprom L , 1
    Waitms 5
    Readeeprom H , 8
    Waitms 5
    Readeeprom Kilid , 12
    Waitms 5
    Ll = Fusing(l , "#.#")
    Do
    If Pind.5 = 0 And F = 0 Then Goto Settempon
    1wreset
    1wwrite &HCC
    1wwrite &H44
    '=================================
    If R = 1 Then
    Waitms 1000
    R = 0
    End If
    If R = 0 Then
    For N = 0 To 60
    Segment
    Next
    End If
    If Err = 1 Then
    Cls
    Locate 1 , 4
    Lcd "No DS18B20"
    Wait 1
    Portb = &H00
    Else
    '---------------------------------'
    Segment
    1wreset
    1wwrite &HCC
    '1wverify Dsid1(1)
    1wwrite &HBE
    I1 = 1wread(2)
    '---------------------------------'
    'Segment
    '1wreset
    '1wwrite &HCC
    '1wverify Dsid2(1)
    '1wwrite &HBE
    'I2 = 1wread(2)
    Segment
    '---------------------------------'
    Ss = ""
    I11 = I1 \ 16
    Ss = Fusing(i11 , "#.##")
    Temp1 = Ss
    Segment
    Dt = Val(temp1)
    T1 = Dt
    'Ss = ""
    'I22 = I2 \ 16
    'Segment
    'Ss = Fusing(i22 , "#.##")
    'Temp2 = Ss
    'Dt = Val(temp2)
    'T2 = Dt
    Segment
    If Kilid = 0 Then T = T1
    If Kilid = 1 Then T = T2
    If Pind.6 = 0 And V = 0 Then
    Incr Kilid
    If Kilid > 1 Then Kilid = 0
    V = 1
    Writeeeprom Kilid , 12
    Waitms 5
    Cls
    Waitms 300
    Cls
    End If
    Segment
    
    If Pind.6 = 1 Then V = 0
    Locate 1 , 1
    If Kilid = 0 Then
    Lcd "Temp=" ; Temp1 ; Chr(223) ; "C   "
    Temp = Temp1
    End If
    Segment
    If Kilid = 1 Then
    Lcd "Temp=" ; Temp2 ; ":" ; ; Chr(223) ; "C   "
    Temp = Temp2
    End If
    Segment
    '====================7segment formol==
    If T < 0 Then
     Pg = Abs(t)
     Else
     Pg = -1
     End If
    If T >= 100 Then String_s = Left(temp , 3)
    If T >= 10 And T < 100 Then String_s = Left(temp , 2)
    If T < 10 Then String_s = Left(temp , 1)
    String_a = Right(temp , 2)
    Segment
    If T < 10 And T >= 0 Then
    Cont(1) = 1 : Cont(2) = 4 : Cont(3) = 5 : Cont(4) = 20 : Cont(5) = 20
    Elseif T >= 10 And T < 100 Then
    Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
    Elseif T >= 100 Then
    Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
    End If
    Segment
    If Pg >= 10 And Pg < 100 Then String_s = Mid(temp , 2 , 2)
    If Pg < 10 And Pg >= 0 Then String_s = Mid(temp , 2 , 1)
    String_a = Right(temp , 2)
    Segment
    If Pg < 10 And Pg >= 0 Then
    Cont(1) = 30 : Cont(2) = 1 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
    Elseif Pg >= 10 And Pg < 100 Then
    Cont(1) = 30 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
    End If
    Segment
    Sr(1) = Left(string_s , 1)
    If T => 0 Then Sr(2) = Mid(string_s , 2 , 1)
    If T < 0 Then Sr(2) = Left(string_s , 1 )
    Segment
    Sr(3) = Right(string_s , 1)
    Sr(4) = Left(string_a , 1)
    Sr(5) = Right(string_a , 1)
    Segment
    P(1) = Val(sr(cont(1)))
    P(2) = Val(sr(cont(2)))
    P(3) = Val(sr(cont(3)))
    P(4) = Val(sr(cont(4)))
    P(5) = Val(sr(cont(5)))
    '============================
    Segment
    Locate 2 , 1
    Lcd "Temp Off:" ; L ; Chr(223) ; "C  "
    Segment
    End If
    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
    Segment
    If T > L And T < H Then
    End If
    Segment
    '=================Gharm Shodan                        '
    If T > L Then
    Locate 1 , 16
    Lcd "*"
    Segment
    Set Portd.2
    Set Porta.0
    Reset Portd.0
    For N = 0 To 34
    Segment
    Next
    Else
    Locate 1 , 14
    Lcd " "
    Segment
    Reset Portd.2
    Reset Porta.0
    For N = 0 To 10
    Segment
    Next
    End If
    If Pind.5 = 1 Then F = 0
    Segment
    '=============
    Loop
    '###############################temp control####################################
    Settempon:
    Portb = &H00
    F = 1
    Cursor Off
    Locate 1 , 1
    Cls
    Lcd "Set Temp Off"
    Do
    Waitms 100
    If Pind.3 = 0 Then L = L + 0.1
    If Pind.4 = 0 Then L = L -0.1
    If Pind.5 = 0 And F = 0 Then
    Cls
    Lcd "  SAVING..."
    Waitms 700
    Writeeeprom L , 1
    Waitms 5
    Cls
    Goto Submain
    End If
    Locate 2 , 1
    Lcd "Temp Off = " ; L ; Chr(0) ; "c "
    If Pind.5 = 1 Then F = 0
    Waitms 120
    Loop
    '############################7Segment module####################################
    Sub Segment
    Set Portc.5
    Set Portc.4
    Set Portc.3
    Set Portc.2
    Set Portc.1
    Reset Portc.0
    Portb = Lookup(p(1) , Temp_data)
    If T < 10 Then Portb = Portb Or &H80
    If T < 0 Then Portb = &H40
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.4
    Set Portc.3
    Set Portc.2
    Set Portc.0
    Reset Portc.1
    Portb = Lookup(p(2) , Temp_data)
    If T => 10 And T < 100 Then Portb = Portb Or &H80
    If Pg < 10 And Pg > 0 Then Portb = Portb Or &H80
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.4
    Set Portc.3
    Set Portc.1
    Set Portc.0
    Reset Portc.2
    If Cont(3) <> 20 Then Portb = Lookup(p(3) , Temp_data)
    If T >= 100 Then Portb = Portb Or &H80
    If Pg => 10 And Pg < 100 Then Portb = Portb Or &H80
    If Cont(3) = 20 Then Portb = &H39
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.4
    Set Portc.2
    Set Portc.1
    Set Portc.0
    Reset Portc.3
    If Cont(4) <> 20 Then Portb = Lookup(p(4) , Temp_data)
    If Cont(4) = 20 And Cont(3) <> 20 And T => 0 Then
    Portb = &H39
    Elseif Cont(4) = 20 Then
    Portb = &H00
    End If
    If Pg >= 100 Then Portb = Portb Or &H80
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.3
    Set Portc.2
    Set Portc.1
    Set Portc.0
    Reset Portc.4
    If Cont(5) <> 20 Then Portb = Lookup(p(5) , Temp_data)
    If Cont(5) = 20 And Cont(4) <> 20 Then
     Portb = &H39
     Elseif Cont(5) = 20 Then
     Portb = &H00
     End If
    Waitms 1
    '=============
    Set Portc.4
    Set Portc.3
    Set Portc.2
    Set Portc.1
    Set Portc.0
    Reset Portc.5
    If Cont(5) = 20 Then Portb = &B0000000
    If Cont(5) <> 20 Then Portb = &H39
    Waitms 1
    '=============
    End Sub
    '#############################eeprom data#######################################
    Temp_data:
    Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F
    '###############################################################################
    Dta:
    $eeprom
    Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
    $data

    اضافه شده در تاریخ :
    راستی اگه طول سیم ارتباطی سنسور با مدار بیشتر از یک متره به جای 4.7 کیلو 3.3 کیلو بزار اگه نه که همون 4.7 خوبه

    اضافه شده در تاریخ :
    آقا شرمنده من فرکانسشو به 4 مگا ارتقا دادم من فکر می کنم میکرو از لحاظ سرعت یکم کنده
    پس این برنامه رو پروگرام کن بعد فرکانس میکرو رو رو 4 مگا قرار بده برنامه قبلی رو بیخیال اینو امتحان کن
    کد:
    $regfile = "m16def.dat"
    $crystal = 4000000
    Config Lcdpin = Pin , Rs = Porta.7 , E = Porta.6 , Db4 = Porta.5 , Db5 = Porta.4 , _
     Db6 = Porta.3 , Db7 = Porta.2
    Config Lcd = 16 * 2
    Cursor Off
    Config Single = Scientific , Digits = 1
    Config 1wire = Portd.7
    Dim Ss As String * 30
    Dim Temp As String * 6
    Dim Temp1 As String * 6
    Dim Temp2 As String * 6
    Dim I1 As Integer
    Dim I2 As Integer
    Dim I11 As Single
    Dim I22 As Single
    Dim Dsid1(8) As Byte
    Dim Dsid2(8) As Byte
    '##############################################################################'
    Dim L As Single
    Dim H As Single
    Dim Ll As String * 4
    Dim Hh As String * 4
    Dim T As Single
    Dim T1 As Single
    Dim T2 As Single
    Dim Dt As Single
    Dim F As Byte , V As Byte , Kilid As Byte
    Dim String_s As String * 3 , String_a As String * 2 , Sr(5) As String * 1 , P(5) As Integer
    Dim Val_s As Single , D1 As Word , D2 As Word
    Dim Cont(5) As Byte , I As Integer , N As Byte , Ul As String * 6
    Dim Pg As Single , R As Byte , W As Word
    Declare Sub Segment
    '##############################################################################'
    W = 1wirecount()
    Dsid1(1) = 1wsearchfirst()
    'Dsid2(1) = 1wsearchnext()
    '**************'
    Config Portb = Output
    Config Portc = Output
    Config Portd.2 = Output
    Config Portd.0 = Output
    Config Porta.1 = Output
    Config Porta.0 = Output
    Config Portd.1 = Input
    Config Portd.5 = Input
    Config Portd.6 = Input
    Config Portd.4 = Input
    Config Portd.3 = Input
    '**************'
    Set Porta.1
    Cls
    Lcd "azar"
    Wait 2
    For N = 0 To 167
    Segment
    Portb = &B01000000
    Next
    R = 1
    Submain:
    Set Porta.1
    F = 1
    Cls
    Cursor Off
    Readeeprom L , 1
    Waitms 5
    Readeeprom H , 8
    Waitms 5
    Readeeprom Kilid , 12
    Waitms 5
    Ll = Fusing(l , "#.#")
    Do
    If Pind.5 = 0 And F = 0 Then Goto Settempon
    1wreset
    1wwrite &HCC
    1wwrite &H44
    '=================================
    If R = 1 Then
    Waitms 1000
    R = 0
    End If
    If R = 0 Then
    For N = 0 To 80
    Segment
    Next
    End If
    If Err = 1 Then
    Cls
    Locate 1 , 4
    Lcd "No DS18B20"
    Wait 1
    Portb = &H00
    Else
    '---------------------------------'
    Segment
    1wreset
    1wwrite &HCC
    1wverify Dsid1(1)
    1wwrite &HBE
    I1 = 1wread(2)
    '---------------------------------'
    'Segment
    '1wreset
    '1wwrite &HCC
    '1wverify Dsid2(1)
    '1wwrite &HBE
    'I2 = 1wread(2)
    Segment
    '---------------------------------'
    Ss = ""
    I11 = I1 \ 16
    Ss = Fusing(i11 , "#.##")
    Temp1 = Ss
    Segment
    Dt = Val(temp1)
    T1 = Dt
    'Ss = ""
    'I22 = I2 \ 16
    'Segment
    'Ss = Fusing(i22 , "#.##")
    'Temp2 = Ss
    'Dt = Val(temp2)
    'T2 = Dt
    Segment
    If Kilid = 0 Then T = T1
    If Kilid = 1 Then T = T2
    If Pind.6 = 0 And V = 0 Then
    Incr Kilid
    If Kilid > 1 Then Kilid = 0
    V = 1
    Writeeeprom Kilid , 12
    Waitms 5
    Cls
    Waitms 300
    Cls
    End If
    Segment
    
    If Pind.6 = 1 Then V = 0
    Locate 1 , 1
    If Kilid = 0 Then
    Lcd "Temp=" ; Temp1 ; Chr(223) ; "C   "
    Temp = Temp1
    End If
    Segment
    If Kilid = 1 Then
    Lcd "Temp=" ; Temp2 ; ":" ; ; Chr(223) ; "C   "
    Temp = Temp2
    End If
    Segment
    '====================7segment formol==
    If T < 0 Then
     Pg = Abs(t)
     Else
     Pg = -1
     End If
    If T >= 100 Then String_s = Left(temp , 3)
    If T >= 10 And T < 100 Then String_s = Left(temp , 2)
    If T < 10 Then String_s = Left(temp , 1)
    String_a = Right(temp , 2)
    Segment
    If T < 10 And T >= 0 Then
    Cont(1) = 1 : Cont(2) = 4 : Cont(3) = 5 : Cont(4) = 20 : Cont(5) = 20
    Elseif T >= 10 And T < 100 Then
    Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
    Elseif T >= 100 Then
    Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
    End If
    Segment
    If Pg >= 10 And Pg < 100 Then String_s = Mid(temp , 2 , 2)
    If Pg < 10 And Pg >= 0 Then String_s = Mid(temp , 2 , 1)
    String_a = Right(temp , 2)
    Segment
    If Pg < 10 And Pg >= 0 Then
    Cont(1) = 30 : Cont(2) = 1 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
    Elseif Pg >= 10 And Pg < 100 Then
    Cont(1) = 30 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
    End If
    Segment
    Sr(1) = Left(string_s , 1)
    If T => 0 Then Sr(2) = Mid(string_s , 2 , 1)
    If T < 0 Then Sr(2) = Left(string_s , 1 )
    Segment
    Sr(3) = Right(string_s , 1)
    Sr(4) = Left(string_a , 1)
    Sr(5) = Right(string_a , 1)
    Segment
    P(1) = Val(sr(cont(1)))
    P(2) = Val(sr(cont(2)))
    P(3) = Val(sr(cont(3)))
    P(4) = Val(sr(cont(4)))
    P(5) = Val(sr(cont(5)))
    '============================
    Segment
    Locate 2 , 1
    Lcd "Temp Off:" ; L ; Chr(223) ; "C  "
    Segment
    End If
    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
    Segment
    If T > L And T < H Then
    End If
    Segment
    '=================Gharm Shodan                        '
    If T > L Then
    Locate 1 , 16
    Lcd "*"
    Segment
    Set Portd.2
    Set Porta.0
    Reset Portd.0
    For N = 0 To 34
    Segment
    Next
    Else
    Locate 1 , 14
    Lcd " "
    Segment
    Reset Portd.2
    Reset Porta.0
    For N = 0 To 10
    Segment
    Next
    End If
    If Pind.5 = 1 Then F = 0
    Segment
    '=============
    Loop
    '###############################temp control####################################
    Settempon:
    Portb = &H00
    F = 1
    Cursor Off
    Locate 1 , 1
    Cls
    Lcd "Set Temp Off"
    Do
    Waitms 100
    If Pind.3 = 0 Then L = L + 0.1
    If Pind.4 = 0 Then L = L -0.1
    If Pind.5 = 0 And F = 0 Then
    Cls
    Lcd "  SAVING..."
    Waitms 700
    Writeeeprom L , 1
    Waitms 5
    Cls
    Goto Submain
    End If
    Locate 2 , 1
    Lcd "Temp Off = " ; L ; Chr(0) ; "c "
    If Pind.5 = 1 Then F = 0
    Waitms 120
    Loop
    '############################7Segment module####################################
    Sub Segment
    Set Portc.5
    Set Portc.4
    Set Portc.3
    Set Portc.2
    Set Portc.1
    Reset Portc.0
    Portb = Lookup(p(1) , Temp_data)
    If T < 10 Then Portb = Portb Or &H80
    If T < 0 Then Portb = &H40
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.4
    Set Portc.3
    Set Portc.2
    Set Portc.0
    Reset Portc.1
    Portb = Lookup(p(2) , Temp_data)
    If T => 10 And T < 100 Then Portb = Portb Or &H80
    If Pg < 10 And Pg > 0 Then Portb = Portb Or &H80
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.4
    Set Portc.3
    Set Portc.1
    Set Portc.0
    Reset Portc.2
    If Cont(3) <> 20 Then Portb = Lookup(p(3) , Temp_data)
    If T >= 100 Then Portb = Portb Or &H80
    If Pg => 10 And Pg < 100 Then Portb = Portb Or &H80
    If Cont(3) = 20 Then Portb = &H39
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.4
    Set Portc.2
    Set Portc.1
    Set Portc.0
    Reset Portc.3
    If Cont(4) <> 20 Then Portb = Lookup(p(4) , Temp_data)
    If Cont(4) = 20 And Cont(3) <> 20 And T => 0 Then
    Portb = &H39
    Elseif Cont(4) = 20 Then
    Portb = &H00
    End If
    If Pg >= 100 Then Portb = Portb Or &H80
    Waitms 1
    '=============
    Set Portc.5
    Set Portc.3
    Set Portc.2
    Set Portc.1
    Set Portc.0
    Reset Portc.4
    If Cont(5) <> 20 Then Portb = Lookup(p(5) , Temp_data)
    If Cont(5) = 20 And Cont(4) <> 20 Then
     Portb = &H39
     Elseif Cont(5) = 20 Then
     Portb = &H00
     End If
    Waitms 1
    '=============
    Set Portc.4
    Set Portc.3
    Set Portc.2
    Set Portc.1
    Set Portc.0
    Reset Portc.5
    If Cont(5) = 20 Then Portb = &B0000000
    If Cont(5) <> 20 Then Portb = &H39
    Waitms 1
    '=============
    End Sub
    '#############################eeprom data#######################################
    Temp_data:
    Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F
    '###############################################################################
    Dta:
    $eeprom
    Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
    $data
    برد جوجه کشی:
    مطالعه پست 1 (حتما مطالعه کنید)


    مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

    دانلود

    توجه:
    این برد نیمه صنعتی و خانگی هست...
    برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

    آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

    دیدگاه


      پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

      آقا محمد ممنون
      فک کنم این دفعه هم میخواد این اذیت کنه :cry2:
      رو همون 85 هست تکون نمیخوره
      وقتی هم میزنم سنسور بعدی رو بخونه 0 رو نشون میده
      :cry2:

      دیدگاه


        پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

        نوشته اصلی توسط mohammad safarnejad
        آقا محمد ممنون
        فک کنم این دفعه هم میخواد این اذیت کنه :cry2:
        رو همون 85 هست تکون نمیخوره
        وقتی هم میزنم سنسور بعدی رو بخونه 0 رو نشون میده
        :cry2:
        ادامشو نگه داریم واسه فردا خوابم میاد تمرکز ندارم
        شب بخیر :smile:
        برد جوجه کشی:
        مطالعه پست 1 (حتما مطالعه کنید)


        مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

        دانلود

        توجه:
        این برد نیمه صنعتی و خانگی هست...
        برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

        آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

        دیدگاه


          پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

          نوشته اصلی توسط mohammad...
          ادامشو نگه داریم واسه فردا خوابم میاد تمرکز ندارم
          شب بخیر :smile:
          ممنون
          شب بخیر

          دیدگاه


            پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

            سلام
            این کد رو من عملی تست کردم مدار جوجه کشی که قبلا داشتم رو اون تست کردم
            همین دو تا سنسور رو وصل کردم اولش کار نمی کرد یکی از سنسورا درست کار می کرد ولی دومی یه چیز دیگه نشون میداد
            برنامه رو زیاد تغییر ندادم
            ولی اون for n=0 to 133 رو به هیچ عنوان دستکاری نکن و الا همه چی بهم میریزه
            این برنامه آخره اگه مشکل قفل کردن داشته باشی فقط یکی از سنسورا رو امتحان کن اصلا من امتحان کردم عدد 85 ندیدم بلکه مستقیم دما رو می خونه
            فرکانسو هم به 2 مگا قبلی تغییر دادم jtag هم مثل قبل غیر فعاله
            امیدوارم مشکلت حل بشه
            الان یه ساعته گذاشتم عین ساعت هردو تا سنسور کار می کنه :mrgreen:
            اینم برنامه
            کد:
            $regfile = "m16def.dat"
            $crystal = 2000000
            Config Lcdpin = Pin , Rs = Porta.7 , E = Porta.6 , Db4 = Porta.5 , Db5 = Porta.4 , _
             Db6 = Porta.3 , Db7 = Porta.2
            Config Lcd = 16 * 2
            Cursor Off
            Config Single = Scientific , Digits = 1
            Config 1wire = Portd.7
            Dim Ss As String * 30
            Dim Temp As String * 6
            Dim Temp1 As String * 6
            Dim Temp2 As String * 6
            Dim I1 As Integer
            Dim I2 As Integer
            Dim I11 As Single
            Dim I22 As Single
            Dim Dsid1(8) As Byte
            Dim Dsid2(8) As Byte
            '##############################################################################'
            Dim L As Single
            Dim H As Single
            Dim Ll As String * 4
            Dim Hh As String * 4
            Dim T As Single
            Dim T1 As Single
            Dim T2 As Single
            Dim Dt As Single
            Dim F As Byte , V As Byte , Kilid As Byte
            Dim String_s As String * 3 , String_a As String * 2 , Sr(5) As String * 1 , P(5) As Integer
            Dim Val_s As Single , D1 As Word , D2 As Word
            Dim Cont(5) As Byte , I As Integer , N As Byte , Ul As String * 6
            Dim Pg As Single , R As Byte
            Declare Sub Segment
            '##############################################################################'
            Dsid1(1) = 1wsearchfirst()
            Dsid2(1) = 1wsearchnext()
            '**************'
            Config Portb = Output
            Config Portc = Output
            Config Portd.2 = Output
            Config Portd.0 = Output
            Config Porta.1 = Output
            Config Porta.0 = Output
            Config Portd.1 = Input
            Config Portd.5 = Input
            Config Portd.6 = Input
            Config Portd.4 = Input
            Config Portd.3 = Input
            '**************'
            Set Porta.1
            Cls
            Lcd "azar"
            Wait 2
            R = 1
            Submain:
            Set Porta.1
            F = 1
            Cls
            Cursor Off
            Readeeprom L , 1
            Waitms 5
            Readeeprom H , 8
            Waitms 5
            Readeeprom Kilid , 12
            Waitms 5
            Ll = Fusing(l , "#.#")
            Do
            If Pind.5 = 0 And F = 0 Then Goto Settempon
            1wreset
            1wwrite &HCC
            1wwrite &H44
            '=================================
            If R = 1 Then
            Waitms 900
            R = 0
            End If
            If R = 0 Then
            For N = 0 To 133
            Segment
            Next
            End If
            If Err = 1 Then
            Cls
            Locate 1 , 4
            Lcd "No DS18B20"
            Wait 1
            Portb = &H00
            Else
            '---------------------------------'
            Segment
            1wreset
            1wwrite &HCC
            1wverify Dsid1(1)
            1wwrite &HBE
            I1 = 1wread(2)
            '---------------------------------'
            Segment
            1wreset
            1wwrite &HCC
            1wverify Dsid2(1)
            1wwrite &HBE
            I2 = 1wread(2)
            Segment
            '---------------------------------'
            Ss = ""
            I11 = I1 \ 16
            Ss = Fusing(i11 , "#.##")
            Temp1 = Ss
            Segment
            Dt = Val(temp1)
            T1 = Dt
            Ss = ""
            I22 = I2 \ 16
            Segment
            Ss = Fusing(i22 , "#.##")
            Temp2 = Ss
            Dt = Val(temp2)
            T2 = Dt
            Segment
            If Kilid = 0 Then T = T1
            If Kilid = 1 Then T = T2
            If Pind.6 = 0 And V = 0 Then
            Incr Kilid
            If Kilid > 1 Then Kilid = 0
            V = 1
            Writeeeprom Kilid , 12
            Waitms 5
            Cls
            Waitms 300
            Cls
            End If
            Segment
            If Pind.6 = 1 Then V = 0
            Locate 1 , 1
            If Kilid = 0 Then
            Lcd "Temp=" ; Temp1 ; Chr(223) ; "C   "
            Temp = Temp1
            End If
            Segment
            If Kilid = 1 Then
            Lcd "Temp=" ; Temp2 ; ":" ; ; Chr(223) ; "C   "
            Temp = Temp2
            End If
            Segment
            '====================7segment formol==
            If T < 0 Then
             Pg = Abs(t)
             Else
             Pg = -1
             End If
            If T >= 100 Then String_s = Left(temp , 3)
            If T >= 10 And T < 100 Then String_s = Left(temp , 2)
            If T < 10 Then String_s = Left(temp , 1)
            String_a = Right(temp , 2)
            Segment
            If T < 10 And T >= 0 Then
            Cont(1) = 1 : Cont(2) = 4 : Cont(3) = 5 : Cont(4) = 20 : Cont(5) = 20
            Elseif T >= 10 And T < 100 Then
            Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
            Elseif T >= 100 Then
            Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
            End If
            Segment
            If Pg >= 10 And Pg < 100 Then String_s = Mid(temp , 2 , 2)
            If Pg < 10 And Pg >= 0 Then String_s = Mid(temp , 2 , 1)
            String_a = Right(temp , 2)
            Segment
            If Pg < 10 And Pg >= 0 Then
            Cont(1) = 30 : Cont(2) = 1 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
            Elseif Pg >= 10 And Pg < 100 Then
            Cont(1) = 30 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
            End If
            Segment
            Sr(1) = Left(string_s , 1)
            If T => 0 Then Sr(2) = Mid(string_s , 2 , 1)
            If T < 0 Then Sr(2) = Left(string_s , 1 )
            Segment
            Sr(3) = Right(string_s , 1)
            Sr(4) = Left(string_a , 1)
            Sr(5) = Right(string_a , 1)
            Segment
            P(1) = Val(sr(cont(1)))
            P(2) = Val(sr(cont(2)))
            P(3) = Val(sr(cont(3)))
            P(4) = Val(sr(cont(4)))
            P(5) = Val(sr(cont(5)))
            '============================
            Segment
            Locate 2 , 1
            Lcd "Temp Off:" ; L ; Chr(223) ; "C  "
            Segment
            End If
            Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
            Segment
            If T > L And T < H Then
            End If
            Segment
            '=================Gharm Shodan                        '
            If T > L Then
            Locate 1 , 16
            Lcd "*"
            Segment
            Set Portd.2
            Set Porta.0
            Reset Portd.0
            For N = 0 To 34
            Segment
            Next
            Else
            Locate 1 , 14
            Lcd " "
            Segment
            Reset Portd.2
            Reset Porta.0
            For N = 0 To 10
            Segment
            Next
            End If
            If Pind.5 = 1 Then F = 0
            Segment
            '=============
            Loop
            '###############################temp control####################################
            Settempon:
            Portb = &H00
            F = 1
            Cursor Off
            Locate 1 , 1
            Cls
            Lcd "Set Temp Off"
            Do
            Waitms 100
            If Pind.3 = 0 Then L = L + 0.1
            If Pind.4 = 0 Then L = L -0.1
            If Pind.5 = 0 And F = 0 Then
            Cls
            Lcd "  SAVING..."
            Waitms 700
            Writeeeprom L , 1
            Waitms 5
            Cls
            Goto Submain
            End If
            Locate 2 , 1
            Lcd "Temp Off = " ; L ; Chr(0) ; "c "
            If Pind.5 = 1 Then F = 0
            Waitms 120
            Loop
            '############################7Segment module####################################
            Sub Segment
            Set Portc.5
            Set Portc.4
            Set Portc.3
            Set Portc.2
            Set Portc.1
            Reset Portc.0
            Portb = Lookup(p(1) , Temp_data)
            If T < 10 Then Portb = Portb Or &H80
            If T < 0 Then Portb = &H40
            Waitms 1
            '=============
            Set Portc.5
            Set Portc.4
            Set Portc.3
            Set Portc.2
            Set Portc.0
            Reset Portc.1
            Portb = Lookup(p(2) , Temp_data)
            If T => 10 And T < 100 Then Portb = Portb Or &H80
            If Pg < 10 And Pg > 0 Then Portb = Portb Or &H80
            Waitms 1
            '=============
            Set Portc.5
            Set Portc.4
            Set Portc.3
            Set Portc.1
            Set Portc.0
            Reset Portc.2
            If Cont(3) <> 20 Then Portb = Lookup(p(3) , Temp_data)
            If T >= 100 Then Portb = Portb Or &H80
            If Pg => 10 And Pg < 100 Then Portb = Portb Or &H80
            If Cont(3) = 20 Then Portb = &H39
            Waitms 1
            '=============
            Set Portc.5
            Set Portc.4
            Set Portc.2
            Set Portc.1
            Set Portc.0
            Reset Portc.3
            If Cont(4) <> 20 Then Portb = Lookup(p(4) , Temp_data)
            If Cont(4) = 20 And Cont(3) <> 20 And T => 0 Then
            Portb = &H39
            Elseif Cont(4) = 20 Then
            Portb = &H00
            End If
            If Pg >= 100 Then Portb = Portb Or &H80
            Waitms 1
            '=============
            Set Portc.5
            Set Portc.3
            Set Portc.2
            Set Portc.1
            Set Portc.0
            Reset Portc.4
            If Cont(5) <> 20 Then Portb = Lookup(p(5) , Temp_data)
            If Cont(5) = 20 And Cont(4) <> 20 Then
             Portb = &H39
             Elseif Cont(5) = 20 Then
             Portb = &H00
             End If
            Waitms 1
            '=============
            Set Portc.4
            Set Portc.3
            Set Portc.2
            Set Portc.1
            Set Portc.0
            Reset Portc.5
            If Cont(5) = 20 Then Portb = &B0000000
            If Cont(5) <> 20 Then Portb = &H39
            Waitms 1
            '=============
            End Sub
            '#############################eeprom data#######################################
            Temp_data:
            Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F
            '###############################################################################
            Dta:
            $eeprom
            Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
            $data
            برد جوجه کشی:
            مطالعه پست 1 (حتما مطالعه کنید)


            مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

            دانلود

            توجه:
            این برد نیمه صنعتی و خانگی هست...
            برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

            آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

            دیدگاه


              پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

              ممنون آقا محمد
              ساعت 11تست میکنم
              الان دسترسی بهش ندارم

              دیدگاه


                پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

                نوشته اصلی توسط mohammad...
                سلام
                این کد رو من عملی تست کردم مدار جوجه کشی که قبلا داشتم رو اون تست کردم
                همین دو تا سنسور رو وصل کردم اولش کار نمی کرد یکی از سنسورا درست کار می کرد ولی دومی یه چیز دیگه نشون میداد
                برنامه رو زیاد تغییر ندادم
                ولی اون for n=0 to 133 رو به هیچ عنوان دستکاری نکن و الا همه چی بهم میریزه
                این برنامه آخره اگه مشکل قفل کردن داشته باشی فقط یکی از سنسورا رو امتحان کن اصلا من امتحان کردم عدد 85 ندیدم بلکه مستقیم دما رو می خونه
                فرکانسو هم به 2 مگا قبلی تغییر دادم jtag هم مثل قبل غیر فعاله
                امیدوارم مشکلت حل بشه
                الان یه ساعته گذاشتم عین ساعت هردو تا سنسور کار می کنه :mrgreen:
                اینم برنامه
                کد:
                $regfile = "m16def.dat"
                $crystal = 2000000
                Config Lcdpin = Pin , Rs = Porta.7 , E = Porta.6 , Db4 = Porta.5 , Db5 = Porta.4 , _
                 Db6 = Porta.3 , Db7 = Porta.2
                Config Lcd = 16 * 2
                Cursor Off
                Config Single = Scientific , Digits = 1
                Config 1wire = Portd.7
                Dim Ss As String * 30
                Dim Temp As String * 6
                Dim Temp1 As String * 6
                Dim Temp2 As String * 6
                Dim I1 As Integer
                Dim I2 As Integer
                Dim I11 As Single
                Dim I22 As Single
                Dim Dsid1(8) As Byte
                Dim Dsid2(8) As Byte
                '##############################################################################'
                Dim L As Single
                Dim H As Single
                Dim Ll As String * 4
                Dim Hh As String * 4
                Dim T As Single
                Dim T1 As Single
                Dim T2 As Single
                Dim Dt As Single
                Dim F As Byte , V As Byte , Kilid As Byte
                Dim String_s As String * 3 , String_a As String * 2 , Sr(5) As String * 1 , P(5) As Integer
                Dim Val_s As Single , D1 As Word , D2 As Word
                Dim Cont(5) As Byte , I As Integer , N As Byte , Ul As String * 6
                Dim Pg As Single , R As Byte
                Declare Sub Segment
                '##############################################################################'
                Dsid1(1) = 1wsearchfirst()
                Dsid2(1) = 1wsearchnext()
                '**************'
                Config Portb = Output
                Config Portc = Output
                Config Portd.2 = Output
                Config Portd.0 = Output
                Config Porta.1 = Output
                Config Porta.0 = Output
                Config Portd.1 = Input
                Config Portd.5 = Input
                Config Portd.6 = Input
                Config Portd.4 = Input
                Config Portd.3 = Input
                '**************'
                Set Porta.1
                Cls
                Lcd "azar"
                Wait 2
                R = 1
                Submain:
                Set Porta.1
                F = 1
                Cls
                Cursor Off
                Readeeprom L , 1
                Waitms 5
                Readeeprom H , 8
                Waitms 5
                Readeeprom Kilid , 12
                Waitms 5
                Ll = Fusing(l , "#.#")
                Do
                If Pind.5 = 0 And F = 0 Then Goto Settempon
                1wreset
                1wwrite &HCC
                1wwrite &H44
                '=================================
                If R = 1 Then
                Waitms 900
                R = 0
                End If
                If R = 0 Then
                For N = 0 To 133
                Segment
                Next
                End If
                If Err = 1 Then
                Cls
                Locate 1 , 4
                Lcd "No DS18B20"
                Wait 1
                Portb = &H00
                Else
                '---------------------------------'
                Segment
                1wreset
                1wwrite &HCC
                1wverify Dsid1(1)
                1wwrite &HBE
                I1 = 1wread(2)
                '---------------------------------'
                Segment
                1wreset
                1wwrite &HCC
                1wverify Dsid2(1)
                1wwrite &HBE
                I2 = 1wread(2)
                Segment
                '---------------------------------'
                Ss = ""
                I11 = I1 \ 16
                Ss = Fusing(i11 , "#.##")
                Temp1 = Ss
                Segment
                Dt = Val(temp1)
                T1 = Dt
                Ss = ""
                I22 = I2 \ 16
                Segment
                Ss = Fusing(i22 , "#.##")
                Temp2 = Ss
                Dt = Val(temp2)
                T2 = Dt
                Segment
                If Kilid = 0 Then T = T1
                If Kilid = 1 Then T = T2
                If Pind.6 = 0 And V = 0 Then
                Incr Kilid
                If Kilid > 1 Then Kilid = 0
                V = 1
                Writeeeprom Kilid , 12
                Waitms 5
                Cls
                Waitms 300
                Cls
                End If
                Segment
                If Pind.6 = 1 Then V = 0
                Locate 1 , 1
                If Kilid = 0 Then
                Lcd "Temp=" ; Temp1 ; Chr(223) ; "C   "
                Temp = Temp1
                End If
                Segment
                If Kilid = 1 Then
                Lcd "Temp=" ; Temp2 ; ":" ; ; Chr(223) ; "C   "
                Temp = Temp2
                End If
                Segment
                '====================7segment formol==
                If T < 0 Then
                 Pg = Abs(t)
                 Else
                 Pg = -1
                 End If
                If T >= 100 Then String_s = Left(temp , 3)
                If T >= 10 And T < 100 Then String_s = Left(temp , 2)
                If T < 10 Then String_s = Left(temp , 1)
                String_a = Right(temp , 2)
                Segment
                If T < 10 And T >= 0 Then
                Cont(1) = 1 : Cont(2) = 4 : Cont(3) = 5 : Cont(4) = 20 : Cont(5) = 20
                Elseif T >= 10 And T < 100 Then
                Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
                Elseif T >= 100 Then
                Cont(1) = 1 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
                End If
                Segment
                If Pg >= 10 And Pg < 100 Then String_s = Mid(temp , 2 , 2)
                If Pg < 10 And Pg >= 0 Then String_s = Mid(temp , 2 , 1)
                String_a = Right(temp , 2)
                Segment
                If Pg < 10 And Pg >= 0 Then
                Cont(1) = 30 : Cont(2) = 1 : Cont(3) = 4 : Cont(4) = 5 : Cont(5) = 20
                Elseif Pg >= 10 And Pg < 100 Then
                Cont(1) = 30 : Cont(2) = 2 : Cont(3) = 3 : Cont(4) = 4 : Cont(5) = 5
                End If
                Segment
                Sr(1) = Left(string_s , 1)
                If T => 0 Then Sr(2) = Mid(string_s , 2 , 1)
                If T < 0 Then Sr(2) = Left(string_s , 1 )
                Segment
                Sr(3) = Right(string_s , 1)
                Sr(4) = Left(string_a , 1)
                Sr(5) = Right(string_a , 1)
                Segment
                P(1) = Val(sr(cont(1)))
                P(2) = Val(sr(cont(2)))
                P(3) = Val(sr(cont(3)))
                P(4) = Val(sr(cont(4)))
                P(5) = Val(sr(cont(5)))
                '============================
                Segment
                Locate 2 , 1
                Lcd "Temp Off:" ; L ; Chr(223) ; "C  "
                Segment
                End If
                Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
                Segment
                If T > L And T < H Then
                End If
                Segment
                '=================Gharm Shodan                        '
                If T > L Then
                Locate 1 , 16
                Lcd "*"
                Segment
                Set Portd.2
                Set Porta.0
                Reset Portd.0
                For N = 0 To 34
                Segment
                Next
                Else
                Locate 1 , 14
                Lcd " "
                Segment
                Reset Portd.2
                Reset Porta.0
                For N = 0 To 10
                Segment
                Next
                End If
                If Pind.5 = 1 Then F = 0
                Segment
                '=============
                Loop
                '###############################temp control####################################
                Settempon:
                Portb = &H00
                F = 1
                Cursor Off
                Locate 1 , 1
                Cls
                Lcd "Set Temp Off"
                Do
                Waitms 100
                If Pind.3 = 0 Then L = L + 0.1
                If Pind.4 = 0 Then L = L -0.1
                If Pind.5 = 0 And F = 0 Then
                Cls
                Lcd "  SAVING..."
                Waitms 700
                Writeeeprom L , 1
                Waitms 5
                Cls
                Goto Submain
                End If
                Locate 2 , 1
                Lcd "Temp Off = " ; L ; Chr(0) ; "c "
                If Pind.5 = 1 Then F = 0
                Waitms 120
                Loop
                '############################7Segment module####################################
                Sub Segment
                Set Portc.5
                Set Portc.4
                Set Portc.3
                Set Portc.2
                Set Portc.1
                Reset Portc.0
                Portb = Lookup(p(1) , Temp_data)
                If T < 10 Then Portb = Portb Or &H80
                If T < 0 Then Portb = &H40
                Waitms 1
                '=============
                Set Portc.5
                Set Portc.4
                Set Portc.3
                Set Portc.2
                Set Portc.0
                Reset Portc.1
                Portb = Lookup(p(2) , Temp_data)
                If T => 10 And T < 100 Then Portb = Portb Or &H80
                If Pg < 10 And Pg > 0 Then Portb = Portb Or &H80
                Waitms 1
                '=============
                Set Portc.5
                Set Portc.4
                Set Portc.3
                Set Portc.1
                Set Portc.0
                Reset Portc.2
                If Cont(3) <> 20 Then Portb = Lookup(p(3) , Temp_data)
                If T >= 100 Then Portb = Portb Or &H80
                If Pg => 10 And Pg < 100 Then Portb = Portb Or &H80
                If Cont(3) = 20 Then Portb = &H39
                Waitms 1
                '=============
                Set Portc.5
                Set Portc.4
                Set Portc.2
                Set Portc.1
                Set Portc.0
                Reset Portc.3
                If Cont(4) <> 20 Then Portb = Lookup(p(4) , Temp_data)
                If Cont(4) = 20 And Cont(3) <> 20 And T => 0 Then
                Portb = &H39
                Elseif Cont(4) = 20 Then
                Portb = &H00
                End If
                If Pg >= 100 Then Portb = Portb Or &H80
                Waitms 1
                '=============
                Set Portc.5
                Set Portc.3
                Set Portc.2
                Set Portc.1
                Set Portc.0
                Reset Portc.4
                If Cont(5) <> 20 Then Portb = Lookup(p(5) , Temp_data)
                If Cont(5) = 20 And Cont(4) <> 20 Then
                 Portb = &H39
                 Elseif Cont(5) = 20 Then
                 Portb = &H00
                 End If
                Waitms 1
                '=============
                Set Portc.4
                Set Portc.3
                Set Portc.2
                Set Portc.1
                Set Portc.0
                Reset Portc.5
                If Cont(5) = 20 Then Portb = &B0000000
                If Cont(5) <> 20 Then Portb = &H39
                Waitms 1
                '=============
                End Sub
                '#############################eeprom data#######################################
                Temp_data:
                Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H6F
                '###############################################################################
                Dta:
                $eeprom
                Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
                $data
                :wow: :wow: :wow: :wow: :wow:
                آقا محمد خیلی خیلی ممنون
                اصلا نمیدونم چطوری ازت تشکر کنم
                درسست شد :job:

                دیدگاه


                  پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

                  نوشته اصلی توسط mohammad safarnejad
                  :wow: :wow: :wow: :wow: :wow:
                  آقا محمد خیلی خیلی ممنون
                  اصلا نمیدونم چطوری ازت تشکر کنم
                  درسست شد :job:
                  هم سون سگمنت هم سنسورای دما هر دو به خوبی کار می کنند؟
                  هر دو سنسور درست شد دیگه نه؟
                  خوشحال شدم :nerd:
                  برد جوجه کشی:
                  مطالعه پست 1 (حتما مطالعه کنید)


                  مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                  دانلود

                  توجه:
                  این برد نیمه صنعتی و خانگی هست...
                  برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                  آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                  دیدگاه


                    پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

                    نوشته اصلی توسط mohammad...
                    هم سون سگمنت هم سنسورای دما هر دو به خوبی کار می کنند؟
                    هر دو سنسور درست شد دیگه نه؟
                    خوشحال شدم :nerd:
                    من یه سنسور وصل کردم
                    بخوبی دما هم رو سگمنت و lcd نمایش داده میشه
                    ممنون

                    دیدگاه


                      پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

                      یادت نره اون n=0 to 133 رو به هیچ عنوان دستکاری نکن که دما درست نشون داده نمیشه
                      اگه مدت زمان سون سگمنا رو رو 1 میلی ثانیه بزاری n میشه 0 تا 133 نحوه ی محاسبه هم بدین صورت هست
                      ما شیش تا سون سگمنت داریم که برای رفرش هرکدوم 1 میلی ثانیه زمان نیاز داریم پس جمعا میشه 6 میلی ثانیه
                      حالا ما باید مابین هر دفعه اطلاعاتی که از ای سی دما می خونیم 780 میلی ثانیه تاخیر بدیم که سنسور تو این مدت آماده بشه تا اطلاعات رو در اختیار ما بزاره بنابراین 133 ضربدر 6 میلی ثانیه میشه 798 میلی ثانیه پس تو این زمان به سنسور وقت می دیم که اطلاعات دما رو کامل کنه در عوض ما میریم سون سگمنتا رو رفرش می کنیم که مشکل پر زدن نداشته باشن :twisted:
                      اما اگه زما سون سگمنت رو روی 4 میلی گذاشتیم 6 تا 4 میلی ثانیه میشه 24 میلی ثانیه پس 780 تقسیم بر 24 میشه تقریبا 33 پس نباید n رو کمتر از این اعداد قرار بدیم والا آی سی هنگ میکنه و نمی تونه اطلاعات رو برای میکرو بفرسته

                      اضافه شده در تاریخ :
                      نوشته اصلی توسط mohammad safarnejad
                      من یه سنسور وصل کردم
                      بخوبی دما هم رو سگمنت و lcd نمایش داده میشه
                      ممنون
                      اون برنامه رو من واسه دوتا سنسور تست کردم جواب داد ان شاءالله اگه دومی رو هم وصل کردین جواب میده
                      با تشکر از شما
                      خدافظ :bye
                      برد جوجه کشی:
                      مطالعه پست 1 (حتما مطالعه کنید)


                      مطالعه پست 2 (برای مطلع شدن از تغییرات برنامه مطالعه کنید)

                      دانلود

                      توجه:
                      این برد نیمه صنعتی و خانگی هست...
                      برای صنعتی شدن حتما برد مخصوص خودتون رو بزنید...

                      آی دی کانال تلگرامی مربوط به برد جوجه کشی : electr0o0nic@

                      دیدگاه


                        پاسخ : مشگل در نگه داشتن دما ثابت در محدوده منفی

                        ممنون
                        خدایی نمیدونم دیگه چطوری تشکر کنم :nice:

                        دیدگاه

                        لطفا صبر کنید...