نقل قول: نه خواهش می کنم. فکر کنم من باید عذر بخوام با سوالات خیلی ابتدایی. توضیحات شما و دوستان همه مفید هستند.
نه بابا این چه حرفیه منم وقتی از یه موضوع سر در نمیارم همینم
نقل قول: سوال اصلی من در رابطه با تشخیص کدهای ارسالی توسط ریموت و تنظیم فرکانس میکرو گیرنده است.
دقیق کار این ای سی دکدر را نمی فهمم. در عمل چرا ولی در شبیه سازی نه. چون سیگنال خروجی فرستنده یک موج ترکیبی از صفر و یک است. پس در هر حال فکر می کنم در شبیه سازی نیازی به این آی سی نیست.
والا اینطور برات بگم که اولن مشکل فقط از موجای مزاحم و نور خورشید که برا خودشون تو عمل غولی هستن، نیست... بلکه فقط تصور کن داری برنامه مینویسی و بجای این آی سی یه گیرنده معمولی ال ای دی گذاشتی یا همون سیم تو شبیه ساز بعد میخوای موجایی که میاد رو دیکد کنی،
اول باید کاری کنی که وقتی پایه صفر(یا یک) شد یه تایمر رو روشن کنه برا اندازه گیری زمان یک بودن...
حالا باید کاری کنی که میکرو فاصله زمانی کوتاه مثل 13 میکرو ثانیه تغییر ولتاژ رو نادیده بگیره(حالا بماند که تو عمل باید کاری کنی که حتما تشخیص بده که هر 13 میکرو ثانیه موج تغییر حالت بده برا جلوگیری از پارازیت یا نور خورشید یا هر چیز دیگه.....هوووووو دنیایی داره برا خودش)
اگه بتونی یه برنامه اینجوری بنویسی که دمت گرم، میتونی تو شبیه سازی ازش استفاده کنی (یا حتی تو عمل ولی خب چه کاریه وقتی میشه با 2000 تومن همه ی این کارا رو کرد تازه موج رو هم تقویت میکنه
)
من یه نمونه از برنامه ی دیکد خودمو اینجا میزارم اگه بسکام رو میتونی بخونی و میخوای بگو که برنامه کاملشو برات بزارم تا خودت بتونی بهتر روش فکر کنی
کد:
Irc2:
Start Timer2
C = 0
Bham = 1
Timer2 = 0
Do
Do
If Timer2 > 250 Then Goto Ch2
Loop Until Pind.2 = 1
Oham(bham) = Timer2
Timer2 = 0
Do
If Timer2 > 250 Then Goto Ch2
Loop Until Pind.2 = 0
Zham(bham) = Timer2
Timer2 = 0
Incr Bham
Ch2:
Loop Until Bham > 24 Or Timer2 > 250
'lll offf
Numham(1) = 0 : Numham(2) = 0 : Numham(3) = 0 : Numham(4) = 0
Cham = 28
For Aham = 1 To 20
If Oham(aham) > 70 And Oham(aham) < 115 Then
Cham = Aham - 1
For Bham = 1 To 5
Yham = Cham + Bham
Ooham(bham) = Oham(yham)
Zzham(bham) = Zham(yham)
Next Bham
Bham = 0
If Ooham(2) > 44 And Ooham(2) < 62 Then
Cham = 35
If Zzham(3) =< Cham Then Bham = Bham + 1
If Zzham(4) =< Cham Then Bham = Bham + 2
If Zzham(5) =< Cham Then Bham = Bham + 4
End If
Select Case Bham
Case 1 : Incr Numham(1)
Case 2 : Incr Numham(2)
Case 3 : Incr Numham(3)
Case 4 : Incr Numham(4)
Case Else : Bham = 1 'none
End Select
End If
Next Aham
For Aham = 1 To 28
Oham(aham) = 0 : Zham(aham) = 0
Next Aham
Aham = 222
If Numham(4) >= 2 Then Aham = 4
If Numham(3) >= 2 Then Aham = 3
If Numham(2) >= 2 Then Aham = 2
If Numham(1) >= 2 Then Aham = 1
Select Case Aham
Case 1
C = 4
Case 2
C = 16
Case 3
C = 12
Case 4
C = 8
End Select
If Aham > 0 And Aham < 5 Then
Call Remote
End If
Stop Timer2
Goto Lo
این برنامه اصلیه برا دیکد و تبدیلش به شماره(که یه ذره سخته برا درک!)
اصلن اینو ولش کن خواستم حذفش کنم گفتم شاید بودنش خالی از لطف نباشه برا ش کسایی که پیشرفته تر هستن یا خود شما تو مراحل بالاتر...
پایینی بهتره
کد:
Irc1:
Set L3
Timer2 = 0
Do
Do
If Timer2 > 250 Then Goto Ch1
Loop Until Pind.2 = 1
J(bham) = Timer2
Timer2 = 0
Incr Bham
Do
If Timer2 > 250 Then Goto Ch1
Loop Until Pind.2 = 0
J(bham) = Timer2
Timer2 = 0
Incr Bham
Ch1:
Loop Until Bham > 56 Or Timer2 > 250
Waitms 200
For Bham = 1 To 56
Eb(bham) = J(bham)
J(bham) = 0
Next Bham
Waitms 700
Reset L3
Goto Lo
اینم زمان تمام صفر و یک ها رو به اندازه 4.5 تا نمونه(اگه تو اون عکسی که گذاشتم دقت کنی هر نمونه یا سیکل از 6 جز تشکیل میشه: لیدر، آدرس، سه بیت داده، یه بیت برا پایان... که هر کودومشون 1 ضفر و 1 یک هست که میشه کلن 12 تا=> 56/12) میگیره بعد اونا رو تو یه متغییر که تو eeprom تعریف شد ذخیره میکنه(البته میشه با print یا lcd اونو تو شبیه ساز یا lcd نشون داد) من اینجوری نوشتم تا زمانای حدودی دستم بیاد بعد مثل بالا یه بازه برای هر موج در نظر گرفتم که تو کد اولی هست...
طرز کارش هم اینجوریه که تو برنامه اصلی منتظر میشه تا پایه ای که به گیرنده وصله صفر بشه بعد میاد تو این زیر روال
فعلا با همینا یه ذره کلنجار برو تا دستت بیاد که من چی میگم بعد اگه سوالی داشتی در خدمتم
تا بعد
رسیدن به آرزو لذت بخشه، اما تلاش برای رسیدن به آرزو لذت بخش ترین قسمت زندگیه...