اطلاعیه

Collapse
No announcement yet.

کد نوشته شده کار با ماژول فاصله سنج srf05 با بسکام

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

    کد نوشته شده کار با ماژول فاصله سنج srf05 با بسکام

    دوستان ماژول srf05 گرفتم و باهاش کار کردم . کدشو اینجا میزارم تا کسایی که تازه میخوان این ماژول رو راه بندازن با بسکام - یه نمونه کدی براشون باشه.

    پین های ال سی دی داخل کد مشخص هستن.
    این ماٰژول 5 تا پایه داره
    vcc به ولتاژ 5
    gnd به زمین
    trig که باید یه پالسی با پهنای 20 میکروثانیه بگیره به Porta.0 وصل شده
    echo که پایه ای هست که از لحظه ی فرستاده شدن موج تا برگشت موج یک میمونه و ما از همین پایه قرار فاصله رو بسنجیم به Pind.0 وصل میشه.
    out هم تو این مد به هیچ جایی وصل نمیشه و آزاد میمونه.
    من از این ماژول تا 3.5 متر با دقت 2 سانتی متر خطا جواب گرفتم. البته رو برد برد بود که خیلی هم خطا مینداخت.
    از تایمر 1 استفاده کردم برای شمارش پالس.و اتمگا32

    کد:
    $regfile = "m32def.dat"
    $crystal = 8000000
    
    '>>>>>>>>>>>>>config lcd
    Config Lcdpin = Pin , Rs = Portc.0 , E = Portc.1 , Db4 = Portc.2 , _
                 Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
    Config Lcd = 16 * 2
    
    Waitms 20
    Initlcd
    Cls
    Cursor Off
    
    Waitms 1000
    
    Enable Interrupts
    
    Config Timer1 = Timer , Prescale = 1
    On Timer1 Timerr1
    Enable Timer1
    Stop Timer1
    
    Config Porta = Output
    Config Pind.0 = Input
    
    Trig Alias Porta.0
    Sensor Alias Pind.0
    
    Dim Count As Single
    Dim Tedadepuls As Single
    Dim I As Integer
    Dim Zamanepuls As Single
    Dim Mesafat As Single
    Dim Cm As Single
    Dim Temp As Single
    Dim Temp2 As Integer
    
    Declare Sub Fasele
    
    
    '--------main-----
    
    Set Porta.1
    
    Lcd "hossein"
    
    
    Do
    
    Set Trig
    Waitus 20
    Reset Trig
    
    
     Do
      If Sensor = 1 Then Exit Do
    
     Loop
    
    
     Start Timer1
    
    
     Do
    
      If Sensor = 0 Then
    
       Stop Timer1
       Call Fasele
    
       Locate 1 , 1
       Lcd "                     "
       Locate 1 , 1
       Lcd Timer1 ; "    " ; I                                  'timer1 = pulse shemorde shode ye feli timer1 , va i ham tedad interrupt zade shode timer1
    
    
       Locate 2 , 1
       Lcd "                     "
       Locate 2 , 1
       Lcd "fasele:" ; Fusing(cm , "#.&&") ; "Cm"               'Fusing(cm , "#.&&")
    
       Timer1 = 0
       I = 0
       Exit Do
    
      End If
    
     Loop
    
     Waitms 1000
    
    
    Loop
    
    End
    
    
    
    '-----------------
    
    Timerr1:
    
      Incr I
    
    
    Return
    
    
    
    '---- sub fasele]]]
    
    Sub Fasele
    
     Count = Timer1
    
     If I > 0 Then
    
      Temp2 = 0
      Temp = 0
      Do
       Incr Temp2
       Temp = 65536 + Temp
       If Temp2 = I Then Exit Do
      Loop
    
      Tedadepuls = Count + Temp
     Else
      Tedadepuls = Count
     End If
    
     Zamanepuls = Tedadepuls * 0.000000125
     Mesafat = Zamanepuls * 340
     Cm = Mesafat / 2
     Cm = Cm * 100
    
    End Sub
    موفق باشید.
    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)
لطفا صبر کنید...
X