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

   

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 08-07-2014, 05:55 PM المشاركة 137   
sun



ان شاء الله يا اخى سيكون هناك تحديث لكل ذلك حتى يتثنى للجميع التعديل واستخدام هذه المواضيع بسهولة
ولذلك اريدك انت ان تعدل بنفسك كود الاستقبال لحينها وان كان من باب التعلم
وانا سوف اساعدك قليلا
فالامر سهل كل ما ستفعلة هو معرفة كود زر ال Power
وتضع فى تنفيذ الاوامر الخاصة به ((داخل جملة IF الخاصة بالزر ))
جميع المخارج الموجودة لليدات هكذا مثلا
كود:
PORTB.f0=~PORTB.f0;
فمعنى هذه الاشارة ~ هو عكس حالة الطرف
اى اذا كان ب 0 وهو يعنى ان الليد مطفئ سيحولة الى 1 ويشغل الليد
واذا كان ب 1 اى الليد يعمل سيحولة الى 0 اى يطفئ الليد وهكذا
اى ضغطة من الزر تطفئ الليد وضغطة اخرة تشغلة

كل ما عليك هو وضع كل الاطرف بهذه الشكل

بالتوفيق ان شاء الله
بارك الله فيك اخي funky112233 و جعله في ميزان حسناتك .. الحقيقه اخي رغم خبرتي الطويله في مجال صيانة الالكترونيات الا اني بصراحه مبتدئ في موضوع برمجة البك و كنت دائما احب ان اتعلم عن هذا العالم الرائع (المايكروكونترولر) لما له من تسهيلات في تصميم الدوائر الالكترونيه اكثر من دوائر البوابات المنطقيه و الدوائر التماثليه .. و منذ تقريبا ثلاث شهور قررت ان ادخل في هذا العالم و فعلا من خلال هذا المنتدى الكريم و بفضل الله اولا ثم فضل الاخوه الكرام امثالك و امثال الاستاذ الكبير احمد سمير فايد و غيرهم من الاخوه تمكنت بمعرفة الكثير عن هذا الموضوع و بدأت بتصميم دوائر بسيطه على ارض الواقع ولا تتخيل شعوري عند تنفيذ اول دارة الكترونيه باستخدام البك ....ااااسف جدا للاطاله ولكن هذا الكلام من كثرة حبي لاخواني في هذا المنتدى و الاعتراف بفضل الله على ثم فضلهم ....
و اخيرا اخي funky112233 اريد ان اقول لك اني طماع شويه و اريد ان تبعث لي بكود زر البور و كيفية استخدامه في البرنامج في دارة الاستقبال ..و اي شيئ لم افهمه في الموضوع اعدك ان اسألك عنه بس بدك تتحمل كثرة اسألتي ههههههههه
....بانتظار الرد اخي ..

اعلانات

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 11-07-2014, 07:13 PM المشاركة 138   
sun


لا زلت بانتظار ردك اخي funky112233 بارك الله فيك

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

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 15-07-2014, 03:52 PM المشاركة 139   
افتراضي


اخي funky112233 ارجوا ان تكون بصحه جيده و ان يكون المانع خير ان شاء الله.


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 18-07-2014, 07:41 PM المشاركة 140   
x6 بارك الله لك اخي الكريم واعزك وفتح لك كل ابواب الخير


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

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


انا موصل IR_Link علشان نجرب الدائرة كانها على الحقيقة بالزبط

ملحوظة هناك الكثير من الطرق لعمل المرسل والمستقبل وهذه احداها
اخي الحبيب funky112233
جزاكم الله بكل خير علي هذا الموضوع القيم
اريد معرفة كيفية توصيل IR_Link حتي يمكنني تجربة الدائرة
اشكرك مقدما وبارك الله لك


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 19-07-2014, 07:44 AM المشاركة 141   
x4


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

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

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


ثانيا

اريدكم ان تشاهدوا هذا الفديو للتجربة الحقيقية



IR Sony Remote - YouTube



وبعد المشاهدة
نبدء فى الشغل العملى على طول
اولا

حمل الدائرة والكود والمحاكاة وكل شىء من هنا
http://www.4shared.com/rar/bxKIRhhJ/...y_Remote.html?


انا موصل IR_Link علشان نجرب الدائرة كانها على الحقيقة بالزبط

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


"((نيجى بقى لشرح كل الى احنا حطيناه دة))"

1 - كيف نرسل اشعه تحت حمراء ويستقبلها المستقبل ؟؟

يجب ان تعلم ان المستقبل لا يستقبل الاشارة الا اذا كانت بتردد معين
مثل 36khz او 38khz او 40khz

وهناك ما هو اقل او اكثر من ذلك
المهم هو ان نرسل الاشارة بتردد

ولكن كيف يفكك المستقبل الاشارة وما تعنى الارسال بتردد اليس التردد نبضات ؟؟!! اذن سيخرج المستقبل نفس عد النبضات وهو ملا يحدث اذن ماذا يحدث بالفعل

هذه الصورة توضح عمل المستقبل بكل دقة




انظر الى المرسل كيف هى الاشارة وكيف يخرجها المستقبل
المستقبل ليس مجرد ترانزيستور ضوئى يخرج كما ترسل له
لا يوجد به نظام للاستقبال بتردد واخراج الاشارة TTL كما تراها

بدون الدخول فى تفاصيل كثيرة

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

وهى الطريقة المستخدمة فى المشروع وتم الارسال بتردد 38khz

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

كيف هو شكل نبضات بروتوكول سونى ؟؟

هو كا الاتى فى البدء نبضة بداية 2.4 مللى ثانية
وبعد ذلك مساحة بدون ارسال لمدة 600 ميكرو ثانية
وبعد ذلك يبدء الارسال على حسب البايت المرسل
مع العلم انه فى كل بايت مرسل توجد مساحة 600 ميكرو ثانية

الرقم واحد فى البايت يساوى 1200 ميكرو ثانية
اما الصفر فهو يساوى 600 ميكرو ثانية

يعنى هاكذا مثلا اذا اردنا ارسال البايت هذا
10000000
يكون هكذا
2.4 مللى ثانية نبضة البداية
وبعد ذلك 600 ميكرو ثانية مساحة بدون ارسال((اى يتوقف المرسل عن الارسال))
وبعد ذلك
يبدء البايت هنا اول بيت هو 1 اذا 1200 ميكروثانية وبعد ذلك مساحة
والذى يلية هو 0 اذا 600 ميكرو ثانية ارسال ثم مساحة (اى بدون ارسال)
ثم البيت الى بعدة وهكذا

فى الكود الى انشاتة 12 بيت غير نبضة البداية
مقسمون الى 7 بيت كومند
و 5 بيت ادريس او عنوان

الادريس او العنوان فائدة تحدد نوع الجهاز حتى لا يحدث تداخل بين الاجهزة
وفى حالة ريموت التلفزيون يساوى 10000 وهو ثابت على التلفزيون لشركة سونى

والكومند الى هما 7 بيت عبارة عن الاوامر التى تنفزها الازرار بمعنى
الزرار واحد يساوى 0000000 اى 7 اصفار والواحد يساوى 1000000
وهكذا
يعنى اذا رادنا ارسال شفرة الزرار الاول نرسلها بتردد 38khz بهذا الشكل
نبضة البداية 2.4 ثم فراغ ثم 12 بيت بينه فراغات كما وضحت هكذا
000000010000
كما نرى 7 اصفار كومند و 10000 الادريس

ولمعرفة اكواد الريموت كلها اتبع الرابط الاتى
http://www.kucher.org/projects/tvcontrol/

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

ناتى لشرح كود الارسال

سوف اضح شكل الكود لزرار واحد فقط حتى لا يكون طويل
واذا فهمت الفكرة يمكنك عمل كل ازرار الريموت كما تريد

كود:
char x;

void main() {
CMCON=0x07;TRISA=255;TRISB=0;portb=0;
PWM1_Init(38000);
PWM1_Set_Duty(255);


  while (1) {
  if (porta.f0==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }

      PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
      delay_ms(250);
        }
         }
        }
فى البدء عرفت متغير اسمة X
وبعد ذلك قمت بتحديد الخرج والدخل

ثم جعل PWM يعمل على تردد 38khz وتكتب 38000 كما تروها
بكل هذه البساطة سوف يخرج الميكرو اشارة بتردد 38khz
وبعد ذلك جعلت النبضات تخرج 5 فولت وليس اقل

اذا لم يبقى علينا الا تشغيل الخرج لل PWM وايقافة بالاوقات المطلوبة
على حسب الشفرة بتاعت الريموت

هذا الزر هو رقم 1 فى الريموت
وشفرتة هى
000000010000

اى كل الكومند اصفار وطبعا الادريس ثابت كما قلت

انظر الى النقطه هذه

كود:
PWM1_Start();delay_us(2400);PWM1_Stop();                    //button 1
      delay_us(600);
      for(x=0;x<7;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600); }
ماذا فعلت هنا ؟؟

ببساطة قلت له شغل الخرج لمدة 2.4 مللى ثانية اى 2400 ميكرو ثانية وهى نبضة البداية
وبعد ذلك افصلة لمدة 600 ميكرو ثانية ((المساحة التى تكلمت عنها ))

ثم وهذا هو الاهم
احنا عايزينة يبعت 7 بيت بتوع الكومند كلهم 0
يبقى نكرر الامر بتاع ارسال الرقم 0 7 مرات
كما ترى يشغل الخرج لمدة 600 ميكرو ثانية ثم يفصل لمدة 600 ميكرو ثانية المساحة التى تكلمت عنها
وهكذا 7 مرات يعطينا 0000000 بكل بساطة

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

اذا نكرر الامر 0 4 مرات وهكذا يصبح لدينا 0000
وفى المجمل 000000010000
وهى الاشارة المطلوبة

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

وفى النهاية ينتظر 250 مللى ثانية حتى ترفع يدك من على الزرار


وهذا هو كود ارسال الرقم 2

كود:
    if (porta.f1==0){
      PWM1_Start();delay_us(2400);PWM1_Stop();
      delay_us(600);
      PWM1_Start();delay_us(1200);PWM1_Stop();      //button  2
      delay_us(600);
      for(x=0;x<6;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        PWM1_Start();delay_us(1200);PWM1_Stop();
        delay_us(600);
         for(x=0;x<4;x++){
      PWM1_Start();delay_us(600);PWM1_Stop();delay_us(600);  }
        delay_ms(250);
        }
ارجوا من المتابعين كتابة الرقم 3 بنفس الطريقة
والاكواد موجودة فى الموقع فوق


وانا عارف ان شرحى مش كويس ههههههههههه
حوال ان تجتهد شوية فى فهم الكود والنقطة الى تقف معاك متترددش انك تسئل

وان شاء الله انا بحضر للمستقبل
ولكن هنزل الشرح بتاعه لما
نفهم المرسل كويس اوى الاول



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

هذا هو كود مرسل بعد أختصاره
كود:
const char address_dvice=1;// address
void send_data(const char address , unsigned char codes);
void main()
 {
   CMCON=0x07;TRISA=255;TRISB=0;portb=0;
   PWM1_Init(38000);
  PWM1_Set_Duty(255);


  while (1) {
            if (porta.f0==0)send_data(address_dvice,0);
            if (porta.f1==0)send_data(address_dvice,1);
            if (porta.f2==0)send_data(address_dvice,2);
            if (porta.f3==0)send_data(address_dvice,3);
           }

  }
//***************************************************************************//
void send_data(const char address , unsigned char codes)
{
 char bitnum =0;
 PWM1_Start();
 delay_us(2400);
 PWM1_Stop();
 delay_us(600);

 for(bitnum= 0; bitnum< 7; bitnum++) // send code
                  {

                   if( codes & (1 << bitnum))     // test bit <bitnum>
                       {
                         PWM1_Start();
                         delay_us(1200);
                         PWM1_Stop();
                         delay_us(600);
                       }
                  else{
                       PWM1_Start();
                       delay_us(600);
                       PWM1_Stop();
                       delay_us(600);
                     }
                  }

 for(bitnum= 0; bitnum< 5; bitnum++)// send address
                  {

                   if( address & (1 << bitnum))     // test bit <bitnum>
                       {
                         PWM1_Start();
                         delay_us(1200);
                         PWM1_Stop();
                         delay_us(600);
                       }
                  else{
                       PWM1_Start();
                       delay_us(600);
                       PWM1_Stop();
                       delay_us(600);
                     }
                  }

 delay_ms(250);
}

تلاحظون اني استخدمت هذه اكواد
كود:
if (porta.f0==0)send_data(address_dvice,0);
            if (porta.f1==0)send_data(address_dvice,1);
            if (porta.f2==0)send_data(address_dvice,2);
            if (porta.f3==0)send_data(address_dvice,3);
أعتقد الامر أصبح بسيط

وياريت كأقتراح لجميع أخوه حاولو دائما يكون برنامج تطبيقه عام وثانيا مجرد أعطاءه داتا

شكرا جزيلا لصاحب الموضوع أخينا في الله funky112233 وقد أستفدت كثير من كود أستقبال ولذا فكرت بأن أعطي شيئ بسيط بمقابل ما تعلمته منكم

الفكره ببساطه هي في هذا الكود
كود:
codes & (1 << bitnum)
او
كود:
address & (1 << bitnum)
وهنا نشفت 1 الى اليسار على حسب البت الي نعمل عليه وهذا يعتمد على قيمه
bitnum ونعمل له and مع codes or address فأذا كانت النتيجه 0 أذن نرسل كود 0
كود:
PWM1_Start();
                       delay_us(600);
                       PWM1_Stop();
                       delay_us(600);
اما اذا كانت النتيجه لاتساوي 0
اذن يرسل 1
كود:
PWM1_Start();
                         delay_us(1200);
                         PWM1_Stop();
                         delay_us(600);
ملاحظه// وضعت زمن تأخيري في داله send_data مقداره 250ms وهذا زمن لضغطه السويج يعني لاتضع اي زمن في سويجات لاني وضعتها في داله الارسال وبتالي ايضا نختصر الكود بشكل أفضل
تحياتي للجميع


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 19-07-2014 الساعة 07:52 AM

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 16-08-2014, 11:29 AM المشاركة 142   
sun


السلام عليكم و رحمة الله و بركاته
وافر الشكر و التقدير الي اخي محمد (funcky) علي ما قدمه من مجهود مبذول و ملاحظ في شروحاته و لولا الله اولا ثم اخي محمد ثانية لما كنت افهم بروتوكولات الريموت و التعامل مع الاشعة تحت الحمراء...
هذا كود ارسال لريموت سوني مختصر شوية لمن يريد ان يفك شفرات جميع الازرار في الريموت و بكل سهولة و انا عامله لخمس مفاتيح من الزر رقم 0 حتي الزر رقم 5
و اليكم الكود ...
كود:
char x;
void bit_start()
{pwm1_start();delay_us(2400);pwm1_stop();delay_us(600);}
void bit_1()
{pwm1_start();delay_us(1200);pwm1_stop();delay_us(600);}
void bit_0()
{pwm1_start();delay_us(600);pwm1_stop();delay_us(600);}
void adress_bits()
{bit_1();for(x=0;x<4;x++){bit_0();}}
void main() 
{
trisb=0xff;
TRISC=0X00;
PORTC=0X00;
pwm1_init(38000);
pwm1_set_duty(255);
while (1)
        {
        if(portb.f0==1)   // the key number '0'
                       {
                       delay_ms(500);bit_start();
                       for(x=0;x<7;x++){bit_0();}adress_bits();
                       }
        if(portb.f1==1)   // the key number '1'
                       {
                       delay_ms(500);bit_start();bit_1();
                       for(x=0;x<6;x++){bit_0();}adress_bits();
                       }
        if(portb.f2==1)   // the key number '2'
                       {
                       delay_ms(500);bit_start();bit_0();bit_1();
                       for(x=0;x<5;x++){bit_0();}adress_bits();
                       }
        if(portb.f3==1)   // the key number '3'
                       {
                       delay_ms(500);bit_start();bit_1();bit_1();
                       for(x=0;x<5;x++){bit_0();}adress_bits();
                       }
        if(portb.f4==1)   // the key number '4'
                       {
                       delay_ms(500);bit_start();bit_0();bit_0();bit_1();
                       for(x=0;x<4;x++){bit_0();}adress_bits();
                       }
        if(portb.f5==1)
                       {  // the key number '5'
                       delay_ms(500);bit_start();bit_1();bit_0();bit_1();
                       for(x=0;x<4;x++){bit_0();}adress_bits();
                       }
        }
}
__________________________________________________ _____________
و هذه هي جميع ملفات المشروع مع المحاكاة ببرنامج بروتس ....

http://www.mediafire.com/?75r3fndv3p8disu

و اي استفسار عن الكود انا في الخدمة ....و لا احد يتردد في السؤال..

ان شاء الله سوف اضع كود افضل من هذا ليؤدي نفس الوظيفة ..
اترككم في رعاية الله .....
و السلام عليكم و رحمة الله و بركاته.....
بارك الله فيك اخي على هذا الشرح المبسط للاكواد السابقه /يا ريت اخي الكريم ان تكتب كود الارسال لزر البور (ريموت سوني ) بحيث اذا ضغطت عليه يطفئ البورت كامل (الليدات) في المستقبل و ضغطه اخرى عليه نضيئ البورت بالكامل/حيث انني قمت بعمل المرسل و المستقبل الذي قام الاخ محمد مشكورا بكتابته و هو يعمل بشكل ممتاز و الحمد لله (مع اضافة بعط القطع مثل الترانزستور و المقاومه......)و لكن اخي كما ذكرت لك اريد ان تكتب لي شيفرة زر البور ليكتمل الموضوع ..سواء بواسطتك او بواسطة الاخ محمد و جزاكم الله بكل الخير


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:
قديم 16-08-2014, 11:39 AM المشاركة 143   
sun


بسم الله الرحمن الرحيم
اخوتى المظلوم ..winsock
قوموا بتوصيل الليد بدون ترانزيستور
مباشرة على الطرف RB3/CCP1 الطرف رقم 9 فى الميكرو
وصلوا الطرف الموجب على هذا الطرف مباشرة
وجربوة على مسافة قريبة من المستقبل مسافة 5 سنتى متر تقريبا
وسوف اخبركم لماذا بعد التجربة ان شاء الله
وهذه هى المشكلة التى كنت اتحدث عنها وان شاء الله
سوف اخبركم عن الحلول
واتمنى منكم ان تقوموا بعمل الكود على طريقة اخى محمد
فهى افضل من الطريقة البدائية التى وضعتها انا
وهى كانت للتعلم فقط
واحى اخى المظلوم على اجتهادة الرائع

اخى mohamedalikahli
جزاك الله كل خير وان شاء الله فى ميزان حسناتك
وطريقة مختصرة وجميلة
شكرا جزيلا لك
ولكن اخي انا قمت بتجربة كود الارسال بتاعك مع اضافة مقاومات و ترانزستور و كانت النتائج مذهله حيث كان الارسال و الاستقبال على بعد اكثر من 10 متر بجوده ممتازه لذلك اخي اذا ما فيها غلبه اطلب منك (كما طلبت من الاخ السابق )ان تكتب لي كود زر البور في الريموت (الريموت الذي صنعناه)و كود زر البور هو 21 ولكن لم اعرف الطريقه التي اكتبها به في كود الارسال / و اريد هذا الكود لكي اطفئ البورت بالكامل في المستقبل و كذلك اشغله بالكامل عند ضغطه اخرى


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 16-08-2014, 12:55 PM المشاركة 144   
افتراضي


ولكن اخي انا قمت بتجربة كود الارسال بتاعك مع اضافة مقاومات و ترانزستور و كانت النتائج مذهله حيث كان الارسال و الاستقبال على بعد اكثر من 10 متر بجوده ممتازه لذلك اخي اذا ما فيها غلبه اطلب منك (كما طلبت من الاخ السابق )ان تكتب لي كود زر البور في الريموت (الريموت الذي صنعناه)و كود زر البور هو 21 ولكن لم اعرف الطريقه التي اكتبها به في كود الارسال / و اريد هذا الكود لكي اطفئ البورت بالكامل في المستقبل و كذلك اشغله بالكامل عند ضغطه اخرى
السلام عليكم
أخي كريم لقد كتبت لك كود في مشاركه 24
http://www.qariya.info/vb/showthread...=149513&page=3
الم ينجح معاك الكود
تحياتي



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