سلام دوستان
آقا من یه برنامه ساده برای یک قفل الکترونیکی را اینجا نوشتم تا بتونم سوالتم را بپرسم، امید وارم شما هم کمک کنید.
همینطور که می بینید این برنامه یک پسورد 4 رقمی میگیره و اون را با پسورد خودش(my code) چک می کنه اگه درس بود در را باز می کنه و اگه اشتباه بود error می ده و دوباره رمز می گیره.
من می خوام چنتا چیزه دیگه رو این برنامه اضافه کنم ولی نتونستم کسی می تونه کمکم کنه:
1- تو خط 44 من اومدم تعداد رقم های وارد شده را چک می کنم اگه بیشتر از 4 رقم بود میره و اون را با پسورد اصلی مقایسش می کنم حالا اگه من بخوام این خط را بردارم تا تعداد ارقام م تا حد اکثر 15 رقم بره (lcd یه من 2*16 هست ) و اگه بیشتر از 15 شد تو یک جای دیگه این پسورد چک بشه و همچنین برای کاربر یک کلید معرفی(enter) کنم تا هر وقت پسورد را وارد کرد و اون کلید را فشار داد برنامه بره تو همونجا و پسوردش را چک کنه باید چیکار کنم.(با این کار دیگه تعداد ارقام پسورد مشخص نمی شه). من خودم این کار را کردم ولی کلید آخر که به عنوان enter براش معرفی کردم هم به عنوان یکی از ارقام پسورد به حساب می یاد. و رو lcd نشان داده می شه
2. من می خوام یک کلید هم برای حذف رقم اشتباه وارد شده بذارم. مثل دکمه c تو گوشی های موبایل که هر وقت عددی اشتباه وارد شد یه رقم به عقب برگرده.
$regfile = "M16def.dat"
$crystal = 4000000
Dim Keyread As Byte
Dim Key As Byte
Dim Code As Word
Dim Mycode As Word
Dim Digits As Byte
Dim Point As Byte
Config Portc = Output
Portc = 0
Relay Alias Portc.4
Beep Alias Portc.3
Config Kbd = Portd , Debounce = 40
Mycode = 1384
Cursor Off
Do
Lcd "Initializing..."
Set Beep
Waitms 100
Reset Beep
Wait 2
Cls
Lcd "Enter Password"
Begin:
Code = 0
Digits = 0
Point = 0
Do
Keyread = Getkbd()
If Keyread <> 16 Then Gosub Gotkey
Waitms 100
If Digits = 4 Then
If Code = Mycode Then
Goto Opendoor
Else
Goto Error
End If
End If
Loop
Loop
Gotkey:
Ddrd = 255
Set Beep
Waitms 100
Reset Beep
Waitms 100
Key = Lookup(keyread , Dta)
Incr Digits
Point = Digits + 6
Locate 2 , Point
Lcd Key
Code = Code * 10
Code = Code + Key
Return
Dta:
Data 7 , 8 , 9 , 255 , 4 , 5 , 6 , 255 , 1 , 2 , 3 , 255 , 255 , 0 , 255 , 255
Error:
Cls
Lcd "Invalid Password"
Waitms 100
Set Beep
Wait 1
Reset Beep
Lowerline
Lcd "Wait 10 sec"
Wait 10
Cls
Lcd "Enter Password"
Goto Begin
Ok:
Waitms 100
Set Beep
Waitms 200
Reset Beep
Waitms 200
Set Beep
Waitms 200
Reset Beep
Return
Opendoor:
Cls
Lcd "Pass Accepted"
Gosub Ok
Lowerline
Lcd "Door's Openning"
Waitms 300
Set Relay
Wait 1
Reset Relay
Wait 1
Cls
Goto Begin
حالا یه سوال دیگه که به این مورد ربطی نداره:
فرض کنید من می خوام یک پین را با یک پالس یک کنم یعنی:
do
if pinb.1 =1 then
حالا می خوام یه تایمر را روشن کنم
حالا اگه دوباره ورودی صفر شد :
if pinb.1 =0 then
timer را خاموش کنه و بعدش A را که مدت زمان روشن ماندن TIMER هست را به من بده
اگه می شه یکی لطف کنه و این برنامه را کامل کنه . یعنی یک برنامه کامل مثل برنامه بالا .
ma_ka242@yahoo.com
آقا من یه برنامه ساده برای یک قفل الکترونیکی را اینجا نوشتم تا بتونم سوالتم را بپرسم، امید وارم شما هم کمک کنید.
همینطور که می بینید این برنامه یک پسورد 4 رقمی میگیره و اون را با پسورد خودش(my code) چک می کنه اگه درس بود در را باز می کنه و اگه اشتباه بود error می ده و دوباره رمز می گیره.
من می خوام چنتا چیزه دیگه رو این برنامه اضافه کنم ولی نتونستم کسی می تونه کمکم کنه:
1- تو خط 44 من اومدم تعداد رقم های وارد شده را چک می کنم اگه بیشتر از 4 رقم بود میره و اون را با پسورد اصلی مقایسش می کنم حالا اگه من بخوام این خط را بردارم تا تعداد ارقام م تا حد اکثر 15 رقم بره (lcd یه من 2*16 هست ) و اگه بیشتر از 15 شد تو یک جای دیگه این پسورد چک بشه و همچنین برای کاربر یک کلید معرفی(enter) کنم تا هر وقت پسورد را وارد کرد و اون کلید را فشار داد برنامه بره تو همونجا و پسوردش را چک کنه باید چیکار کنم.(با این کار دیگه تعداد ارقام پسورد مشخص نمی شه). من خودم این کار را کردم ولی کلید آخر که به عنوان enter براش معرفی کردم هم به عنوان یکی از ارقام پسورد به حساب می یاد. و رو lcd نشان داده می شه
2. من می خوام یک کلید هم برای حذف رقم اشتباه وارد شده بذارم. مثل دکمه c تو گوشی های موبایل که هر وقت عددی اشتباه وارد شد یه رقم به عقب برگرده.
$regfile = "M16def.dat"
$crystal = 4000000
Dim Keyread As Byte
Dim Key As Byte
Dim Code As Word
Dim Mycode As Word
Dim Digits As Byte
Dim Point As Byte
Config Portc = Output
Portc = 0
Relay Alias Portc.4
Beep Alias Portc.3
Config Kbd = Portd , Debounce = 40
Mycode = 1384
Cursor Off
Do
Lcd "Initializing..."
Set Beep
Waitms 100
Reset Beep
Wait 2
Cls
Lcd "Enter Password"
Begin:
Code = 0
Digits = 0
Point = 0
Do
Keyread = Getkbd()
If Keyread <> 16 Then Gosub Gotkey
Waitms 100
If Digits = 4 Then
If Code = Mycode Then
Goto Opendoor
Else
Goto Error
End If
End If
Loop
Loop
Gotkey:
Ddrd = 255
Set Beep
Waitms 100
Reset Beep
Waitms 100
Key = Lookup(keyread , Dta)
Incr Digits
Point = Digits + 6
Locate 2 , Point
Lcd Key
Code = Code * 10
Code = Code + Key
Return
Dta:
Data 7 , 8 , 9 , 255 , 4 , 5 , 6 , 255 , 1 , 2 , 3 , 255 , 255 , 0 , 255 , 255
Error:
Cls
Lcd "Invalid Password"
Waitms 100
Set Beep
Wait 1
Reset Beep
Lowerline
Lcd "Wait 10 sec"
Wait 10
Cls
Lcd "Enter Password"
Goto Begin
Ok:
Waitms 100
Set Beep
Waitms 200
Reset Beep
Waitms 200
Set Beep
Waitms 200
Reset Beep
Return
Opendoor:
Cls
Lcd "Pass Accepted"
Gosub Ok
Lowerline
Lcd "Door's Openning"
Waitms 300
Set Relay
Wait 1
Reset Relay
Wait 1
Cls
Goto Begin
حالا یه سوال دیگه که به این مورد ربطی نداره:
فرض کنید من می خوام یک پین را با یک پالس یک کنم یعنی:
do
if pinb.1 =1 then
حالا می خوام یه تایمر را روشن کنم
حالا اگه دوباره ورودی صفر شد :
if pinb.1 =0 then
timer را خاموش کنه و بعدش A را که مدت زمان روشن ماندن TIMER هست را به من بده
اگه می شه یکی لطف کنه و این برنامه را کامل کنه . یعنی یک برنامه کامل مثل برنامه بالا .
ma_ka242@yahoo.com
دیدگاه