با عرض سلام وتبریک سال نو به اعضای محترم در مدت کوتاهی رباتی طراحی کردم که نوع موانع از قبیل دیوار . ستون. پایه میز و ....... را تشخیص بده وتصمیم درست رو برای ردکردن ان بگیره .این کار را با انجام 8 میکرو سویچ پایه دار انجام دادم که جلوی ربات نصب شده ودر زمان برخورد با مانع به تعداد سویچ هایی که پایه میکرو را یک کردن نوع مانع تشخیص داده میشه مثلا اگر همه یک شدند مانع دیوار است اگر 2 تا یک شدن یک مانع کوچک است و ...... امیدوارم منطورم را گرفته باشید .در زمانی که یکی از کلید ها یک میشه ربات چند سانت عقب امده و از مانع دور میشود ومیپیچد و مجدد دومتور با هم کار میکند اما به مشکلی برخوردم و ان این است که در پروتوس بعد ار عقب امدن وپیچیدن دیگر ربات مجددا مستقیم ورو به جلو حرکت نمیکند و حرکتش را رو به عقب ادامه میدهد . من در برنامه نویسی زیاد وارد نیستم و امیدوارم با کمک شما دوستان پیش روم .برنامه بیسیک ومدار پروتوس را قرار میدهم امیدوارم کمکم کنید. درضمن اگر متوجه برنامه نشدید فایلش رو برای دانلود گذاشتم.مقاومتهای متصل به مبدل انالوگ دیجیتال نقش فتوسل برای تعین روشنایی رو انجام میده که کاملا درست کار میکنه و ربا ت با ورود به محیط تاریک چراغ هایش را روشن می کند. بعد از دوروز بالاخره مجبور شدم مزاحم شما بشم .
$regfile = "m32def.dat"
$crystal = 8000000
'===================================lcd====== ===================================
Config Lcdpin = Pin , Rs = Portd.4 , E = Portd.5 , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Postd.3
Config Lcd = 16 * 2
'===================================adc====== ===================================
Config Adc = Single , Prescaler = Auto
Start Adc
'================================input&ou tput===================================
Config Portc = Output
Config Portb = Input
'=================================dim======== ===================================
Dim M As Word
'=================================start====== ===================================
Deflcdchar 0 , 14 , 14 , 31 , 32 , 10 , 32 , 17 , 14
Cursor Off
Cls
Lcd Chr(0)
Lcd " HELLO ALL"
Waitms 10
Cls
Lcd " *MOTION*"
'================================motion====== ===================================
Main:
Pinb.0 = 0
Set Portc.0
Reset Portc.1
Set Portc.2
Reset Portc.3
'===============================photosel===== ===================================
Do
M = Getadc(0)
'///////////////////////////////////////////////////////////////////////////////
If M <= 205 Then Set Portc.6
If M <= 205 Then
Locate 2 , 1
Lcd " LIGHT ON"
End If
'///////////////////////////////////////////////////////////////////////////////
If M > 205 Then Reset Portc.6
If M > 205 Then
Locate 2 , 1
Lcd " LIGHT OFF"
End If
'================================obstacle detection=============================
If Pinb.0 = 1 Then
''''''''&# 039;'''''''inve rt motion
Reset Portc.0
Set Portc.1
Reset Portc.2
Set Portc.3
Waitms 1000
''''''''&# 039;'''''''turn- 1 motor roting
Reset Portc.1
Waitms 1500
''''''''&# 039;''''''countinu
Set Portc.0
Reset Portc.1
Set Portc.2
Reset Portc.3
Goto Main
End If
Loop
End
http://www.mediafire.com/file/yzz4yjjltn0/rob.jpg
http://www.mediafire.com/file/lohymjgrzzy/rob1.bas
$regfile = "m32def.dat"
$crystal = 8000000
'===================================lcd====== ===================================
Config Lcdpin = Pin , Rs = Portd.4 , E = Portd.5 , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Postd.3
Config Lcd = 16 * 2
'===================================adc====== ===================================
Config Adc = Single , Prescaler = Auto
Start Adc
'================================input&ou tput===================================
Config Portc = Output
Config Portb = Input
'=================================dim======== ===================================
Dim M As Word
'=================================start====== ===================================
Deflcdchar 0 , 14 , 14 , 31 , 32 , 10 , 32 , 17 , 14
Cursor Off
Cls
Lcd Chr(0)
Lcd " HELLO ALL"
Waitms 10
Cls
Lcd " *MOTION*"
'================================motion====== ===================================
Main:
Pinb.0 = 0
Set Portc.0
Reset Portc.1
Set Portc.2
Reset Portc.3
'===============================photosel===== ===================================
Do
M = Getadc(0)
'///////////////////////////////////////////////////////////////////////////////
If M <= 205 Then Set Portc.6
If M <= 205 Then
Locate 2 , 1
Lcd " LIGHT ON"
End If
'///////////////////////////////////////////////////////////////////////////////
If M > 205 Then Reset Portc.6
If M > 205 Then
Locate 2 , 1
Lcd " LIGHT OFF"
End If
'================================obstacle detection=============================
If Pinb.0 = 1 Then
''''''''&# 039;'''''''inve rt motion
Reset Portc.0
Set Portc.1
Reset Portc.2
Set Portc.3
Waitms 1000
''''''''&# 039;'''''''turn- 1 motor roting
Reset Portc.1
Waitms 1500
''''''''&# 039;''''''countinu
Set Portc.0
Reset Portc.1
Set Portc.2
Reset Portc.3
Goto Main
End If
Loop
End
http://www.mediafire.com/file/yzz4yjjltn0/rob.jpg
http://www.mediafire.com/file/lohymjgrzzy/rob1.bas
دیدگاه