اطلاعیه

Collapse
No announcement yet.

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

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

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

    باسلام
    من میخوام با این مدار دماسنج که تو لینک زیر گذاشتم دمای جایی رو البته بصورت منفی کنترل کنم
    میخوام مثلا L رو -5 و H رو 5 بزارم ولی زمانی که محدوده رو منفی میکنم مدار درست کار نمیکنه
    میشه کمکم کنید
    http://www.eca.ir/forum2/index.php?topic=75908.0
    اینم کد برنامه
    کد:
    $regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2
    Config Lcd = 16 * 2
    Cursor Off
    Config 1wire = Portb.7
    Dim Byte0 As Byte
    Dim Byte1 As Byte
    Dim Sign As String * 1
    Dim T As String * 4
    Dim T1 As Single
    Dim T2 As Single
    Dim L As Single
    Dim H As Single
    Dim Ll As String * 4
    Dim Hh As String * 4
    '*******************************
    '*******************************
    '*******************************
    'in adad haro baraye damaye made nazareton taghir bedin
    L = 37.5 : H = 37.8
    '*******************************
    '*******************************
    '*******************************
    Ll = Fusing(l , "#.#")
    Hh = Fusing(h , "#.#")
    '**************
    Config Portb.0 = Output
    Config Portb.1 = Output
    '**************
    Do
    Cls
    Cursor Off
    1wreset
    If Err = 1 Then
    Cls
    Lcd "No DS18B20"
    Wait 1
    Else
    1wwrite &HCC
    1wwrite &H44
    Waitms 250
    1wreset
    1wwrite &HCC
    1wwrite &HBE
    Byte0 = 1wread()
    Byte1 = 1wread()
    If Byte1 > 248 Then
    Byte0 = &HFF - Byte0
    Byte1 = &HFF - Byte1
    Sign = "-"
    Else
    Sign = "+"
    End If
    T1 = Byte0 / 16
    T2 = Byte1 * 16
    T1 = T1 + T2
    If Sign = "-" Then
    T1 = T1 + 1
    End If
    If Sign = "+" And T1 = 0 Then
    Sign = " "
    End If
    '**********
    T = Fusing(t1 , "#.&&")
    '**********
    Home
    Cls
    Lcd "   " ; Sign ; T ; Chr(223) ; "C" ; "   "
    Locate 2 , 1
    Lcd "L" ; Ll ; "   H" ; Hh
    Waitms 500
    End If
    '***************
    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27    ' replace ? with number (0-7)
    If T1 > L And T1 < H Then
    Locate 2 , 9
    Lcd Chr(1)
    End If
    '***************
    'Sard _shodan
    If T1 < L Then
    Locate 2 , 7
    Lcd "<--"
    Set Portb.0
    Waitms 250
    Else
    Reset Portb.0
    Waitms 250
    End If
    '***************
    'Gharm Shodan
    If T1 > H Then
    Locate 2 , 8
    Lcd "-->"
    Set Portb.1
    Waitms 100
    Else
    Reset Portb.1
    Waitms 100
    End If
    '***************
    Loop
    End

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

    سلام
    بفرما داداش این کد رو بنداز بسکامت پروگرام کن
    میکرو در همه حال اون مقداری رو که از سنسور می گرفته مثبت فرض می کرده و دچار خطا می شده من کدی رو جایگزینش کردم که دیگه از اون فرضا نکنه
    اینم کد:
    بنداز بسکامت
    [code=c]$regfile = "m8def.dat"
    $crystal = 1000000
    Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2
    Config Lcd = 16 * 2
    Cursor Off
    Config Single = Scientific , Digits = 1
    Config 1wire = Portb.7
    Dim T As String * 4
    Dim T1 As Single
    Dim T2 As Single
    Dim L As Single
    Dim H As Single
    Dim Ll As String * 4
    Dim Hh As String * 4
    '######################## motagayer haye ezafe shode ###########################
    Dim Read77(2) As Byte , A77 As Integer , B77 As Single , Lk1 As String * 10
    Dim Sum As Single , Dt50 As Single
    '############################################ ###################################
    '*******************************
    '*******************************
    '*******************************
    'in adad haro baraye damaye made nazareton taghir bedin
    L = -5 : H = 5
    '*******************************
    '*******************************
    '*******************************
    Ll = Fusing(l , "#.#&quot
    Hh = Fusing(h , "#.#&quot
    '**************
    Config Portb.0 = Output
    Config Portb.1 = Output
    '**************
    Do
    Cursor Off
    1wreset
    If Err = 1 Then
    Cls
    Locate 1 , 1
    Lcd "No DS18B20"
    Wait 1
    Else
    '############################inja tagyir yafte##################################
    1wwrite &HCC
    1wwrite &H44
    Waitms 250
    1wreset
    1wwrite &HCC
    1wwrite &HBE
    Read77(1) = 1wread(2)
    A77 = Makeint(read77(1) , Read77(2))
    B77 = A77 / 16
    Sum = B77
    Lk1 = Fusing(sum , "#.##&quot
    Dt50 = Val(lk1)
    T1 = Dt50
    '############################################ ###################################
    T = Fusing(t1 , "#.##&quot
    '**********
    Home
    Cls
    Lcd " T=" ; T ; Chr(223) ; "C" ; " "
    Locate 2 , 1
    Lcd "L" ; Ll ; " H" ; Hh
    Waitms 500
    End If
    '***************
    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27 ' replace ? with number (0-7)
    If T1 > L And T1 < H Then
    Locate 2 , 9
    Lcd Chr(1)
    End If
    '***************
    'Sard _shodan
    If T1 < L Then
    Locate 2 , 7
    Lcd "<--"
    Set Portb.0
    Waitms 250
    Else
    Reset Portb.0
    Waitms 250
    End If
    '***************
    'Gharm Shodan
    If T1 > H Then
    Locate 2 , 8
    Lcd "-->"
    Set Portb.1
    Waitms 100
    Else
    Reset Portb.1
    Waitms 100
    End If
    '***************
    Loop
    End

    [/code]
    برد جوجه کشی:
    مطالعه پست 1 (حتما مطالعه کنید)


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

    دانلود

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

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

    دیدگاه


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

      نوشته اصلی توسط mohammad...
      سلام
      بفرما داداش این کد رو بنداز بسکامت پروگرام کن
      میکرو در همه حال اون مقداری رو که از سنسور می گرفته مثبت فرض می کرده و دچار خطا می شده من کدی رو جایگزینش کردم که دیگه از اون فرضا نکنه
      اینم کد:
      بنداز بسکامت
      [code=c]$regfile = "m8def.dat"
      $crystal = 1000000
      Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2
      Config Lcd = 16 * 2
      Cursor Off
      Config Single = Scientific , Digits = 1
      Config 1wire = Portb.7
      Dim T As String * 4
      Dim T1 As Single
      Dim T2 As Single
      Dim L As Single
      Dim H As Single
      Dim Ll As String * 4
      Dim Hh As String * 4
      '######################## motagayer haye ezafe shode ###########################
      Dim Read77(2) As Byte , A77 As Integer , B77 As Single , Lk1 As String * 10
      Dim Sum As Single , Dt50 As Single
      '############################################ ###################################
      '*******************************
      '*******************************
      '*******************************
      'in adad haro baraye damaye made nazareton taghir bedin
      L = -5 : H = 5
      '*******************************
      '*******************************
      '*******************************
      Ll = Fusing(l , "#.#&quot
      Hh = Fusing(h , "#.#&quot
      '**************
      Config Portb.0 = Output
      Config Portb.1 = Output
      '**************
      Do
      Cursor Off
      1wreset
      If Err = 1 Then
      Cls
      Locate 1 , 1
      Lcd "No DS18B20"
      Wait 1
      Else
      '############################inja tagyir yafte##################################
      1wwrite &HCC
      1wwrite &H44
      Waitms 250
      1wreset
      1wwrite &HCC
      1wwrite &HBE
      Read77(1) = 1wread(2)
      A77 = Makeint(read77(1) , Read77(2))
      B77 = A77 / 16
      Sum = B77
      Lk1 = Fusing(sum , "#.##&quot
      Dt50 = Val(lk1)
      T1 = Dt50
      '############################################ ###################################
      T = Fusing(t1 , "#.##&quot
      '**********
      Home
      Cls
      Lcd " T=" ; T ; Chr(223) ; "C" ; " "
      Locate 2 , 1
      Lcd "L" ; Ll ; " H" ; Hh
      Waitms 500
      End If
      '***************
      Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27 ' replace ? with number (0-7)
      If T1 > L And T1 < H Then
      Locate 2 , 9
      Lcd Chr(1)
      End If
      '***************
      'Sard _shodan
      If T1 < L Then
      Locate 2 , 7
      Lcd "<--"
      Set Portb.0
      Waitms 250
      Else
      Reset Portb.0
      Waitms 250
      End If
      '***************
      'Gharm Shodan
      If T1 > H Then
      Locate 2 , 8
      Lcd "-->"
      Set Portb.1
      Waitms 100
      Else
      Reset Portb.1
      Waitms 100
      End If
      '***************
      Loop
      End

      [/code]
      :wow: :wow: :wow:
      ممنون آقا نمیدونم چه جوری ازت تشکر کنم
      دستت درد نکنه

      دیدگاه


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

        سلام
        ببخشید اگه زیاد اذیتتون کردم
        میخواستم ببیم چطور میتونم به این مدار یه سنسور دیگه اضافه کنم که در صورت فشرده شدن کلید مثلا دمای سنسور 2 رو نشون بده و زمانی که دوباره فشرده بشه ذمای سنسور 1 رو نشون بده
        باتشکر

        دیدگاه


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

          نوشته اصلی توسط mohammad safarnejad
          سلام
          ببخشید اگه زیاد اذیتتون کردم
          میخواستم ببیم چطور میتونم به این مدار یه سنسور دیگه اضافه کنم که در صورت فشرده شدن کلید مثلا دمای سنسور 2 رو نشون بده و زمانی که دوباره فشرده بشه ذمای سنسور 1 رو نشون بده
          باتشکر
          سلام
          باید با دستورات پروتکل یک سیمه یا همون 1wire آشنایی داشته باشی بسکام هم مثال داره برای رفتن به HELP بسکام باید کلید F1 رو بزنی و عبارت 1wire رو وارد کنی بگردی پروژه های اماده هم هست یکم تحقیق کن اگه نتونستی کاری بکنین کمکتون می کنیم :agree:
          برد جوجه کشی:
          مطالعه پست 1 (حتما مطالعه کنید)


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

          دانلود

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

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

          دیدگاه


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

            باسلام
            من یه تحقیقی کردم البته قبلش هم تحقیق کرده بودم
            بیشترشون با سی هستش
            اگه لطف کنید همین جا یه آموزش بدید درمورد همین .
            البته یه فکر دیگه دارم که میخوام این رو اعدادشو با دکمه کم و زیاد کنم که فک کنم خودم بتونم
            با تشکر :job:

            دیدگاه


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

              نوشته اصلی توسط mohammad safarnejad
              باسلام
              من یه تحقیقی کردم البته قبلش هم تحقیق کرده بودم
              بیشترشون با سی هستش
              اگه لطف کنید همین جا یه آموزش بدید درمورد همین .
              البته یه فکر دیگه دارم که میخوام این رو اعدادشو با دکمه کم و زیاد کنم که فک کنم خودم بتونم
              با تشکر :job:
              سلام
              بیا دانلود کن قشنک serch نکردی
              برای 4 تا سنسور ds18b20 هست با بسکام بنابراین باید ویرایشش کنی :smile:
              تغییرات لازم رو انجام بده روش
              دانلود پروژه ds18b20X4
              من دانلود کردم کار می کنه بنابراین تغییراتو انجام بده
              برد جوجه کشی:
              مطالعه پست 1 (حتما مطالعه کنید)


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

              دانلود

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

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

              دیدگاه


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

                سلام
                منم اینو پیدا کرده بودم فک کنم همونه
                http://avr92.ir/%D8%AF%D9%85%D8%A7%D...D8%B1-ds18b20/
                ولی من مشکلم اینه که چطوری با کلید بخونمش
                مثلا وقتی کلید رو بزنم دما سنسور 2 رو بخونه و زمانی که کلید رو دوباره بزنم سنسور 1 رو بخونه
                باتشکر

                دیدگاه


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

                  سلام
                  باتشکر از آقای محمد
                  من به غیر از اینکه قرار بود دو تا سنسور بزارم قرار بود که با کلید دما رو تنظیم کنم که تا جایی پیش رفتم ولی یه جا گیر کردم
                  اونم اینه که متغیر ثبت میشه ولی نمایش داده نمیشه
                  و اینکه توی eepram ثبت نمیشه و بعد از قطع و وصل برق دوباره باید تنظیمش کنی
                  منظورم از نمایش نشدن اینه که من دما رو تنظیم میکنم و درست هم در همون دما ها کار میکنه ولی روی lcd اون عدد های تغییر یافته نمایش داده نمیشه
                  کد:
                  $regfile = "m8def.dat"
                  $crystal = 1000000
                  Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2
                  Config Lcd = 16 * 2
                  Cursor Off
                  Config Single = Scientific , Digits = 1
                  Config 1wire = Portb.7
                  Dim T As String * 4
                  Dim T1 As Single
                  Dim T2 As Single
                  Dim L As Single
                  
                  Dim H As Single
                  
                  Dim Ll As String * 4
                  Dim Hh As String * 4
                  
                  '######################## motagayer haye ezafe shode ###########################
                  Dim Read77(2) As Byte , A77 As Integer , B77 As Single , Lk1 As String * 10
                  Dim Sum As Single , Dt50 As Single
                  '###############################################################################
                  
                  '*******************************
                  '*******************************
                  '*******************************
                  'in adad haro baraye damaye made nazareton taghir bedin
                  
                  H = 2 : L = 0
                  '*******************************
                  '*******************************
                  '*******************************
                  Ll = Fusing(l , "#.#")
                  Hh = Fusing(h , "#.#")
                  '**************
                  Config Portb.0 = Output
                  Config Portb.1 = Output
                  Config Portd.0 = Output
                  Config Portb.2 = Input
                  Config Portb.3 = Input
                  Config Portb.4 = Input
                  Config Portb.5 = Input
                  '**************
                  Cls
                  Lcd "  SAFARNEJAD"
                  Locate 2 , 4
                  Lcd "09382367005"
                  Wait 5
                  Cls
                  Submain:
                  Cls
                  Do
                  If Pinb.5 = 0 Then Goto Settempon
                  Cursor Off
                  1wreset
                  If Err = 1 Then
                  Cls
                  Locate 1 , 4
                  Lcd "No DS18B20"
                  Wait 1
                  Else
                  '############################inja tagyir yafte##################################
                  1wwrite &HCC
                  1wwrite &H44
                  Waitms 250
                   1wreset
                    1wwrite &HCC
                    1wwrite &HBE
                    Read77(1) = 1wread(2)
                  A77 = Makeint(read77(1) , Read77(2))
                  B77 = A77 / 16
                  Sum = B77
                  Lk1 = Fusing(sum , "#.##")
                  Dt50 = Val(lk1)
                  T1 = Dt50
                  '###############################################################################
                  T = Fusing(t1 , "#.##")
                  '**********
                  Home
                  Cls
                  Lcd "Temp=" ; T ; Chr(223) ; "C" ; "   "
                  Locate 2 , 1
                  Lcd "L:" ; Ll ; "  H:" ; Hh
                  Locate 1 , 15
                  Lcd "|"
                  Waitms 500
                  End If
                  '***************
                  Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27    ' replace ? with number (0-7)
                  If T1 > L And T1 < H Then
                  Locate 2 , 9
                  Lcd Chr(1)
                  End If
                  '***************
                  'Sard _shodan
                  If T1 < L Then
                  Locate 2 , 7
                  Lcd " ->"
                  Locate 1 , 16
                  Lcd "H"
                  Set Portb.0
                  Set Portd.0
                  Waitms 500
                  Reset Portd.0
                  Waitms 250
                  Else
                  Locate 1 , 16
                  Lcd " "
                  Reset Portb.0
                  Reset Portd.0
                  Waitms 250
                  End If
                  '***************
                  'Gharm Shodan
                  If T1 > H Then
                  Locate 2 , 7
                  Lcd " <-"
                  Locate 1 , 14
                  Lcd "L"
                  Set Portb.1
                  Set Portd.0
                  Waitms 1000
                  Reset Portd.0
                  Waitms 100
                  Else
                  Locate 1 , 14
                  Lcd " "
                  Reset Portb.1
                  Reset Portd.0
                  Waitms 100
                  End If
                  Goto Submain
                  '***************
                  
                  Loop
                  
                  
                  Settempon:
                  Cursor Off
                  Locate 1 , 1
                  Cls
                  Lcd "set temp on"
                  Do
                  If Pinb.2 = 0 Then Incr L
                  If Pinb.3 = 0 Then Decr L
                  If Pinb.4 = 0 Then Goto Submain
                  Waitms 500
                  
                  If Pinb.5 = 0 Then Goto Settempoff
                  
                  Locate 2 , 1
                  Writeeeprom L , 1
                  Readeeprom L , 1
                  
                  Lcd "Temp on=" ; L ; Chr(0) ; "c "
                  Loop
                  Goto Settempon
                  
                  Settempoff:
                  Cursor Off
                  Locate 1 , 1
                  Cls
                  Do
                  Lcd "set temp off"
                  
                  If Pinb.2 = 0 Then Incr H
                  If Pinb.3 = 0 Then Decr H
                  If Pinb.4 = 0 Then Goto Submain
                  
                  Waitms 500
                  Locate 2 , 1
                  Writeeeprom H , 2
                  Readeeprom H , 2
                  Lcd "Temp off=" ; H ; Chr(0) ; "c "
                  Loop
                  Goto Settempoff
                  
                  End
                  الان بهش اعداد 0 و 2 رو دادم

                  دیدگاه


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

                    نوشته اصلی توسط mohammad safarnejad
                    سلام
                    باتشکر از آقای محمد
                    من به غیر از اینکه قرار بود دو تا سنسور بزارم قرار بود که با کلید دما رو تنظیم کنم که تا جایی پیش رفتم ولی یه جا گیر کردم
                    اونم اینه که متغیر ثبت میشه ولی نمایش داده نمیشه
                    و اینکه توی eepram ثبت نمیشه و بعد از قطع و وصل برق دوباره باید تنظیمش کنی
                    منظورم از نمایش نشدن اینه که من دما رو تنظیم میکنم و درست هم در همون دما ها کار میکنه ولی روی lcd اون عدد های تغییر یافته نمایش داده نمیشه
                    کد:
                    $regfile = "m8def.dat"
                    $crystal = 1000000
                    Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.3 , Db7 = Portd.2
                    Config Lcd = 16 * 2
                    Cursor Off
                    Config Single = Scientific , Digits = 1
                    Config 1wire = Portb.7
                    Dim T As String * 4
                    Dim T1 As Single
                    Dim T2 As Single
                    Dim L As Single
                    
                    Dim H As Single
                    
                    Dim Ll As String * 4
                    Dim Hh As String * 4
                    
                    '######################## motagayer haye ezafe shode ###########################
                    Dim Read77(2) As Byte , A77 As Integer , B77 As Single , Lk1 As String * 10
                    Dim Sum As Single , Dt50 As Single
                    '###############################################################################
                    
                    '*******************************
                    '*******************************
                    '*******************************
                    'in adad haro baraye damaye made nazareton taghir bedin
                    
                    H = 2 : L = 0
                    '*******************************
                    '*******************************
                    '*******************************
                    Ll = Fusing(l , "#.#")
                    Hh = Fusing(h , "#.#")
                    '**************
                    Config Portb.0 = Output
                    Config Portb.1 = Output
                    Config Portd.0 = Output
                    Config Portb.2 = Input
                    Config Portb.3 = Input
                    Config Portb.4 = Input
                    Config Portb.5 = Input
                    '**************
                    Cls
                    Lcd "  SAFARNEJAD"
                    Locate 2 , 4
                    Lcd "09382367005"
                    Wait 5
                    Cls
                    Submain:
                    Cls
                    Do
                    If Pinb.5 = 0 Then Goto Settempon
                    Cursor Off
                    1wreset
                    If Err = 1 Then
                    Cls
                    Locate 1 , 4
                    Lcd "No DS18B20"
                    Wait 1
                    Else
                    '############################inja tagyir yafte##################################
                    1wwrite &HCC
                    1wwrite &H44
                    Waitms 250
                     1wreset
                      1wwrite &HCC
                      1wwrite &HBE
                      Read77(1) = 1wread(2)
                    A77 = Makeint(read77(1) , Read77(2))
                    B77 = A77 / 16
                    Sum = B77
                    Lk1 = Fusing(sum , "#.##")
                    Dt50 = Val(lk1)
                    T1 = Dt50
                    '###############################################################################
                    T = Fusing(t1 , "#.##")
                    '**********
                    Home
                    Cls
                    Lcd "Temp=" ; T ; Chr(223) ; "C" ; "   "
                    Locate 2 , 1
                    Lcd "L:" ; Ll ; "  H:" ; Hh
                    Locate 1 , 15
                    Lcd "|"
                    Waitms 500
                    End If
                    '***************
                    Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27    ' replace ? with number (0-7)
                    If T1 > L And T1 < H Then
                    Locate 2 , 9
                    Lcd Chr(1)
                    End If
                    '***************
                    'Sard _shodan
                    If T1 < L Then
                    Locate 2 , 7
                    Lcd " ->"
                    Locate 1 , 16
                    Lcd "H"
                    Set Portb.0
                    Set Portd.0
                    Waitms 500
                    Reset Portd.0
                    Waitms 250
                    Else
                    Locate 1 , 16
                    Lcd " "
                    Reset Portb.0
                    Reset Portd.0
                    Waitms 250
                    End If
                    '***************
                    'Gharm Shodan
                    If T1 > H Then
                    Locate 2 , 7
                    Lcd " <-"
                    Locate 1 , 14
                    Lcd "L"
                    Set Portb.1
                    Set Portd.0
                    Waitms 1000
                    Reset Portd.0
                    Waitms 100
                    Else
                    Locate 1 , 14
                    Lcd " "
                    Reset Portb.1
                    Reset Portd.0
                    Waitms 100
                    End If
                    Goto Submain
                    '***************
                    
                    Loop
                    
                    
                    Settempon:
                    Cursor Off
                    Locate 1 , 1
                    Cls
                    Lcd "set temp on"
                    Do
                    If Pinb.2 = 0 Then Incr L
                    If Pinb.3 = 0 Then Decr L
                    If Pinb.4 = 0 Then Goto Submain
                    Waitms 500
                    
                    If Pinb.5 = 0 Then Goto Settempoff
                    
                    Locate 2 , 1
                    Writeeeprom L , 1
                    Readeeprom L , 1
                    
                    Lcd "Temp on=" ; L ; Chr(0) ; "c "
                    Loop
                    Goto Settempon
                    
                    Settempoff:
                    Cursor Off
                    Locate 1 , 1
                    Cls
                    Do
                    Lcd "set temp off"
                    
                    If Pinb.2 = 0 Then Incr H
                    If Pinb.3 = 0 Then Decr H
                    If Pinb.4 = 0 Then Goto Submain
                    
                    Waitms 500
                    Locate 2 , 1
                    Writeeeprom H , 2
                    Readeeprom H , 2
                    Lcd "Temp off=" ; H ; Chr(0) ; "c "
                    Loop
                    Goto Settempoff
                    
                    End
                    الان بهش اعداد 0 و 2 رو دادم
                    سلام
                    خواهش می کنم
                    کلا یه توضیحی بده که می خوای چیکار کنی اون متغیرا چین که می خواین ذخیره کنی
                    اون کلیدا چیه که به پورت B وصل کردی؟
                    شما علاوه بر برنامه flash برنامه ایپرام رو هم پروگرام می کنین یا نه؟
                    برد جوجه کشی:
                    مطالعه پست 1 (حتما مطالعه کنید)


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

                    دانلود

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

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

                    دیدگاه


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

                      سلام
                      این فایل پرتئوس و بسکام هست
                      http://s5.picofile.com/file/8149727750/temp_Copy.rar.html
                      اون متغیر ها همان حداقل یا همون L و حداکثر دما یا همون H هستن
                      اون کلیدا هم واسه تغیر این متغیر ها هست دیگه اگه تو پرتئوس شبیه سازی کنی متوجه میشی
                      الان من میخوام با این کلید ها Lو H رو تغیر بدم که تغیر داده میشه و تو همون دما هم کار میکنه ولی روی LCD نمایش داده نمیشه
                      و میخوام بعد از قطع و وصل برق این متغییر ها حذف نشه
                      و میخوام با یه کلید که هر وقت کلید رو میزنم سنسور یک خونده بشه و هر وقت دوباره همون کلید رو بزنم سنسور دو خونده بشه
                      باتشکر

                      دیدگاه


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

                        سلام
                        بیا اینم اون چیزی که خواستی دانلود کن تقریبا برنامه اون چیزی که خواستی هست و ساده هست یعنی برنامتو به جز اون قسمت سنسور بقیشو تغییر ندادم بنابراین راحت می تونی تجزیش کنی
                        یه نکته دیگه بگم که برنامه با کامپایلر 1.11.9.0 بسکام کامپایل شده چون نمی دانم چرا با 2.7.3.0 که کامپایل می کنم سنسورا کار نمی کنند :angry: بنابراین در صورت کامپایل با کامپایلر خودت اگه کار نکنه تو پرتیوس عادی هست
                        برنامه رو هم اینجا میزارم که شاید به درد یکی دیگه بخوره
                        ولی شما اینو دانلود کن
                        دانلود پروژه راه اندازی 2 سنسور DS18b20
                        دیگه همچین چیزی نخوایا
                        بشین قشنگ خودت بنویس تا یاد بگیری

                        [code=c]$regfile = "m8def.dat"
                        $crystal = 1000000
                        Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4_
                        , Db6 = Portd.3 , Db7 = Portd.2
                        Config Lcd = 16 * 2
                        Cursor Off
                        Config Single = Scientific , Digits = 1
                        Config 1wire = Portb.7
                        Dim Ss As String * 30
                        Dim Temp1 As String * 30
                        Dim Temp2 As String * 30
                        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
                        '############################################ ##################################'
                        Dsid1(1) = 1wsearchfirst()
                        Dsid2(1) = 1wsearchnext()
                        '**************'
                        Config Portb.0 = Output
                        Config Portb.1 = Output
                        Config Portd.0 = Output
                        Config Portb.2 = Input
                        Config Portb.3 = Input
                        Config Portb.4 = Input
                        Config Portb.5 = Input
                        '**************'
                        Cls
                        Submain:
                        F = 1
                        Cls
                        Cursor Off
                        Readeeprom L , 1
                        Waitms 5
                        Readeeprom H , 8
                        Waitms 5
                        Readeeprom Kilid , 12
                        Waitms 5
                        Ll = Fusing(l , "#.#&quot
                        Hh = Fusing(h , "#.#&quot
                        Do
                        If Pinb.4 = 0 And F = 0 Then Goto Settempon
                        1wreset
                        1wwrite &HCC
                        1wwrite &H44
                        Waitms 750
                        If Err = 1 Then
                        Cls
                        Locate 1 , 4
                        Lcd "No DS18B20"
                        Wait 1
                        Else
                        '---------------------------------'
                        1wreset
                        1wwrite &H55
                        1wverify Dsid1(1)
                        1wwrite &HBE
                        I1 = 1wread(2)
                        '---------------------------------'
                        1wreset
                        1wwrite &H55
                        1wverify Dsid2(1)
                        1wwrite &HBE
                        I2 = 1wread(2)

                        '---------------------------------'
                        Ss = ""
                        I11 = I1 \ 16
                        Ss = Fusing(i11 , "#.##&quot
                        Temp1 = Ss
                        Dt = Val(temp1)
                        T1 = Dt
                        Ss = ""
                        I22 = I2 \ 16
                        Ss = Fusing(i22 , "#.##&quot
                        Temp2 = Ss
                        Dt = Val(temp2)
                        T2 = Dt
                        If Kilid = 0 Then T = T1
                        If Kilid = 1 Then T = T2
                        If Pinb.5 = 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
                        If Pinb.5 = 1 Then V = 0
                        Locate 1 , 1
                        If Kilid = 0 Then Lcd "T1=" ; Temp1 ; Chr(223) ; "C "
                        If Kilid = 1 Then Lcd "T2=" ; Temp2 ; Chr(223) ; "C "
                        Locate 2 , 1
                        Lcd "L:" ; Ll ; " H:" ; Hh
                        End If
                        Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
                        If T > L And T < H Then
                        Locate 2 , 9
                        Lcd Chr(1)
                        End If
                        '***************'
                        'Sard _shodan'
                        If T =< L Then
                        Locate 2 , 7
                        Lcd " ->"
                        Locate 1 , 16
                        Lcd "H"
                        Set Portb.0
                        Set Portd.0
                        Waitms 500
                        Reset Portd.0
                        Waitms 250
                        Else
                        Locate 1 , 16
                        Lcd " "
                        Reset Portb.0
                        Reset Portd.0
                        Waitms 250
                        End If
                        '***************'
                        'Gharm Shodan'
                        If T > H Then
                        Locate 2 , 7
                        Lcd " <-"
                        Locate 1 , 14
                        Lcd "L"
                        Set Portb.1
                        Set Portd.0
                        Waitms 1000
                        Reset Portd.0
                        Waitms 100
                        Else
                        Locate 1 , 14
                        Lcd " "
                        Reset Portb.1
                        Reset Portd.0
                        Waitms 100
                        End If
                        If Pinb.4 = 1 Then F = 0
                        Loop
                        '******************************************** **********************************'
                        Settempon:
                        F = 1
                        Cursor Off
                        Locate 1 , 1
                        Cls
                        Lcd "set temp on"
                        Do
                        If Pinb.2 = 0 Then L = L + 0.1
                        If Pinb.3 = 0 Then L = L -0.1
                        If Pinb.4 = 0 And F = 0 Then
                        Writeeeprom L , 1
                        Waitms 5
                        Cls
                        Goto Settempoff
                        End If
                        Locate 2 , 1
                        Lcd "Temp on=" ; L ; Chr(0) ; "c "
                        If Pinb.4 = 1 Then F = 0
                        Waitms 120
                        Loop
                        '******************************************** **********************************'
                        Settempoff:
                        F = 1
                        Cursor Off
                        Locate 1 , 1
                        Cls
                        Do
                        Lcd "set temp off"

                        If Pinb.2 = 0 Then H = H + 0.1
                        If Pinb.3 = 0 Then H = H -0.1
                        If Pinb.4 = 0 And F = 0 Then
                        Writeeeprom H , 8
                        Waitms 5
                        Cls
                        Goto Submain
                        End If
                        Locate 2 , 1
                        Lcd "Temp off=" ; H ; Chr(0) ; "c "
                        If Pinb.4 = 1 Then F = 0
                        Waitms 120
                        Loop
                        End[/code]
                        برد جوجه کشی:
                        مطالعه پست 1 (حتما مطالعه کنید)


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

                        دانلود

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

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

                        دیدگاه


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

                          سلام
                          ممنون دستت درد نکنه
                          فقط یه مشگلی
                          تو اییپرام ثبت نمیشه
                          و در صورت قطع و وصل برق بر میگرده به همون دما های اولیه
                          این متغییر های H , L رو از کدوم قسمت برنامه 1.3 و 3.2 تعیین کردی ؟
                          باتشکر

                          دیدگاه


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

                            نوشته اصلی توسط mohammad safarnejad
                            سلام
                            ممنون دستت درد نکنه
                            فقط یه مشگلی
                            تو اییپرام ثبت نمیشه
                            و در صورت قطع و وصل برق بر میگرده به همون دما های اولیه
                            این متغییر های H , L رو از کدوم قسمت برنامه 1.3 و 3.2 تعیین کردی ؟
                            باتشکر
                            عزیز درست کردم دیگه
                            فقط لطف کن تا نفهمیدی چی به چین برنامه رو دستکاری نکن
                            تو پروتیوس کلید اینتر رو نگه دار بعد با دکمه های up و down اون L و H رو تغییر بده مطابق با خواسته ات
                            ایندفعه ثبت میشه
                            چون درست برنامشو ننوشته بودی و برنامه دائم در حال رایت کردن بود ولی نمی خوندش
                            اوه یادم رفت دیتا ایپرام رو بنویسم خوب شد گفتیا
                            الان می نویسم چند لحضه صبر کن بعد دانلود کن
                            برد جوجه کشی:
                            مطالعه پست 1 (حتما مطالعه کنید)


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

                            دانلود

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

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

                            دیدگاه


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

                              داخل نیوفولدر یه فایل با پسوند eep اضافه شد شما همانطور که حافظه flash با پسوند hex رو پروگرام می کنید باید حافظه eep رو هم پروگرام کنید تا بتونه اعداد رو تو ایپرام بنویسه

                              [move]ds18b20X2 دانلود[/move]


                              اینم برنامه جدید
                              [code=c]$regfile = "m8def.dat"
                              $crystal = 1000000
                              Config Lcdpin = Pin , Rs = Portd.7 , E = Portd.6 , Db4 = Portd.5 , Db5 = Portd.4_
                              , Db6 = Portd.3 , Db7 = Portd.2
                              Config Lcd = 16 * 2
                              Cursor Off
                              Config Single = Scientific , Digits = 1
                              Config 1wire = Portb.7
                              Dim Ss As String * 30
                              Dim Temp1 As String * 30
                              Dim Temp2 As String * 30
                              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
                              '############################################ ##################################'
                              Dsid1(1) = 1wsearchfirst()
                              Dsid2(1) = 1wsearchnext()
                              '**************'
                              Config Portb.0 = Output
                              Config Portb.1 = Output
                              Config Portd.0 = Output
                              Config Portb.2 = Input
                              Config Portb.3 = Input
                              Config Portb.4 = Input
                              Config Portb.5 = Input
                              '**************'
                              Cls
                              Submain:
                              F = 1
                              Cls
                              Cursor Off
                              Readeeprom L , 1
                              Waitms 5
                              Readeeprom H , 8
                              Waitms 5
                              Readeeprom Kilid , 12
                              Waitms 5
                              Ll = Fusing(l , "#.#&quot
                              Hh = Fusing(h , "#.#&quot
                              Do
                              If Pinb.4 = 0 And F = 0 Then Goto Settempon
                              1wreset
                              1wwrite &HCC
                              1wwrite &H44
                              Waitms 750
                              If Err = 1 Then
                              Cls
                              Locate 1 , 4
                              Lcd "No DS18B20"
                              Wait 1
                              Else
                              '---------------------------------'
                              1wreset
                              1wwrite &H55
                              1wverify Dsid1(1)
                              1wwrite &HBE
                              I1 = 1wread(2)
                              '---------------------------------'
                              1wreset
                              1wwrite &H55
                              1wverify Dsid2(1)
                              1wwrite &HBE
                              I2 = 1wread(2)

                              '---------------------------------'
                              Ss = ""
                              I11 = I1 \ 16
                              Ss = Fusing(i11 , "#.##&quot
                              Temp1 = Ss
                              Dt = Val(temp1)
                              T1 = Dt
                              Ss = ""
                              I22 = I2 \ 16
                              Ss = Fusing(i22 , "#.##&quot
                              Temp2 = Ss
                              Dt = Val(temp2)
                              T2 = Dt
                              If Kilid = 0 Then T = T1
                              If Kilid = 1 Then T = T2
                              If Pinb.5 = 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
                              If Pinb.5 = 1 Then V = 0
                              Locate 1 , 1
                              If Kilid = 0 Then Lcd "T1=" ; Temp1 ; Chr(223) ; "C "
                              If Kilid = 1 Then Lcd "T2=" ; Temp2 ; Chr(223) ; "C "
                              Locate 2 , 1
                              Lcd "L:" ; Ll ; " H:" ; Hh
                              End If
                              Deflcdchar 1 , 31 , 28 , 29 , 29 , 13 , 19 , 27 , 27
                              If T > L And T < H Then
                              Locate 2 , 9
                              Lcd Chr(1)
                              End If
                              '***************'
                              'Sard _shodan'
                              If T =< L Then
                              Locate 2 , 7
                              Lcd " ->"
                              Locate 1 , 16
                              Lcd "H"
                              Set Portb.0
                              Set Portd.0
                              Waitms 500
                              Reset Portd.0
                              Waitms 250
                              Else
                              Locate 1 , 16
                              Lcd " "
                              Reset Portb.0
                              Reset Portd.0
                              Waitms 250
                              End If
                              '***************'
                              'Gharm Shodan'
                              If T > H Then
                              Locate 2 , 7
                              Lcd " <-"
                              Locate 1 , 14
                              Lcd "L"
                              Set Portb.1
                              Set Portd.0
                              Waitms 1000
                              Reset Portd.0
                              Waitms 100
                              Else
                              Locate 1 , 14
                              Lcd " "
                              Reset Portb.1
                              Reset Portd.0
                              Waitms 100
                              End If
                              If Pinb.4 = 1 Then F = 0
                              Loop
                              '******************************************** **********************************'
                              Settempon:
                              F = 1
                              Cursor Off
                              Locate 1 , 1
                              Cls
                              Lcd "set temp on"
                              Do
                              If Pinb.2 = 0 Then L = L + 0.1
                              If Pinb.3 = 0 Then L = L -0.1
                              If Pinb.4 = 0 And F = 0 Then
                              Writeeeprom L , 1
                              Waitms 5
                              Cls
                              Goto Settempoff
                              End If
                              Locate 2 , 1
                              Lcd "Temp on=" ; L ; Chr(0) ; "c "
                              If Pinb.4 = 1 Then F = 0
                              Waitms 120
                              Loop
                              '******************************************** **********************************'
                              Settempoff:
                              F = 1
                              Cursor Off
                              Locate 1 , 1
                              Cls
                              Do
                              Lcd "set temp off"

                              If Pinb.2 = 0 Then H = H + 0.1
                              If Pinb.3 = 0 Then H = H -0.1
                              If Pinb.4 = 0 And F = 0 Then
                              Writeeeprom H , 8
                              Waitms 5
                              Cls
                              Goto Submain
                              End If
                              Locate 2 , 1
                              Lcd "Temp off=" ; H ; Chr(0) ; "c "
                              If Pinb.4 = 1 Then F = 0
                              Waitms 120
                              Loop
                              '#############################eeprom data######################################'
                              Dta:
                              $eeprom
                              Data 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16
                              $data[/code]
                              اگه مشکلی پیش اومد بگو
                              برد جوجه کشی:
                              مطالعه پست 1 (حتما مطالعه کنید)


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

                              دانلود

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

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

                              دیدگاه

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