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


