قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

حازم ابواسماعيل
:: مهندس ::
تاريخ التسجيل: Sep 2012
المشاركات: 18
نشاط [ حازم ابواسماعيل ]
قوة السمعة:0
قديم 07-10-2012, 06:50 AM المشاركة 1   
ha مساعدة من funky112233 (او من اي حد)بخصوص ال IR وال RF وتبسيط فكرة كود المستقبل Twitter FaceBook Google+



سلامو عليكم
ارجو المساعدة بشدة من اي شخص وخصوصا من
funky112233
لان هو اللي عمل الموضوع اللي بسأل فيه


وجزاك الله خيرا علي العلم الوفير اللي بتقدمهولنا من غير مقابل
انا باختصار شديد شفت الموضوعين اللي حضرتك عملتهم عن التحكم عن بعد
باستخدام ال
IR
وباستخدام ال
RF
وفهمتهم الي حد كبير بفضل الله


بس كنت بحاول أعمل تبسيط ياريت تساعدني فيه
اني اعمل تحكم عن بعد باستخدام ال IR
بس عن طريق الفكرة اللي معمولة في كود ال RF
اللي هي تخصيص عدد نبضات معين لكل سويتش
بدلا من الفكرة المتبعة في كود المستقبل الخاص بال IR

بس مش عارف ليه الدائرة عالبروتس مش شغالة
مش عارف السبب في ان الفكرة اصلا غلط(يارب لأ)؟؟؟
ولا الفكرة صح بس الكود غلط ؟؟؟
ولو كده فانا مش فاهم ليه ال TIMER مش شغال
رغم اني بعمل دالة سويتش عليه زي ماحضرتك عامل

ولا البروتس بقي هو اللي غلط؟؟؟

رغم ان هو هو بالظبط بتاع حضرتك في حالة ال IR
بس انا حطيت ملفات الهكس للمستقبل والمرسل
بعد تطبيق الفكرة دي

وده كود المرسل
char x=0;


void main() {CMCON=0x07;TRISa=255;trisb=0;portb=0;

PWM1_Init(38000);
PWM1_Set_Duty(255);

while(1){
if (PORTA.f0==0){
for(x=0;x<5;x++){PWM1_Start();delay_us(600);PWM1_S top();delay_us(600);}
delay_ms(250);}


if (PORTA.f1==0){
for(x=0;x<6;x++){PWM1_Start();delay_us(600);PWM1_S top();delay_us(600);}
delay_ms(250);}

if (PORTA.f2==0){
for(x=0;x<7;x++){PWM1_Start();delay_us(600);PWM1_S top();delay_us(600);}
delay_ms(250);}


if (PORTA.f3==0){
for(x=0;x<8;x++){PWM1_Start();delay_us(600);PWM1_S top();delay_us(600);}
delay_ms(250);}

}

}
وده كود المستقبل


void interrupt()
{
intcon.f2=0;
TMR0=0;
}

void main() {

TRISA=255;TRISB=0;PORTB=0;PORTA=0;cmcon=7;

option_reg=40;intcon=160;TMR0 = 0;

while(1){
while(TMR0==0){}
delay_ms(250);
switch (TMR0){
case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
case 7: Portb.F2 = ~Portb.F2;TMR0=0;break;
case 6: Portb.F1 = ~Portb.F1;TMR0=0;break;
case 5: Portb.F0 = ~Portb.F0;TMR0=0;break;
default:TMR0=0;break;

}

}
while(1);
}

واي حد عنده اجابة ياريت يقولي

اعلانات

حازم ابواسماعيل
:: مهندس ::
تاريخ التسجيل: Sep 2012
المشاركات: 18
نشاط [ حازم ابواسماعيل ]
قوة السمعة:0
قديم 07-10-2012, 06:53 AM المشاركة 2   
ha عرض الكود بصورة افضل


معلش انا مش عارف ادخل الكود كويس في العرض
ياريت المحاولة دي تنفع
ادي كود المرسل
كود:
char x=0;


void main() {CMCON=0x07;TRISa=255;trisb=0;portb=0;

PWM1_Init(38000);
PWM1_Set_Duty(255);

while(1){
if (PORTA.f0==0){
for(x=0;x<5;x++){PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);}
delay_ms(250);}


if (PORTA.f1==0){
for(x=0;x<6;x++){PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);}
delay_ms(250);}

if (PORTA.f2==0){
for(x=0;x<7;x++){PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);}
delay_ms(250);}


if (PORTA.f3==0){
for(x=0;x<8;x++){PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);}
delay_ms(250);}

 }

}
وادي كود المستقبل

كود:

 void interrupt()
{
     intcon.f2=0;
     TMR0=0;
}

void main() {

    TRISA=255;TRISB=0;PORTB=0;PORTA=0;cmcon=7;

    option_reg=40;intcon=160;TMR0 = 0;

    while(1){
     while(TMR0==0){}
     delay_ms(250);
            switch (TMR0){
                case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
                case 7: Portb.F2 = ~Portb.F2;TMR0=0;break;
                case 6: Portb.F1 = ~Portb.F1;TMR0=0;break;
                case 5: Portb.F0 = ~Portb.F0;TMR0=0;break;
                default:TMR0=0;break;

        }

    }
    while(1);
}

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

حازم ابواسماعيل
:: مهندس ::
تاريخ التسجيل: Sep 2012
المشاركات: 18
نشاط [ حازم ابواسماعيل ]
قوة السمعة:0
قديم 07-10-2012, 07:09 AM المشاركة 3   
افتراضي


لتوضيح اكثر لما اريد ومعلش عشان تاعبكم معايا
عايز استخدم فكرة عدد نبضات خاصة بكل سويتش بدل فكرة الاعتماد علي ان لكل سويتش توزيعة معينة من ال
bits
تختلف من سويتش للتاني
انا مش عايز الفكرة الاخيرة دي
وهستخدم في المرسل والمستقبل ميكروكونترولر
اقصد مش عايز ريموت سوني ولا حاجة
عايز كله بالميكروكونترولر

وربنا يكرمكم مقدما


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 07-10-2012, 05:37 PM المشاركة 4   
افتراضي


بسم الله الرحمن الرحيم

فكرة جيدة يا اخى
ولكن شرح ريموت سونى وغيرة كان فقط لمجرد معرفة كيف تعمل الريموتات
وايضا لاستخدامها فى المشاريع لانها ذو شكل جيد ولا تحتاج لتعديل
وايضا من فهمها جيدا يمكنك صنع البروتوكول الخاص بك
وايضا كيفية صنعها عن طريق الميكروكنترولر سواء مرسل او مستقبل
ولكن كما تريد

كود:
void interrupt() {
 intcon.f2=0; 
TMR0 = 0;    } 

void main() { 

TRISA=255;TRISB=0;PORTB=0;PORTA=0;cmcon=7; 

option_reg=56;intcon=160;TMR0 = 0; 

while(1){ while(TMR0==0){} 

delay_ms(20);

 switch (TMR0){ 
case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
 case 7: Portb.F2 = ~Portb.F2;TMR0=0;break; 
case 6: Portb.F1 = ~Portb.F1;TMR0=0;break; 
case 5: Portb.F0 = ~Portb.F0;TMR0=0;break;
 default:TMR0=0;break; } }
 while(1); }
ما تم تغيرة فى الكود هو كالاتى

جعل هذا الخيار يساوى 56 لكى يعمل التايمر جيدا مع مستقبل الاشعه تحت حمراء

كود:
option_reg=56;
ثم جعل مدة الانتظار تساوى 20 مللى ثانية بدل 250 مللى ثانية وهذا افضل للسرعه فى العمل
راجع الدروس لتفهم الفائدة من امر الانتظار

وهناك عيب بسيط فى كود المرسل ارجوا ان تراجع درس المرسل لتعرفة

بالتوفيق ان شاء الله


حازم ابواسماعيل
:: مهندس ::
تاريخ التسجيل: Sep 2012
المشاركات: 18
نشاط [ حازم ابواسماعيل ]
قوة السمعة:0
قديم 07-10-2012, 08:28 PM المشاركة 5   
افتراضي


بسم الله الرحمن الرحيم

فكرة جيدة يا اخى
ولكن شرح ريموت سونى وغيرة كان فقط لمجرد معرفة كيف تعمل الريموتات
وايضا لاستخدامها فى المشاريع لانها ذو شكل جيد ولا تحتاج لتعديل
وايضا من فهمها جيدا يمكنك صنع البروتوكول الخاص بك
وايضا كيفية صنعها عن طريق الميكروكنترولر سواء مرسل او مستقبل
ولكن كما تريد

كود:
void interrupt() {
 intcon.f2=0; 
TMR0 = 0;    } 

void main() { 

TRISA=255;TRISB=0;PORTB=0;PORTA=0;cmcon=7; 

option_reg=56;intcon=160;TMR0 = 0; 

while(1){ while(TMR0==0){} 

delay_ms(20);

 switch (TMR0){ 
case 8: Portb.F3 = ~Portb.F3;TMR0=0;break;
 case 7: Portb.F2 = ~Portb.F2;TMR0=0;break; 
case 6: Portb.F1 = ~Portb.F1;TMR0=0;break; 
case 5: Portb.F0 = ~Portb.F0;TMR0=0;break;
 default:TMR0=0;break; } }
 while(1); }
ما تم تغيرة فى الكود هو كالاتى

جعل هذا الخيار يساوى 56 لكى يعمل التايمر جيدا مع مستقبل الاشعه تحت حمراء

كود:
option_reg=56;
ثم جعل مدة الانتظار تساوى 20 مللى ثانية بدل 250 مللى ثانية وهذا افضل للسرعه فى العمل
راجع الدروس لتفهم الفائدة من امر الانتظار

وهناك عيب بسيط فى كود المرسل ارجوا ان تراجع درس المرسل لتعرفة

بالتوفيق ان شاء الله
جزاك الله خيرا والله

انا مقتنع ان فكرة البروتوكول بتاعة الريموتات اكثر شيوعا طبعا بس معلش بس كان نفسي انجح في الفكرة دي ربنا يكرمك

بس في مشكلة لسه
انا حاولت في كود المرسل ما يقرب من اكتر من ساعة ومش فاهم ايه المشكلة ورجعت لكود المرسل في حالة ال ir
وفي حالة ال rf
وبرضه مش فاهم ايه الغلط عندي

وحطيت نبضة بداية رغم عدم اقتناعي لاني دلوقتي بعمل شفرة بمزاجي بس برضه حطيتها ومش شغال

انا بشكرك انك بتسيب حاجة للواحد عشان يشغل دماغه فيها دي حاجة كويسة جدا
بس انا فعلا حاولت ومش عارف


وتاني واخر سؤال معلش

ليه ال option reg =56
في ال ir
وفي ال rf
كان بيساوي 40

انا رحت لدرس المقاطعات اللي حضرتك حطيت اللينك بتاعه وفهمت ايزاي ال intcon شغالة
بس ماعرفتش ايزاي بحط قيمة ال option reg
علي اساس ايه يعني


معلش تاعبك معايا انا عارف

كله في ثوابك


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:93
قديم 08-10-2012, 06:31 PM المشاركة 6   
افتراضي


بسم الله الرحمن الرحيم

بالنسبة للمشكلة فانا مش عارف اية المشكلة الى عندك بالزبط حدد اية الى بيحصل

وخد بالك التوصيل مش هو هو

المستقبل هتوصلة على طرف التايمر0 A4 من الميكرو
والمرسل على طرف B3 الى هو خرج PWM

اما بالنسبة ل option reg فالفرق بين الارقام دى
هون انى بغير البت الرابع
وهو مسؤل عن تحديد اذا كان النبضة الداخلة على التايمر0 الى على الطرف A4
فى الميكرو الصغير هل سوف يقوم بالعد عند تغير الحالة من 0 الى 5 فولت ام من 5 فولت الى 0

هذا البت ما يحدد

لهذا هناك فرق بين المشروع بتاع ال RF وبين مستقبل IR الاتنين بيشتغلوا بصورة معكوسة

ودور فى اللينك بتاع المقاطعات هتفهم الكلام دة وكويس
فى الصفحة 8 على ما اظن وجازة الله صاحبة كل خير


حازم ابواسماعيل
:: مهندس ::
تاريخ التسجيل: Sep 2012
المشاركات: 18
نشاط [ حازم ابواسماعيل ]
قوة السمعة:0
قديم 09-10-2012, 03:32 PM المشاركة 7   
افتراضي


بسم الله الرحمن الرحيم

بالنسبة للمشكلة فانا مش عارف اية المشكلة الى عندك بالزبط حدد اية الى بيحصل

وخد بالك التوصيل مش هو هو

المستقبل هتوصلة على طرف التايمر0 A4 من الميكرو
والمرسل على طرف B3 الى هو خرج PWM

اما بالنسبة ل option reg فالفرق بين الارقام دى
هون انى بغير البت الرابع
وهو مسؤل عن تحديد اذا كان النبضة الداخلة على التايمر0 الى على الطرف A4
فى الميكرو الصغير هل سوف يقوم بالعد عند تغير الحالة من 0 الى 5 فولت ام من 5 فولت الى 0

هذا البت ما يحدد

لهذا هناك فرق بين المشروع بتاع ال RF وبين مستقبل IR الاتنين بيشتغلوا بصورة معكوسة

ودور فى اللينك بتاع المقاطعات هتفهم الكلام دة وكويس
فى الصفحة 8 على ما اظن وجازة الله صاحبة كل خير
بجد يعجز لساني(اقصد كيبوردي
D:
عن الشكر
جزاك الله خيرا حق الجزاء ورزقك صلاة في الأقصي محررا علي أيدينا باذن الله

اللهم استخدمنا في نصرة دينك ولا تستبدلنا

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:28 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025