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

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

  #1  
قديم 09-15-2012, 11:41 PM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

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

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

سوف نقوم بشرح كيفية التحكم فيما حولنا من خلال ذراع البلايستيشن Playstation controller

وان شاء الله سيكون الشرح كالاتى

اولا
معرفة الاطراف والهاردوير


ثانيا
نتعرف على البروتوكول وكيف يعمل


ثالثا
خطوات كتابة الكود


رابعا
الكود وشرحة


_______________________________________________________________

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

http://www.youtube.com/watch?v=k8sqyRSc3-w


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

_______________________________________________________________

اولا
معرفة الاطراف والهاردوير


يجب ان نعرف اننا لكى نتحكم من خلال الذراع بشكل كامل نحتاج الى 8 اطراف وهم



وكما نرى بجانب كل طرف اهميتة واهمية استخدامة
وهناك طرف رقم 8 لا فائدة منة بالنسبة لنا

التوصيل اذا كان من الخارج اى من السلك الخاص بالذراع

فسيكون كالتالى
هذه هى اطراف السوكت الخاص بة وكل طرف علية رقم



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



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

وهى كالاتى



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

وعند التوصيل يجب توصيل مقاومة 10 كيلوا بين الموجب وطرف الداتا Data
اى pull up resistor



_______________________________________________________________

ثانيا
نتعرف على البروتوكول وكيف يعمل


البرتوكول يسمى ب Playstation pad protocole

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

وهو يعمل كالاتى
فى البداية يجب ان يعطى الميكرو نبضة سالبة 0 على الطرف ATT
لكى يعرف الذراع اننا نريد ان نتحدث معه ونرسل لة بيانات ونستقبل بيانات

بعد ذلك يكون الذراع جاهز لتلقى المعلومات

والمعلومات تكون على صورة بايت فى كل مرة اى 8 بت اى رقم يقع بين 0 الى 255

ولكن الارسال لا يكون بارسال 8 بت مرة واحدة لا فنحن لا نملك الا طرف 1 فقط للارسال وطرف اخر للاستقبال

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

ولهذا نقوم بارسال بت بت الى الذراع
ولكن من اين يعرف الذراع سرعه الارسال التى نتعامل بها
فمن الممكن ان يرسل البك البيانات بسرعه ويمكن ان يرسلها ببطىء
هناك اكثر من حل

ولكن هذا البروتوكول اعطنا حل وهو
اننا نقوم بالتحكم فى سرعه نبضات من خلال الطرف Clock ليحدث تزامن فى الارسال والاستقبال

اى كل نبضة نقوم بارسال قيمة بت والنبضة التى تليها نقوم بارسال بت اخر وهكذا
اى كل بت نعطى نبضة فيعرف الذراع انه تم ارسال بت ويحدث تزامن بين الميكرو والذراع فى استقبال وارسال البيانات
والنبضة ببساطة هى اخراج 0 فولت على الطرف Clock ثم ((انتظار فترة زمنية)) واخراج 5 فولت
وهكذا نكون قمنا بعمل نبضة

والتردد او السرعة التى يعمل عليها الذراع تقع بين 100 كيلواهرتز الى 500 كيلوا هرتز 100khz - 500khz

اى فترة الانتظار ممكن تكون 10 ميكرو ثانية وهذا جيد
وهذا يعنى اختبار البيانات والذراع 100 الف مرة فى الثانية الواحدة تقريبا
وهذه سرعه هائلة للاستجابة لضغطة الزر

ثم وبعد ارسال اى بايت
يقوم الذراع بارسال نبضة سالبة على الطرف ACK
لكى يُعلم البك انه استلم البايت وهو مستعد لاستقبال البيتات الاخرى

وهذه صورة توضح الامر مرتبا فوق بعضة



فكما نرى فى البداية يكون الطرف clock موجب وعندما نعطية نبضة سالبة
يتم استقبال وارسال اول بت وهو BIT0 سواء على الطرف Command او Data
فالارسال والاستقبال يكونان فى نفس الوقت كما قلت

وعند ارتفاع النبضة على الطرف Clock الى الموجب مرة اخرى ينتظر الذراع منك ان ترسل نبضة سالبة
اخرى لكى يتستقبل او يرسل بت اخر وهكذا 8 مرات ليتم ارسال باايت كامل
اى انك تقوم بكتابة قيمة البت الذى سوف ترسلة سواء ب 0 او 1 وتعطى نبضة فيتم التعرف على البت وهكذاااا

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

وللتحكم فى الذراع يجب اعطائة فى البداية اوامر مكونة من 3 بايت
وهى اوامر تعرفة باى نظام سوف نتعامل وهكذا

اول بايت يجب ان يكون 1 او 0x01 او 00000001 وعندها سيرد الذراع عليك ببايت بقيمة 255 او 0xFF
ثم يعطيك نبضة سالبة على الطرف ACK

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

النظام الاول الديجتال
وهو يكون للتعامل مع كل ازار الذراع ما عدا البلية او joysticks
لانها تحتاج الى نظام اخر

النظام الثانى وهو انالوج
وهو يكون للتعامل مع كل الازرار بما فيهم البلية او joysticks

وهناك نظم اخرى ولكن هذا ما نحتاجة

وكل نظام لة امر محدد ولكن هناك امر يجمع بين كل هذه الانظمة
وهو الامر 0x42 او 01000010 او 66
والذى يفصل بين نظام الديجتال عن الانالوج هو الزر الذى يضىء الليد الاحمر فى الذراع
ستجد انه مكتوب علية ANALOG وعند الضغط علية يُفعل نظام الانالوج
والذى من خلال يتم التحكم من خلال البلية او joysticks

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

وبعد ارسال 0x42 الى الذراع سيرد عليك ب بايت قيمتة 0x41 او 0x79

ثم نبضة سالبة على الطرف ACK
فنقوم بارسال البايت الثالث وهو 0 او 00000000 او 0x00

وبعد ذلك نبدء فى استقبال البيانات من الذراع
وسنعرف ذلك فيما بعد

انظروا الى هذه الصورة



الصورة تشرح كل ما قلتة بالزبط
..............................................................................................................

يبقى سؤال اخير كيف يتم استقبال البيانات وكيف نعرف انه تم الضغط على الزر كذا وكذا

البيانات ببساطة تاتى على شكل 6 بايت
البايت الاول والثانى نعرف من خلالهما اذا كان تم الضغط على اى زر فى الذراع ام لا
وهذا ما يسمى بنظام الديجتال

اما البايت الثالث والرابع والخامس والسادس
فنعرف من خلالهم قيم تحريك البلية او joysticks
....................................................................

البايت الاول والثانى



كما نرى كل بت فى البايت تعبر عن زر من الازرار وفوق كل بت نجد اسم الزر الذى يعبر عنة
اى اذا كان البت يساوى 1 فهذا يعنى انة لم يتم الضغط على اى زر اما اذا ساوى 0 فهذا يعنى انه تم الضغط على هذا الزر

الاسهم هنا تسمى ب UP DOWN وهكذا

مثال

كيف يكون شكل البايت الرابع ((البايت الاول فى البيانات المستقبلة))
اذا كان الزر START تم الضغط علية
اذا نظرنا الى جدول سنجد انة تحت الزر START نجد 4.3 وهذا يعنى البت الرابع فى البايت الرابع

سيكون كالاتى 11110111 او 247 فكما نرى كل الازرار تعطى 1 عند عد الضغط عليها
اى البايت كامل عند عدم الضغط على اى زر يعطى 11111111 او 255 او 0xFF
وعند الضغط على اى زر يتحول البت الخاص بة الى 0

وهذه الصورة توضح اكثر



فهنا كل بت من كل بايت فوقة الزر الخاص بة
من اول البايت الرابع 4 الى البايت الخامس 5

اما من 6 الى 9
فهذه البايتات خاصة بل البلية او joysticks

فببساطة هذه البلية او joysticks مكونة من مقاومة متغيرة اى انالوج ويتم تحويل القيمة كما نعلم من خلال
ADC Module من انالوج الى ديجيتال ولكننا لن نستخدم ADC بال الذراع يعطينا الرقم محول جاهز الى ديجيتال

وكما نرى البايت 6 يعطينا قيم من 0 الى 255 تعبر عن قيم تحرك البلية او joysticks
اليمنة فى الذراع
فى الاتجاة الافقى اى يمين او يسار

اى انة فى الوضع الطبيعى ستكون القيمة 127 فاذا قمنا بتحريك البلية او joysticks
الى اقصى اليمين يكون النتج 255 ولو حركناها الى اقصى اليسار سيكون الناتج 0

وبالطبع خلال تحرك البلية او joysticks الى اليمين او اليسار تتغير القيمة على حسب التحرك

وهذا يمكننا وضع هذا البايت داخل
كود:
PWM1_Set_Duty;
لكى نتحكم فى اضائة ليد او سرعه محرك بسهولة ويسر

والبايت الذى يلية السابع 7 يعطينا نفس القيم للبلية او joysticks الايمن
ولكن للخط الراسى اى لاعلى او لاسفل

والبايت الذى يلية الثامن 8 نفس الكلام زى البايت السادس بالزبط ولكن للبلية او joysticks اليسرى
والتاسع كذلك 9 مثل السابع ولكن للبلية او joysticks اليسرى

اما بالنسبة لشتغل المواتير فا فى البايت الرابع والخامس اذا قمنا بارسال اى ارقام غير 0 على الطرف Command
فسوف تعمل المواتير وكل بايت خاص بماتور
__________________________________________________________________________
__________________________________________________________________________

ثالثا
خطوات كتابة الكود


اول خطوة هى تعريف الاطراف التى سوف نقوم بربط الذراع مع الميكرو من خلالها
ثانى خطوة ارسال 3 بايت لتعريف النظام وتحديد نوع البيانات
ثالث خطوة استقبال البيانات
رابع خطوة اختبار البيانات وتنفيذ الاوامر فى حالة الضغط على الازرار

__________________________________________________________________________
__________________________________________________________________________

رابعا
الكود وشرحة
((الجزء المتعب للبعض هههههههه )) :cry::cry:

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

اولا
حمل الكود من هنا

http://www.4shared.com/rar/I-vvZDUa/PS2.html?

وهذا هو الكود

كود:
#define data PORTB.f0
#define command PORTB.f1
#define clock PORTB.f2
#define att PORTB.f3
#define ack PORTB.f4

unsigned char natg[6];char dd ;

void ps_clock(){         // Void For Make Plus 0 And 1 All The Time
clock=0;
delay_us(10);
clock=1;
delay_us(10);
}

void psinit(){
char x;
att=0;

command=1;
ps_clock();
for(x=0;x<7;x++){            /// 0x01
command=0;
ps_clock(); }

while(ack==1){}

command=0;
ps_clock();
command=1;
ps_clock();
for(x=0;x<4;x++){          ///// 0x42
command=0;
ps_clock(); }
command=1;
ps_clock();
command=0;
ps_clock();

while(ack==1){}

for(x=0;x<8;x++){          ///// 0x00
command=0;
ps_clock(); }

}

unsigned char psnatg(){
ps_clock();                             // Void For Get Bit
dd = data;
return dd;
}

unsigned char get_ps_byte(){
char n;
unsigned char ps_byte = 0;
unsigned char temp_ps = 0;
                                                  // Void For Get Byte
    for(n=0 ; n<8 ; n++){
       temp_ps = psnatg();
          ps_byte >>= 1;
        if (temp_ps == 1) {
            ps_byte += 0x80; // 128 // 10000000
        }

    }
    return ps_byte;
}

char cc;

void main() {
trisb=17;trisd=0;portd=0;PORTB.f7=0;

while(1){
att=1;clock=1;command=1;
psinit();                       // Initialize The PS2 Controller
command=0;

for(cc=0;cc<6;cc++){
while(ack==1){}                      //   Recive BYTEs
natg[cc] = get_ps_byte(); }
att=1;

if(natg[0]==247||natg[0]==254){PORTB.f7=~PORTB.f7;delay_ms(250);}
if(natg[1]==239||natg[1]==223){PORTD.f1=~PORTD.f1;delay_ms(250);}
if(natg[2]==0||natg[2]==255){PORTD.f2=~PORTD.f2;delay_ms(250);}
if(natg[4]==0||natg[4]==255){PORTD.f3=~PORTD.f3;delay_ms(250);}

    }


}
اول خطوة كانت تعريف الاطراف التى سوف نقوم بربط الذراع مع الميكرو من خلالها

وهاهى

كود:
#define data PORTB.f0
#define command PORTB.f1
#define clock PORTB.f2
#define att PORTB.f3
#define ack PORTB.f4
فهذا الامر يقوم بابدال اسم الاطراف الى اى اسم تختارة

مثلا بدل ما اكتب PORTB.f0 يمكننى الان ان اكتب data بدلا منها
وهكذا مع الباقى ويمكنك تغير الاطراف كما تريد

وبعد ذلك قمت بتعريف مصفوفة مكونة من 6 متغيرات لكى احفظ فى كل متغير
القيمة المستقبلة من الذراع التى تعبر عن حالة الازرار والبلية joysticks
ومتغير اسمة dd للاستخدام داخل الكود

كود:
unsigned char natg[6];char dd ;
..............................................................................................................

ثانى خطوة كانت ارسال 3 بايت لتعريف النظام وتحديد نوع البيانات
ولكن نذهب اولا الى Void main

وقبل البدء هذه الاوامر لتعريف المخارج والمداخل للبك
كود:
trisb=17;trisd=0;portd=0;PORTB.f7=0;
فيجب جعل الاطراف Data و ACK كادخل اما الباقى خرج

ثم جملة تكرارية الى ملانهاية while
ثم جعل جميع الاطراف للخرج الخاصة بالذراع
تساوى 1 وهذا لكى يعمل جيدا

كود:
att=1;clock=1;command=1;
ثم قلت له اذهب الى داله التعريف او الدالة التى تقوم بكتابة اول 3 بايت لتهيئة الذراع

كود:
psinit();                       // Initialize The PS2 Controller
فلنذهب اليها اذان

كود:
void psinit(){
char x;
att=0;

command=1;
ps_clock();
for(x=0;x<7;x++){            /// 0x01
command=0;
ps_clock(); }

while(ack==1){}

command=0;
ps_clock();
command=1;
ps_clock();
for(x=0;x<4;x++){          ///// 0x42
command=0;
ps_clock(); }
command=1;
ps_clock();
command=0;
ps_clock();

while(ack==1){}

for(x=0;x<8;x++){          ///// 0x00
command=0;
ps_clock(); }

}
اول ما تفعلة الداله هو اخراج نبضة سالبة 0 على الطرف ATT لكى يعرف الذراع انى سابدء بالارسال

وكما قلت فى البداية نحن نريد ان نرسل اول بايت 0x01 او 1 او 00000001
يعنى اول بت ب1 والباقى ب0 اى 1 و 7اصفار

لهذا جعلت قيمة الطرف Command وهو الطرف الخاص بارسال الاوامر الى الذراع
يساوى 1
ثم قلت له اذهب الى الداله
كود:
ps_clock
وهى داله خاصة لعمل النبضات

وها هى
كود:
void ps_clock(){         // Void For Make Plus 0 And 1 All The Time
clock=0;
delay_us(10);
clock=1;
delay_us(10);
}
فى البدء يجعل طرف الساعة Clock يساوى 0 ثم ينتظر 10 ميكروثانية
ثم يجعلة يساوى 1 ثم ينتظر 10 ميكروثانية
وهكذا نكون قمنا بعمل نبضة وايضا تم ارسال اول بت وهو بقيمة 1

ثم يعود مرة اخرى الى داله التعريف
فطوال الوقت سوف نقوم بتغير قيمة ال Command ثم نذهب الى داله الساعة
لتفعيل النبضة وارسال البت وهكذا كل بت معها نبضة ساعة

تبقا لنا 7 بت كلهم اصفار لارسالهم
لهذا قمت بعمل تكرار 7 مرات وفية قمت بجعل قيمة الطرف Command يساوى 0
ويذهب الى نبضات الساعة وهكذا 7 مرات نحصل على 7اصفار
وفى المجمل نحصل على البايت 0x01 او 1 او 00000001

كود:
for(x=0;x<7;x++){            /// 0x01
command=0;
ps_clock(); }
ثم جعلت البك ينظر حتى يعطية الذراع انة مستعد لاستقبال باقى البيانات
وهذا من خلال الطرف ACK

كود:
while(ack==1){}
ثم ارسال البايت الثانى 0x42 بنفس الطريقة

ثم البايت الثالث 0x00 بنفس الطريقة

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

فيعود مرة اخرى الى ال Void main
ويقوم بعمل
كود:
command=0;
وهذا هام حتى لا تعمل المواتير
..............................................................................................................

الخطوة الثالثة وهى استقبال البيانات

كود:
for(cc=0;cc<6;cc++){
while(ack==1){}                      //   Recive BYTEs
natg[cc] = get_ps_byte(); }
فكما نرى هذا هو امر استقبال البيانات
ولكنى قمت بتكرارة 6 مرات اى 6 بايت حتى نستقبل قيم جميع الازرار والبلية joysticks
وهو يعمل كلاتى
فى البداية نتظر حتى يعطى الذراع
النبضة السالبة على الطرف ack لكى نبدء فى استقبال البيانات
كود:
while(ack==1){}
ثم يخزن القيمة الراجعه من الدالة get_ps_byte داخل متغير من المصفوفة natg
على حسب عدد cc يعنى فى البدء cc يساوى 0 فيخزن اول بايت فى الخانة 0
ثم تصبح 1 فيخزن ثانى بايت فى الخانة 1
ثم تصبح 2 فيخزن البايت الثالث فى الخانة 2 وهكذا

اذن لنذهب الان الى get_ps_byte لنرى كيف تستقبل بايت فى كل مرة وتعود بة

كود:
unsigned char get_ps_byte(){
char n;
unsigned char ps_byte = 0;
unsigned char temp_ps = 0;
                                                  // Void For Get Byte
    for(n=0 ; n<8 ; n++){
       temp_ps = psnatg();
          ps_byte >>= 1;
        if (temp_ps == 1) {
            ps_byte += 0x80; // 128 // 10000000
        }

    }
    return ps_byte;
}
اظن انكم تعرفونها
نعم هى تقوم بعمل ازاحة فى كل مرة استقبال مثل مشروع الاشعه تحت حمراء

ولكننا هنا نكرر 8 مرات لان هذا هو عدد البتات للبايت الواحد وهو ثابت
ثم نجعل قيمة هذا المتغير temp_ps يساوى قيمة الدالة
كود:
psnatg();
وهى مسؤلة عن استقبال بت واحد فى كل مرة

كود:
unsigned char psnatg(){
ps_clock();                             // Void For Get Bit
dd = data;
return dd;
}
فهى تقوم بالذهاب الى داله الClock اى تقوم بعمل نبضة
لكى يتم ارسال بت من الذراع ويتم تغير قيمة الطرف Data
فنجعل المتغير dd يساوى قيمة طرف الداتا Data
ثم يجعل قيمة الداله تساوى هذه القيمة return dd

فتعود لدالة الاستقبال
اذن اصبحت قيمة المتغير temp_ps تساوى قيمة البت المستقبلة

فنقوم بعمل امر الازاحة الى اليمين بقيمة 1
كود:
  ps_byte >>= 1;
والازاحة هى اذا كان مثلا الرقم هكذا
10000000 فيكون بعد الازاحة 01000000 اى يتم ازاحتة الى جة اليمين ووضع مكانة 0
ثم يختبر هل كانت قيمة البت المستقبل 1 ام لا
فاذا كانت تساوى 1
يتم اذن اضافة رقم 1 الى اول البايت اى اذا كان هكذا 00000000 فيتم اضافة 1 هكذا 10000000
واذا لم تكن فقد تم اضافة 0 اوتوماتيك بعمل الازاحة فى الاول

وهكذا تكرار 8 مرات فنحصل على البايت فيعود الى الدالة الرئيسية وامر الاستقبال
فيرجع مرة اخرى ليستقبل بايت اخر
وهكذا 6 مرات حتى يستقبل جميع البيتات الستة
..............................................................................................................

رابع خطوة اختبار البيانات وتنفيذ الاوامر فى حالة الضغط على الازرار

يجب بعد الانتهاء جعل الطرف ATT يخرج 1 حتى لا يرسل الذراع بيانات اخرى
ويخلى البك يخرف

كود:
att=1;
ثم نختبر قيمة الازرار فاذا تم الضغط على زر O مثلا او [ ] يشغل ليد او يفعل كذا وكذا

كود:
if(natg[0]==247||natg[0]==254){PORTB.f7=~PORTB.f7;delay_ms(250);}
if(natg[1]==239||natg[1]==223){PORTD.f1=~PORTD.f1;delay_ms(250);}
if(natg[2]==0||natg[2]==255){PORTD.f2=~PORTD.f2;delay_ms(250);}
if(natg[4]==0||natg[4]==255){PORTD.f3=~PORTD.f3;delay_ms(250);}
هنا انا اقوم باختبار امرين مرة واحدة داخل جملة IF
من خلال كتابة الامر الاول ثم || ثم الامر الثانى
فاذا كان احد الاختبارين منفذ يقوم البك بتنفذ الاوامر
وهذا اختصار بدل ما اكتب اكثر من جملة لتنفيذ امر واحد

وكما نرى كل بايت لة رقم

البايت الرابع = [natg[0
البايت الخامس = [natg[1 الخاصين بالازرار

البايت السادس = [natg[2
البايت السابع = [natg[3
البايت الثامن = [natg[4 الخاصين بالبلية joysticks
البايت التاسع = [natg[5

__________________________________انتهى________________________
_______________________________________________________________

اى استفسار انا تحت امركم ان شاء الله
ولا تخجل من السؤال ابدا

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

فقط كل ما عليك ان تعرف كيف تختبر الازرار وكيف تكتب جملة if للتعامل مع الازرار وتنفذ الاوامر

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

وارجوا من الله ان تكونوا استفدتوا
وفقنا ووفقكم الله الى ما يحب ويرضى
رد مع اقتباس
  #2  
قديم 09-16-2012, 03:28 AM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي رد: تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

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

هناك اقتراح جيد
لكى يعمل الذراع لا سلكى سواء بال ir او rf
سوف نحتاج الى توصيل دائرة ارسال واستقبال باكثر من مخرج ومدخل
لاننا نتعامل مع 5 اطراف وهذا سوف يكلف الكثير

ولكن هناك حل ذكى سيوفر

وهو اننا نقوم بتركيب ميكرو صغير رخيص الثمن يقوم هو بلتعامل مع الذراع
ويكون داخل الذراع ونركب معه دائرة عادية بسيطة للارسال سواء ir او rf

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

وهكذا قمنا بصنع ذراع لا سلكى بارخص ثمن

بالتوفيق لنا جميعا ان شاء الله
رد مع اقتباس
  #3  
قديم 09-16-2012, 10:59 PM
سعيد قادر سعيد قادر غير متواجد حالياً
مشرف
اليكترونيات
 
تاريخ التسجيل: Nov 2009
الدولة: العراق /كوردستان
المشاركات: 3,385
معدل تقييم المستوى: 23
سعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud ofسعيد قادر has much to be proud of
افتراضي رد: تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

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

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

اهلا وسهلا باستذنا سعيد قادر واسف على التاخير النت عندى فصل

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

لكن انا احاول ان افصل على اد ما ااقدر لهذا يمكن ان يطول الشرح

وجزاك الله كل خير على التعليقك وتشجيعك لى

وفقك الله لما يحب ويرضى
رد مع اقتباس
  #5  
قديم 09-19-2012, 11:57 AM
nir63 nir63 غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Mar 2011
المشاركات: 108
معدل تقييم المستوى: 9
nir63 is on a distinguished road
افتراضي رد: تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

مشكوررر يا اخيي على الموضوع الحلو

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

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

اهلا وسهلا بك يا اخى

نعم يمكن التحكم ولكن ليس عن بعد
وللتحكم عن بعد تحتاج الى دائرة ارسال واستقبال للبيانات
وانا اتكلمت عن الكلام دة فى المشاركة الثانية
رد مع اقتباس
  #7  
قديم 09-20-2012, 02:38 PM
nir63 nir63 غير متواجد حالياً
عضو نشيط
 
تاريخ التسجيل: Mar 2011
المشاركات: 108
معدل تقييم المستوى: 9
nir63 is on a distinguished road
افتراضي رد: تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

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

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

الصراحة انا نفسى اصنع دائرة RF

لكن لحد دلوقتى مش عارف ههههههههه

لانها بتطلب دقة فى الصنع وفى قيم القطع وبالذات الى بتتعامل مع الديجتال
والى انت محتاجها

علشان كدة انت ممكن تشتريها افضل
واسمها

RF Module

وكما قلت لك سابقا ابحث عن هذ االاسم

بالتوفيق لك ان شاء الله
رد مع اقتباس
  #9  
قديم 09-22-2012, 07:57 PM
الصورة الرمزية eng_a_sayed
eng_a_sayed eng_a_sayed غير متواجد حالياً
استاذ ومشرف اليكترونيات
 
تاريخ التسجيل: Jun 2008
الدولة: India in next Dec
المشاركات: 1,241
معدل تقييم المستوى: 24
eng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud ofeng_a_sayed has much to be proud of
افتراضي رد: تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

ما شاء الله

موضوع جديد جداً جداً

بارك الله فيك استاذى الفاضل
__________________
رد مع اقتباس
  #10  
قديم 09-23-2012, 03:28 AM
funky112233 funky112233 غير متواجد حالياً
استاذ الكترونيات
 
تاريخ التسجيل: Sep 2009
المشاركات: 116
معدل تقييم المستوى: 12
funky112233 has a spectacular aura aboutfunky112233 has a spectacular aura about
افتراضي رد: تعلم كيفية التحكم من خلال ذراع البلايستيشن Playstation controller بالميكروسى

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

شكرا جزيلا لك يا بشمهندس

وجزاك الله كل خير على اضافتك للمواضيع البسيطة من ضمن اهم الدروس
وسط دروس اساتذتنا الكرام
رد مع اقتباس
إضافة رد

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

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

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

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



الساعة الآن 12:49 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