يبدو أنك لم تراجع الروابط التى وضعتها لك هناك فهى تتحدث تفصيلا عن مشكلتك هذه و تنص صراحة على أن سببها هو أن الموديول عندما يستقبل يوائم الكسب بحسب الإشارة و عندما يتوقف الإرسال يزيد الكسب "حتى يستقبل أى شيء" ولهذا فهو يستقبل ضوضاء من الوسط المحيط (هذا ترجمة وليس شرح)
لذا هو يقترح عدة حلول منها تكرار الرقم عدة مرات و منها ارسال كود سابق لتهيئة المستقبل قبل الرقم المطلوب الخ ووضع برامج تستخدم هذه الطرق
و البروتوكول لا دخل له فى هذه الضوضاء ولا يفيد فى التخلص منها
|
شكرا جزيلا على متابعتك معي سيد ماجد .. لقد راجعت الروابط وهي تؤكد ماذكرته في البداية
عند التنفيذ العملي حيث بالضغط المتقطع المستمر على زر معين اشاهد الرمز يظهر بصورة سريعة ويختفي مباشرة وذلك لان الشاشة تكون مملوءة برموز غير مرغوب بها (noise) تغطي الرمز المطلوب التي يتم استلامها عن طريق الشريحة المستلمة وعرضها على الشاشةعن طريق الــMCU.
|
وان الحلول التي يطرحها ذلك الرابط قد تم تجربتها مسبقا ولم احصل على نتيجة مرضية
1. Transmit more than one bit at a time, in some pattern so the receiver can differentiate between actual data and noise.
2. Send a pre-header so the receiver can adjust sensitivity when it starts receiving actual data. OR
3. Use the VirtualWire library for Arduino that handles these issues.
|
المقترح الاول :اي انه قد قمت بارسال الرمز المطلوب بصورة متكررة وذلك بعد الضغط المستمر على الزر أو بعد عمل ارسال مكرر للرمز عن طريق عمل حلقة تكرارية من خلال البرنامج ولكن من بين الضوضاء لاحظت ظهور الرمز المطلوب بعد فترة من ذلك الارسال المستمر .. ولااعلم هل استلام تلك الاشارات العشوائية ومعالجتها هو السبب في تعطيل الــMCU من معالجة واظهار الرمز أو الداتا المطلوبة ؟؟
المقترح الثاني: مكتبة الــMicroC تتضمن مكتبة المانشيستر وهو (Manchester Code) حيث يقوم بتشفير الداتا أو البايت المرسل مع سبقها ب(3) بت وهم (St1,St2,Ctr) واعتقد هي تمثل الـ(pre-header) التي يقصدها وايضا لم يتم حل مشكلة الضوضاء..
آعتذر على اطالة هذا الاستفسار لكن اتمنى ان اجد حل ناجع لهذه المشكلة.