السلام عليكم
في هذا المشروع يتحدث عن ريموت كنترول وكل مافي الامر هو تضع شفره معينه بطول 1 بايت وتكتب كود في مستقبله يعني عندما تستلم هذه شفره أعمل كذا
طبعا انت تعدل فقط في كود ولاتهتم لبقيه الكواد لان برنامج سوف يتعرف على شفره وبتالي سوف يختبرها هل هي صحيحه او لا طبعا ريموت كنترول يتبع البروتوكول
IR NEC protocol
وهذا البرتوكول يرسل بياناته بهذه طريقه
ارسل العنوان ثم معكوس العنوان ثم البيانات ثم معكوس البيانات وبتالي أعتقد لايمكن ان نقول ان هناك تداخل او أخطاء في كشف الشفره
على عموم انا لم أجربه عملي وجدير بالذكر البروتيس بطيئ جدا في تنفيذ الكود لانه يظهر نسبه التحميل CPU 100% ولكن حاول تضغط على ازرار بخفه ولا تضغط على زر مطولا او خلي فتره بين ضغط زر وأخرى لكي يعمل البروتيس بشكل الصحيح
https://www.mediafire.com/?v36jvrc8w61zvpe
تحياتي
|
السلام عليكم
في هذا مشروع هو تحديث لمكتبه أستقبال اشاره ريموت (( مجربه عمليا ))
ومشروع هو كشف شفرات ريموت وعنوان جهاز طبعا للبرتوكول NEC
يعني لما تضغط على زر بيظهرلك addresss && code
http://up.top4top.net/downloadf-top4...af361-rar.html
مصدر مكتبه
http://www.mikroe.com/click/ir/
======================================
تضيف هذه الى بدايه مشروع
كود:
// these variable for Libaray NEC
extern char IR_Received_byte[4];
extern char IR_Received_Flag;
==============================
تعمل داله أنتربت كل 100us
وتضع داخل هذه داله
وهذه بترجعلك التالي
يعني تم قراءه الكود بنجاح وترجعلك البيانات مخزونه في مصفوفه
عنصر الاول لهذه مصفوفه هو address
عنصر الثاني لهذه مصفوفه هو معكوس address
عنصر الثالث لهذه مصفوفه هو code
عنصر الرابع لهذه مصفوفه هو معكوس code
لذلك عليك بوضع هذا الشرط
كود:
if (IR_Received_Flag == 1)
{
TMR1IE_bit = 0;
IR_Received_Flag = 0;
// process received message
if ((IR_Received_byte[0] == ~IR_Received_byte[1]) && (IR_Received_byte[2] == ~IR_Received_byte[3]))
{
if (IR_Received_byte[0] == MyAddress)
{ // correct address
// put her codes
}
}
}