منتديات الالكترونيات العصرية  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصرية > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة السي MikroC

  #1  
قديم 07-31-2012, 12:25 PM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل


بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته

اولا:
هذا رابط المرسل وشرحة للى عايز يطلع علية
http://www.dbaasco.com/vb/showthread...4646#post44646

_____________________________________________________
ثانيا :
كود الاستقبال لو فهمناه كويس هنقدر ننفذ من خلالة مشاريع كثيرة جدا
لانة يقيس عرض النبضات بدقة
وهذا مفيد جدا فى بعض المشاريع زى التعامل مع Ultrasonics
_____________________________________________________
ثالثا :
هذا هو كود الاستقبال
كود:
sbit ir_in at RA0_bit;                      // Infrared receiver input
sbit ir_in_direction at TRISA0_bit;         // Infrared receiver input
unsigned int retint;                        // general purpose integer
unsigned char ir_byte,COUNT,bouton;
unsigned char ir_result[3];
void interrupt()
{
     count++;
     intcon=0b00100000;
     TMR0=0;
}
unsigned int get_mark(){
      TMR0= 0; count=0;
      for(;!ir_in;){}
      retint=2*(TMR0+(count*256));
      return retint;
}

unsigned int get_space(){
      TMR0= 0; count=0;
      for(;ir_in;){}
      retint=2*(TMR0+(count*256));
      return retint;
}
unsigned char get_sony_byte(char nbits){
char n;
unsigned char ir_byte;
unsigned int temp_ir;

    ir_byte = 0;                                  // initialise
    for(n=0 ; n<nbits ; n++){
        temp_ir = get_space();                    // expect ~510uS
        temp_ir = get_mark();
          ir_byte >>= 1;                   // 650uS = 0, 1.2uS = 1
        if ((temp_ir > 1000)&&(temp_ir < 1300)) {
            ir_byte += 0x80;
        }
    }
    ir_byte >>= 8-nbits;
    return ir_byte;
}
void sony_read(){
unsigned int temp_ir;

    ir_result[0] = 0;                            // return 0, 0 if glitch
    ir_result[1] = 0;                            // return 0, 0 if glitch
    while(ir_in);                                // wait for IR to go low
    temp_ir = get_mark();
    if((temp_ir>2000)&&(temp_ir<3000)) {     // expect 2.4mS mark
        ir_result[0] = get_sony_byte(7);          // 7 bit command
        ir_result[1] = get_sony_byte(5);         // 5 bit address
        Delay_ms(10);                           // wait for repeat messages to clear

    }
}
void main() {
    TRISA=0x0F;
    TRISB=0;
    PORTB=0;
    PORTA=0;
    cmcon=7;
    option_reg=0b10000000;
    intcon=0b10100000;
    TMR0 = 0;
    while(1){
        sony_read();
        if(ir_result[1]==1){                 // Sony address 01 is TV
            bouton = ir_result[0];
            switch (bouton){
                case 0: Portb.F0 = ~Portb.F0;Delay_ms(150);break;        // button TV '0'
                case 1: Portb.F1 = ~Portb.F1;Delay_ms(150);break;        // button TV '1'
                case 2: Portb.F2 = ~Portb.F2;Delay_ms(150);break;        // button TV '2'
                case 3: Portb.F3 = ~Portb.F3;Delay_ms(150);break;        // button TV '3'
                default:break;
            }
        }
    }
    while(1);              // loop forever
}
______________________________________________________
______________________________________________________
سوف اقوم بشرح الكود
ولكن سوف ابدء من التعريفات للمتغيرات ثم الداله الرئيسية void main
اى كما يفعل الميكرو بالزبط لنفهم عمله جيدا خطوة خطوة ان شاء الله
______________________________________________________
______________________________________________________
هذه
هى التعريفات
كود:
sbit ir_in at RA0_bit;                      // Infrared receiver input
sbit ir_in_direction at TRISA0_bit;         // Infrared receiver input
unsigned int retint;                        // general purpose integer
unsigned char ir_byte,COUNT,bouton;
unsigned char ir_result[3];
فى البداية جعلت الطرف رقم 0 فى البورت A هو الدخل لكى يركب علية المستقبل
وسميتة ب ir_in
اى بدل ان اقول porta.f0 سوف اقول بدلا عنها ir_in
ثم عرفت 3 متغيرات لاستخدمهم فى البرنامج
وبعد ذلك مصفوفة مكونة من 3 خانات اسمها ir_result
وهى المصفوفة التى سوف تحمل قيم (الكومند بيت ===والادريس بيت)
____________________________________________
نبدء مع اول البرنامج
كود:
void main() {
    TRISA=0x0F;
    TRISB=0;
    PORTB=0;
    PORTA=0;
    cmcon=7;
هنا جعلت البورت A مدخل لكى يتم الاستقبال من خلال ارجلة
ثم جعلت البورت B خرج لكى يتم اخراج الاوامر من خلالة
ثم قمت بعمل تصفير للبورتان لكى لا يحدث اى اخطاء عند تنفيذ البرنامج
ثم جعلت كل الارجل تعمل كا ديجتال من خلال هذا الامر CMCON=0;
وهو لكى يتم قفل الكومبرتور وعمل الارجل بشكل عادى كما قلت
_________________________________________________________

ثم قمت باعدادات الانتربت interrupt من اجل استخدام ال timer 0
كود:
    option_reg=0b10000000;
    intcon=0b10100000;
    TMR0 = 0;
فى الاول جعلت التايمر يعمل عند تغير الفولت علية من 5 فولت الى صفر
_______
((وهذا لان المستقبل يعمل بطريقة عكسية
يعنى هو فى الوضع الطبيعى يخرج 5 فولت اما عند قدوم النبضات
يخرج 0 فولت))
_______
ثم جعلت معامل القسمة فى التايمر 0 2:1
اى كل 2 ميكرو ثانية سوف يعد التايمر 1 وبعد 2 ميكرو ثانية اخرى سوف يصبح 2
وجعلت التايمر 0 يعد بنبضات داخلية اى نبضات الكريستالة

وفى حالتنا الكريستالة 4 ميجا
ااقسم على 4 كما نعلم من القانون
يبقى التردد 1 ميجا
وهذا يعنى انه يعد بالميكرو ثانية

وهذا من خلال الامر option_reg
________
ثم فعلت التايمر 0 من خلال الامر intcon
ثم جعلت قيمة التايمر تساوى صفر TMR0=0
______________________________________________________
الان سوف اتحدث عن المقاطعه وماذا سوف يحدث عن حدوث المقاطعة

كود:
void interrupt()
{
     count++;
     intcon=0b00100000;
     TMR0=0;
}
اولا
عندما يصل التايمر فى العد الى 256 سوف تحدث مقاطعه وسوف يذهب الى الانتربت هذة
وعندها سوف ينفذ هذه الاوامر
وهى زيادة المتغير count فى كل مرة بقيمة 1 اى كل 256 عدة من التايمر
سوف يزيد المتغير 1
وبعد ذلك جعل التايمر يعمل ثانيا وازاله العلامة من الميكرو لكى تحدث مقاطعه اخرى
وبعد ذلك صفرت التيمر وانتهى
___________________________________________________
((ملحوظة هامة))

التايمر طوال الوقت ومن اول ما يبدء البرنامج العمل يعد ويذهب الى الانتربت
وكما نعلم ها لا ياثر على عمل البرنامج فى شىء
ويمكنك ان تقول اذا سوف يحدث خطا لانة يعد طوال الوقت ونحن نريدة يعد عند ارسال اشارة فقط
الاجابة فى الشرح باذن الله....................
____________________________________________________
ملحوظة :
اذا اردت التعلم اكثر عن التايمر والمقاطعات
فهذا الموضوع ممتاز جازة الله صاحبة خيرا
http://www.qariya.com/vb/showthread.php?t=46338
____________________________________________________
نكمل بقيت الداله الرئيسية
_________
اول حاجة هيعملها البك فى الداله الرئيسية انوا هيروح الى sony_read()
وهى الداله المسئولة عن معرفة النبضات والبيانات وهى اهم داله

______________________
كود:
void sony_read(){
unsigned int temp_ir;

    ir_result[0] = 0;                            // return 0, 0 if glitch
    ir_result[1] = 0;                            // return 0, 0 if glitch
    while(ir_in);                                // wait for IR to go low
    temp_ir = get_mark();
    if((temp_ir>2000)&&(temp_ir<3000)) {     // expect 2.4mS mark
        ir_result[0] = get_sony_byte(7);          // 7 bit command
        ir_result[1] = get_sony_byte(5);         // 5 bit address
        Delay_ms(10);                           // wait for repeat messages to clear

    }
}
فى البداية عرفت متغير لمعرفة نبضة البداية temp_ir
ثم وكا امر احطياطى جعلت قيم المصفوفة الخاصة بالنتائج تساوى صفر
وبعد ذلك جعلت ينتظر ولا يفعل اى شى ابدا طلاما ان المدخل يساوى 5 فولت
((اى ان المستقبل لا يستقبل شىء))
ويفضل البرنامج ثابت على هذا الى ان يتغير الى الصفر ((اى تم استقبال اشارة))
وهذا من خلال الامر
كود:
while(ir_in);
بعد كدا او ما هينخفض الفولت على طرف الدخل A0 اى ir_in = 0
_______
سوف اجعل المتغير temp_ir يساوى القيمة النتجة من هذه الداله get_mark()
وسوف يذهب اليها البك وينفذ ما فيها ويرجع بالناتج لكى يساوية بالمتغير كما قلت

وهذ اوامرها

كود:
unsigned int get_mark(){
      TMR0= 0; count=0;
      for(;!ir_in;){}
      retint=2*(TMR0+(count*256));
      return retint;
}
فى البداية جعلت التايمر 0 والمتغير count يساويان صفر اى يبدان العد من جديد
وهذا هو شرح العملية التى تحدثت عنها فى الاول عند التايمر 0
وبعد ذلك جعلت البيك ينتظر طلاما الدخل مازال يساوى صفر وفى نفس الوقت سوف يعد التايمر 0 وال count ايضا
واول ما يرجع الدخل الى 5 فولت
(هذا هو الفاصل الذى تحدثت علية فى المرسل)
سوف يحسب قيمة عرض هذه النبضة
وهى كالاتى اضرب المتغير count * 256 لكى نحصل على الناتج منه لانة كما نعلم كل 256 عدة من التايمر هذا المتغير سوف يزداد واحدا
اى اذا اصبحت قيمتة 1 مثلا
عند ضربه فى 256 سوف يكون الناتج 256 ميكروثانية
ثم جمعت هذا الناتج على قيمة التايمر 0 فى هذه اللحظة وممكن ان يكون مثلا
0 او يكون رقم بين 0و256 على حسب عرضة النبضة بقى
وبعد ذلك ضربت هذا النتج فى 2
لماذا لان معامل القسمة للتايمر يساوى2:1
اى كل 2 ميكرو ثانية سوف يعد التايمر 1
ولنفرض مثلا ان قيمة التايمر فى هذه اللحظة 44
اذن 256*1+44*2=600 ميكرو ثانية
اظن واضح الامر
اذا كانت صعبة فى الفهم هذه النقطة
فاخبرونى وسوف اشرحه مفصله اكثر بمفردها ان شاء الله
لانها الاساس فى العملية كلها
_____________________________________________
وبعد ما خلص العمليات وطلع الناتج لعرض النبضة
سوف يعود مرة اخرى
ويجعل قيمة المتغير temp_ir تساوى هذه القيمة

____________________________________
ثم يختبر هذه القيمة اذا كانت تساوى ما بين 2000 و 3000 اى نبضة البداية

((ملحوظة:قيمة النبضات ليست ثابتة اى نبضة البداية من المفروض انها 2400
ميكروثانية ولكن فى الواقع يمكن ان تكون 2420 او 2380 هكذا اى ليست 2400
بالسنتوفة يعنى ههههه وايضا كل النبضات هكذا))
__________
وهذا الامر لمعرفة هل هى نبضة البداية لليريموت سونى ام لا
اذا كانت لا سوف يعيد البرنامج مرة اخرى
ام اذا كانت القيمة سليمة
سوف يبدء فى حساب ال 7 كومند وال 5 ادريس
واولا ال 7 كومند
كود:
ir_result[0] = get_sony_byte(7);
وهو جعل قيمة اول خانة فى المصفوفة تساوى قمية البايت لل كومند
وذلك عن طريق الذهاب الى الداله get_sony_byte واجراء العمليات التى بداخلها
ولكن ترونى وضعت الرقم 7 بداخلها ترى لماذا ؟؟؟؟؟

سوف تعلم لماذا بعد قليل
______________________________________________
هذه هى داله get_sony_byte

كود:
unsigned char get_sony_byte(char nbits){
char n;
unsigned char ir_byte;
unsigned int temp_ir;

    ir_byte = 0;                                  // initialise
    for(n=0 ; n<nbits ; n++){
        temp_ir = get_space();                    // expect ~510uS
        temp_ir = get_mark();
          ir_byte >>= 1;                   // 650uS = 0, 1.2uS = 1
        if ((temp_ir > 1000)&&(temp_ir < 1300)) {
            ir_byte += 0x80;
        }
    }
    ir_byte >>= 8-nbits;
    return ir_byte;
}
فى البداية هذه المتغير nbits سوف تكون قيمتة 7 او اى رقم تم وضعه
فى الداله سابقا
ولكن ما فائدتة بعد قليل
ثم تم تعريف بعض المتغيرات للمساعدة فى سير البرنامج

ثم عمل حلقة تكرار وهى جملة for
ولكن الرقم الذى سوف يكرر العملية متوقف على قيمة هذا المتغير nbits
وهنا قيمتة 7 اى سوف يتم تكرار العملية 7 مرات
_____________
ولكن ما فائدتة
ببساطة فائدتة اننا نحتاج الى 7 بيت للكومند
ونحتاج ان نكرر امر القراءة 7 مرات للحصول على قيمة هذا الكومند
ولهذا سوف تجد بعد ذلك نفس الامر
ولكن قيمة المتغير nbits تساوى 5
وهو للادريس
_____________________________
اذن سوف يتم تكرار الاوامر 7 مرات
والاوامر كالاتى
كود:
temp_ir = get_space();
وهذه الداله لحساب المساحة بين البتات كما شرحت فى المرسل
وهى غير مهمة اوى ولكن يجب انتظار مدتها حتى لا يحدث خطا

وبعد ذلك
كود:
 temp_ir = get_mark();
وهى لحساب عرض النبضة المرسلة وهذه الداله تم شرح كيفية عملها
وايضا الداله get_space() تعمل بنفس الطريقة
_________________

ثم ويجب التركيز هنا وهو امر جديد وفكرة جديدة

كود:
 ir_byte >>= 1;
عملت حركة ازاحة بواحد للقيمة المتغير ir_byte
ولكن ماذا تعنى الازاحة
تعنى هكذا
اذا كانت قيمة البايت تساوى 10000000
بعد هذا المر سوف تصبح هكذا
01000000
اى تم تحريك اول رقم من على الشمال الى جه اليمين بخانة واحدة
ولكن لماذا فعلانا قمنا بعمل الازاحة
هذا لسبب بسيط
وهو انك اذا لم تقم بعمل ازاحة سوف يكون الاستقبال كا الاتى
مثلا رقم الادريس هو 10000 هكذا يتم استقبالة وقيمتة بالديسمال 16
ولكن تجد فى المواقع انه يساوى 1 بالديسمال اى 00001
وهذا من الممكن ان يحدث خطا عند التعامل مع الريموت
لهذا قمنا بعملية الازحاجة فمثلا سوف يتم استقبال الرقم 1 قبل الاربعه اصفار
10000
اذن شكل البايت هاكذا بالترتيب
هذا الوضع الافتراضى
00000000
عند استقبال الرقم 1 سوف يصبح هكذا
10000000 وعند عمل الازاحة مرة يصبح
01000000 وبعد ثانى مرة يصبح
00100000 وهكذا الى ان يتم ارجاع الرقم الاول الى اول البايت
اى تصبه هنا القيمة 1 فعلا بالديسمال
وهذا لكى يسهل عليك التعامل مع المكتوب فى المواقع سواء لشركة سونى او غيرها
________________________________________
نرجع لموضوعنا
كود:
 if ((temp_ir > 1000)&&(temp_ir < 1300)) {
            ir_byte += 0x80;
        }
بعد عمل الازاحة سوف يختبر الشرط اذا كانت قيمتة المتغير بين 1000 و 1300
اى ان النبضة المستقبلة تساوى 1
سوف يجعل البايت يساوى 10000000+قيمة ir_byte
مثال على الزر رقم 4 فى الريموت الذى قيمتة بالديسمال 3
اى هكذا
00000011 ولكن الاستقبال يكون معكوس اى هكذا
11000000
وهنا فائدة الازاحة

فى البداية طبعا قيمة ir_byte =00000000
اذا سوف تكون البضة الاولى تساوى واحد
وكانت قيمة المتغير ir_byte تساوى 00000000
سوف يكون الناتج النهائى بعد جمع
كود:
ir_byte += 0x80;
هو 10000000
وبعد ذلك يعود مرة اخرى ليختبر المساحة وبعد المساحة عرض النبضة
وبعد عرض النبضة يتم عمل ازاحة
اذا اصبح الناتج 01000000
وبعد ذلك سوف يستقبل عرض النبضة الثانية بواحد
اى
11000000
وبعد ذلك يتم الاختبارات مرة اخرى فسوف يجد ال 5 بيت الى فاضلين من 7 بتوع الكومند
بصفر
وعند ايجاد النتيجة بصفر سوف يزيح فقط بدون اضافة 1
ومع عملا الازاحة كل مرة
وفى النهاية وبعد عمل تكرار 7 مرات وهو عدد الكومند اذا تم استقبال كل القيم المتبقية ب 0
سوف يصبح
00000110
ولكن ما زالت القيمة ليست 3 كما نريد
اذا نحتاج الى عمل ازاحة مرة اخيرة بالرقم المتبقى فى البايت وهو 1 هنا
وهذا فائدتة هذا الامر
كود:
ir_byte >>= 8-nbits;
هنا طرحت قيمة nbits وفى هذه الحالة هو ب 7 وهو عدد الكومند - عدد البايت وهو8
وعمل ازاحة بالناتج
وهنا الناتج 1 وهكذا يصبح الناتج النهائى للقرائة هو
00000011 وهو فعلا 3 بالديسمال مظبوط 10/10
___________________________________________
ويعد مرة اخرى للدالة sony_read() بالنتج للكومند مظبوط
ويجعل الخانة الاولى من المصفوفة ir_result يساوى هذه القيمة
وبعد ذلك ينفذ نفس العملية ولكن هذه المرة سوف يكون قيمة nbits
تساوى 5 وهو عدد الادريس

ولكن عند قراءة قيمة الادريس وهى 5 ارقام للتلفزيون سونى وهى 10000
اى 16 بالديسمال
وبالنظام الى بيتكتب بيه فى المواقع 00001 اى 1 بالديسمال
سوف يكون البايت بعد الازاحة
00001000
اذن نحتاج الى ازاحة 3 مرات حتى يصبح الرقم صحيح

وهنا دور هذا الامر مرة اخرى
كود:
ir_byte >>= 8-nbits;
5-8 يساوى 3
ويتم عمل الازاحة بثلاث خانات اى يصبح
00000001 وهو الرقم المطلوب والمزبوط

ويعود ليساوى الخانة رقم 2 فى المصفوفة ir_result
يساوى قيمة الادريس
وهنا انتهى دور الدوال ودور حساب الانبضات
ويعود ليختبر هل الاوامر والنبضات صحيحة ام لا لينفذ الاوامر
_______________________________________________________________
_______________________________________________________________
كود:
 if(ir_result[1]==1){                 // Sony address 01 is TV
            bouton = ir_result[0];
            switch (bouton){
                case 0: Portb.F0 = ~Portb.F0;Delay_ms(150);break;        // button TV '0'
                case 1: Portb.F1 = ~Portb.F1;Delay_ms(150);break;        // button TV '1'
                case 2: Portb.F2 = ~Portb.F2;Delay_ms(150);break;        // button TV '2'
                case 3: Portb.F3 = ~Portb.F3;Delay_ms(150);break;        // button TV '3'
              default:break;
            }
        }
سوف يختبر اذا كانت قيمة الخانةالثانية من المتغير ir_result
وهى الخاصة بالادريس تساوى 1 اى هذا الريموت يخص ريموت التلفزيون لشركة سونى
سوف يختبر اوامر الكومند ويرى ما تريد تنفيذة من الازرار وينفذ الاوامر المرادة اذا كان مثلا الكومند يساوى الكومند للزر 1 وهو 00000000
او اذا كان يساوى الكومند للزر 2 فى الريموت وهو 00000001 ينفذ كذا وهكذا
كود:
 default:break;
وهذا الامر يعنى اذا كانت القيم غير ذلك فلا تفعل شىء وعود مرة اخرى

وبعد ذلك يكرر البرنامج الموضوع من اول وجديد وهكذا الى الابد
وهنا انتهى الشرح والحمد لله
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

ملاحظات :
1 - اعلم ان الكود ممكن يكون فية لف كثير والشرح ممكن يكون متوة
لكن انا حاولت اوصل المعلومات على اد ما ااقدر وافصل على اد ما ااقدر
لذلك اذا كان فى اى نقطة غير واضحة
ممكن تسيبها فى تعليك وان شاء الله اوضحها حتة حتة بمفردها .


2 - اوامر الازاحة يمكن الغائها ولكن قمنا بعملها من اجل غير المحترف
لكى يستطيع التعامل مع الكود كما فى المواقع اى اذا اراد تنفيذ امر محدد
مثلا 2 يكتب فى الاختبارات النهائية 2 فقط
بكل سهولة
وهى للتسهيل ليس الا .

3 - يمكن الابقاء على الكود كما هو وفقط تعدل على الرقام بتاعت الاختبارات الى تحت
بمعنى انك لو عايز تتحكم فى لليد ينور ويطفى من خلال الزر رقم 1 فى الريموت
اذا تكت فى الاختبار لو 0 وهو قيمة الزر واحد فى الكومند اطلع على هذا
http://www.kucher.org/projects/tvcontrol/

ينور الليد ويطفية كما تريد من اوامر بدون تعب ولا عناء انقل كما فى الموقع .

4 - اذا كنت تستخدم ريموت سونى ولكن مثلا ل CD Player يبقى هنغير قيمة الادريس
من 1 الى 17
اى هكذا
كود:
if(ir_result[1]==17){
وبعد ذلك اكواد الزراير للريموت زى الموقع بالزبط
وهذا للتسهيل عليك .....


السلام عليكم ورحمه الله وبركاته



رد مع اقتباس
  #2  
قديم 07-31-2012, 12:42 PM
احب اتعلم احب اتعلم غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Jun 2012
المشاركات: 59
معدل تقييم المستوى: 8
احب اتعلم is on a distinguished road
افتراضي رد: تعلم كيفية صنع ريموت كنترول (مرسل + مستقبل) بالميكروسى ((الجزء الثانى المستقبل))

يا سلام عليك , موضوع مهم ثم مهم ثم مهم

يا اخي حرام عليك شرحك ممتاز لكن ينقصه التنسيق والالوان

للمفضلة
رد مع اقتباس
  #3  
قديم 07-31-2012, 12:56 PM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي رد: تعلم كيفية صنع ريموت كنترول (مرسل + مستقبل) بالميكروسى ((الجزء الثانى المستقبل))

شكرا جزيلا لك وكل عام وانت بخير
وان شاء الله احاول انسق وازبط اى شرح تانى
واذا كان فى اى شىء غير واضح ارجوا اخبارى وان شاء الله
اشرحة بمفردة بشكل ثانى ومبسط
على اد ما ااقدر
رد مع اقتباس
  #4  
قديم 07-31-2012, 09:07 PM
الصورة الرمزية Admin
Admin Admin غير متواجد حالياً
.
 
تاريخ التسجيل: Aug 2007
المشاركات: 482
معدل تقييم المستوى: 2
Admin تم تعطيل التقييم
افتراضي رد: تعلم كيفية صنع ريموت كنترول (مرسل + مستقبل) بالميكروسى ((الجزء الثانى المستقبل))

وعليكم السلام ورحمة الله

درس رائع ومفهوم فتح الله عليك ابواب علمه ونفع بعلمك
رد مع اقتباس
  #5  
قديم 08-01-2012, 03:11 AM
alolo alolo غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Mar 2011
المشاركات: 50
معدل تقييم المستوى: 9
alolo is on a distinguished road
افتراضي رد: تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل

موضوع ممتاز والله
الله ينعم عليك أخي ويجازيك كل خير
وشكرا جزيلا على
الشرح المميز

رد مع اقتباس
  #6  
قديم 08-01-2012, 07:20 AM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي رد: تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل

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

بشمهندس Admin
شكرا جزيلا لك
ونفع الله بك وبى الامة


اخى alolo
بارك الله فيك وفى شكرا جزيلا لك وجزاك الله كل خير
رد مع اقتباس
  #7  
قديم 09-19-2012, 11:33 AM
nir63 nir63 غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Mar 2011
المشاركات: 108
معدل تقييم المستوى: 9
nir63 is on a distinguished road
افتراضي رد: تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل

مشكوررر على المستقبل الحلو

كثرة الاسئلة في الطريق هههههه
رد مع اقتباس
  #8  
قديم 09-20-2012, 12:25 AM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي رد: تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل

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

ههههههه
وانا فى انتظارها ان شاء الله يا اخى
رد مع اقتباس
  #9  
قديم 09-29-2012, 05:19 PM
الصورة الرمزية benyamina
benyamina benyamina غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Feb 2010
الدولة: الجزائر
المشاركات: 60
معدل تقييم المستوى: 10
benyamina is on a distinguished road
افتراضي رد: تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل

جزاكم الله خيرا
رد مع اقتباس
  #10  
قديم 12-02-2013, 07:23 PM
my.love my.love غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Aug 2013
المشاركات: 18
معدل تقييم المستوى: 0
my.love is on a distinguished road
افتراضي رد: تعلم كيفية صنع ريموت كنترول مرسل + مستقبل بالميكروسى الجزء الثانى المستقبل

ممكن مخطط للدائره (المرسل والمستقبل)
مع جزيل الشكر.
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

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

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 01:30 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77