|
تحياتي اخي حسن:
فعلابرمجه بمنتهى السهوله ما على المبرمج سوى وضع كود الزر المطلوب و العنوان ///ولكن اخي حسن للاسف هناك مشكلتان !!
الاولى هي انه عندما حرقت البرنامج على الميكرو كانت النتيجه على المستقبل ان الليدات تضيئ لوحدها على التوالي (يعني المرسل كان يخرج نبضات بدون الضغط على الزر!! مع العلم ان المرسل يعمل بشكل ممتاز على البرمجه التي وضعها الاخ funky (يعني التوصيلات سليمه مئه بالمئه)
المشكله الثانيه ان مسافة الارسال قصيره لا تتعدى المتر الواحد ..في حين ان المسافه على برنامج اخر وصلت اكثر من عشرة امتار
لا اعلم ما هو السبب اخي
يرجى مراجعة الكود و التأكد منه و انا بانتظار ردك
(ملاحظه مهمه) الكود الخاص بك يعمل بشكل ممتاز بين المرسل و المستقبل عللى بروتس و اضفت اليه كبسة خامسه على المرسل على RA4 و برمجة عليها كود البور الرقم 21 كذلك ضفته على المستقبل و عمل حسب المطلوب على البرنامج )!! و لكن في الواقع لايعمل كما اخبرتك
|
السلام عليكم
بالنسبه لقله مسافه الارسال تأكد من duty cycle ؟
اساسا مكتبه أستنتجتها من كود الاخ funky وبتالي مفروض ترسل البيانات بشكل سليم
على عموم سوف أتأكد وأعطيك خبر
ممكن تزويدني بالكود الذي كتبته لغرض النقاش
كود:
const char address_dvice=1;// address
void main()
{
CMCON=0x07;TRISA=255;TRISB=0;portb=0;
PWM1_Init(38000);
PWM1_Set_Duty(76); // 30%
PWM1_Stop();
while (1) {
if (porta.f0==0)send_data(address_dvice,0);//0 button
if (porta.f1==0)send_data(address_dvice,1);//1 button
if (porta.f2==0)send_data(address_dvice,2);//2 button
if (porta.f3==0)send_data(address_dvice,3);//3 button
if (porta.f4==0)send_data(address_dvice,21);//power button
}
}
أضع الامر PWM1_Stop() حتى لايرسل في البدايه
اما Duty أضعها بنفس القيمه الي أشتغل بيها ريموت
وانا منتظر نتائجك حتى نصل الى نتيجه صحيحه
وشكرا لك على تجربه
تحياتي