دوستان ماژول 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