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

مشاهدة نتائج الإستفتاء: هل نكمل الموضوع أم ننتقل ونبدأ فى موضوع آخر ؟
نعم موضوع مفيد وأريد مواصلة الموضوع . 34 89.47%
لا بل أريد أن نبدأ فى مشروع وفكرة أخرى . 4 10.53%
المصوتون: 38. أنت لم تصوت في هذا الإستفتاء

   

الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 25-03-2012, 07:50 AM المشاركة 17   
افتراضي



شرح طريقة الإستخدام

بعد تشغيل البرنامج يظهر رقم صفر
قم بالضغط على مفتاح start لتبدأ
وهنا سيكون المتحكم اختار رقما عشوائيا مابين واحد وتسعة
بعدها يظهر حرف C وهنا ينتظر منك المتحكم تخمين الرقم ؟؟
اضغط رقما بداية من واحد وحتى تسعة
وفى كل مرة يكون اختيارك أكبر من القيمة التى اختارها المتحكم سيظهر الحرف A
وإذا كان رقمك أقل من الرقم الذى اختاره المتحكم سيظهر الحرف d
وإذا كان الرقم متطابقا فسيظهر الرقم لمدة خمس ثوانى وعدها يعاد البرنامج تلقائيا من البداية
-----------

الهدف من البرنامج

التعرف على احدى الطرق لتوليد رقم عشوائى بناءا على الزمن الذى ينتج عن انتظار المستخدم قبل الضغط على أى مفتاح .

كود البرنامج:

كود:
 
// Keypad module connections
char keypadPort at PORTB;
// End Keypad module connections
char Tm=49,Kk=0;
unsigned short kp ,oldstate = 0;
void main() 
{ trisa= 0x10;porta=0;
Keypad_Init();
do{
porta=0;
if( kk==1){ goto wleed2;}
while(porta.f4==1){
tm++; if( Tm>57){ Tm=49;}
}
wleed2:
porta=12; kk=1;
kp=0;
do{
kp = Keypad_Key_Click();
}while(!kp);
switch (kp) {
case 1: kp = 49; break; // 1
case 2: kp = 50; break; // 2
case 3: kp = 51; break; // 3
case 5: kp = 52; break; // 4
case 6: kp = 53; break; // 5
case 7: kp = 54; break; // 6
case 9: kp = 55; break; // 7
case 10: kp = 56; break; // 8
case 11: kp = 57; break; // 9
case 14: kp = 48; break; // 0
}
if (kp != oldstate) {
oldstate = kp;
}
if( kp>tm){porta=10;goto wleed;}
if( kp<tm){porta=13;goto wleed;}
porta = kp;kk=0;delay_ms(4000);
wleed:
delay_ms(1000);
}while(1);
كود:
 
}


الشرح يتبع

اعلانات

الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 25-03-2012, 11:48 AM المشاركة 18   
افتراضي


والآن مع شرح التعليمات
=============

نبدأ بتجهيز لوحة المفاتيح keypad
نحدد المنفذ الخاص بها ليقوم المتحكم بتجهيز أطرافه تلقائيا حيث أنه سيقوم بعمل أطراف خرج متبادلة لنبضات وأخرى كمستقبلة لهذه النبضات فى حالة الضغط على أى مفتاح ولذلك نقوم بتوصيل لوحة المفاتيح ذات ال 12 مفتاح على ترتيب الرسم السابق تماما على المنفذ ذى الثمانية أطراف ونكتب التعليمة التالية :-
كود:
char keypadPort at PORTB;
----------
نأتى بعد ذلك لحجز المتغيرات

كود:
 
char Tm=49,Kk=0;
unsigned short kp ,oldstate = 0;
والمتغير Tm هو الخاص بعملية الرقم العشوائى من أول 1 وحتى 9 وتتم عن طريق زيادة المتغير بمقدار واحد صحيح بداية من 49 وحتى 57 وبعدها يعود من جديد 49 وهكذا ،

والرقم 49 هو المقابل للرقم 1 فى جدول رموز آسكى والرقم 57 هو المقابل للرقم 9 وقد أعطيت المتغير قيمة 49 ليعنى ذلك رقم 1
وأما المتغير oldstate فهو الخاص بمراقبة الضغط على المفاتيح
وأما المتغير kp فهو الذى يخزن فيه رقم المفتاح المضغوط .

---------

بداية التحاور بين المستخدم والمتحكم " المايكروكنترولر"

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





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

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 25-03-2012, 12:40 PM المشاركة 19   
افتراضي


فكرة جيدة و لدى حاسبة قابلة للبرمجة بها لعبة مماثلة تخمد رقم حتى 1024 و تحسب لك الوصول فى كم محاولة كما أنها تقوم بالعكس أى تجعلك تخمن ثم تحدد هى الإجابة و تكتب لك أيضا فى كم محاولة
أظن أن توليد رقم عشوائى فى هذه الحاسبات يعتمد هيكيلة حساب و لم أجدها فى لغات البرمجة للميكرو لا أدرى لماذا


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 25-03-2012, 01:52 PM المشاركة 20   
افتراضي


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

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

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

قم بتشغيل أى آلة حاسبة من ماركة كاسيو سواء كانت متقدمة أو بسيطة وقم بإحضار ساعة إيقاف stop wotch وقم بتشغيل هذه الساعة مع آخر ضغطة لك على أحد مفاتيح الحاسبة وانتظر دون أن تقترب من أى مفاتيح أخرى وستجد أن الحاسبة تقوم بغلق نفسها shut down تلقائيا بعد مرور 6 دقائق تماما وذلك للحفاظ على البطارية ، ونفس الشئ مع أجهزة عزف الموسيقى الإلكترونية ماركة كاسيو ، فقد أصبح توليد رقم عشوائى أمرا سهلا ودقيقا بالإستعانة بالتايمر الداخلى لهذه الأجهزة ، وبما أننا لا نريد أن نستخدم تايمر فى مشاريعنا فيمكننا الإستعاضة عن ذلك بالتعامل مع الزمن الغير معلوم بين رد فعل المستخدم والمتحكم ! !

و بالتوفيق أخى


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 25-03-2012, 03:37 PM المشاركة 21   
افتراضي


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

سيكون لك رمز متحرك تقوم بتحريكه على الشاشة ويكون للمتحكم رمز آخر يقوم هو الآخر بتحريكه على الشاشة بحيث تحاول أن تحرك الرمز الخاص بك بعيدا عن الرمز الخاص بالمتحكم وسيقوم المتحكم بمطاردتك أينما ذهبت وعليك ألا تجعله يلمسك ! !

فانتظرونا


الصورة الرمزية mohatvnet
mohatvnet
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
الدولة: https://t.me/pump_upp
المشاركات: 958
نشاط [ mohatvnet ]
قوة السمعة:
قديم 25-03-2012, 05:06 PM المشاركة 22   
افتراضي


شكرا جزيلا استاد الكريم wleed antar افكارك متميزة جزك الله خيرا استاد wleed antar
والاحسان واتمنا ان تضع لنا الكتير من دروسك


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 11,652
نشاط [ ماجد عباس محمد ]
قوة السمعة:
قديم 25-03-2012, 06:18 PM المشاركة 23   
افتراضي


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


الصورة الرمزية أبو معاذ 2010
أبو معاذ 2010
:: مشرف قسم الإنتاج الزراعي والحيواني والطاقة البديلة ::
تاريخ التسجيل: Feb 2010
المشاركات: 2,039
نشاط [ أبو معاذ 2010 ]
قوة السمعة:
قديم 30-03-2012, 01:46 PM المشاركة 24   
افتراضي


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



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