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

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

الصورة الرمزية sheimy
sheimy
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: Egypt
المشاركات: 789
نشاط [ sheimy ]
قوة السمعة:99
قديم 05-03-2012, 03:45 AM المشاركة 1   
افتراضي توصيل اكتر من سويتش عل رجل واحدة Twitter FaceBook Google+



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


التعديل الأخير تم بواسطة : sheimy بتاريخ 05-03-2012 الساعة 03:49 AM
اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 05-03-2012, 04:13 AM المشاركة 2   
افتراضي


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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 05-03-2012, 08:33 AM المشاركة 3   
افتراضي


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

شكرا جزيلا لك


الفكرة كما ذكر الأخ الفاضل مهندس ماجد

فى الميكروكونترولر يمكن استخدام مدخل تناظرى واحد فقط ويتم توصيل عدد من المفاتيح إليه وكل مفتاح يقوم بإدخال مستوى أو جهد محدد وذلك عن طريق مقسمات جهد . يقوم المحول ADC بتحويل هذه المستويات إلى قيمة رقمية محددة نستخدمها فى جملة شرط للتحكم فى خرج معين كما هو موضح بالشكل والبرنامج التالى :




كود:
 
#define LED1 RB0_BIT #define LED2 RB1_BIT #define LED3 RB2_BIT #define LED4 RB3_BIT
unsigned ADC_Value; void main( ) { TRISB=0; PORTB=0; while(1) { ADC_Value = ADC_Read(0); if(ADC_Value > 700) { // SW4 is pressed LED4 = ~LED4; Delay_ms(250); } if(ADC_Value > 500 && ADC_Value < 700) { // SW3 is pressed LED3 = ~LED3; Delay_ms(250); } if(ADC_Value > 300 && ADC_Value < 500) { // SW2 is pressed LED2 = ~LED2; Delay_ms(250); } if(ADC_Value > 100 && ADC_Value < 300) { // SW1 is pressed LED1 = ~LED1; Delay_ms(250); } } }


zoro238
:: مهندس جيد ::
تاريخ التسجيل: Apr 2006
المشاركات: 290
نشاط [ zoro238 ]
قوة السمعة:0
قديم 05-03-2012, 11:34 AM المشاركة 4   
افتراضي


مشكور على الفكرة الرائعه جدا

لكن كيف عرفت القيم 700 و 500 الخ

واذا ضغط على زرين معا او 3 معا او 4 معا

فكيف اعرف ذلك ؟؟ ومع مثال وكود لو امكن فالفكرة اكثر من رائعه
وهل ممكن عما اكثر من 4 مفاتيح


الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 05-03-2012, 12:48 PM المشاركة 5   
افتراضي


أخى الكريم

شكرا جزيلا لك


الفكرة كما ذكر الأخ الفاضل مهندس ماجد

فى الميكروكونترولر يمكن استخدام مدخل تناظرى واحد فقط ويتم توصيل عدد من المفاتيح إليه وكل مفتاح يقوم بإدخال مستوى أو جهد محدد وذلك عن طريق مقسمات جهد . يقوم المحول ADC بتحويل هذه المستويات إلى قيمة رقمية محددة نستخدمها فى جملة شرط للتحكم فى خرج معين كما هو موضح بالشكل والبرنامج التالى :




كود:
 
#define LED1 RB0_BIT #define LED2 RB1_BIT #define LED3 RB2_BIT #define LED4 RB3_BIT
unsigned ADC_Value; void main( ) { TRISB=0; PORTB=0; while(1) { ADC_Value = ADC_Read(0); if(ADC_Value > 700) { // SW4 is pressed LED4 = ~LED4; Delay_ms(250); } if(ADC_Value > 500 && ADC_Value < 700) { // SW3 is pressed LED3 = ~LED3; Delay_ms(250); } if(ADC_Value > 300 && ADC_Value < 500) { // SW2 is pressed LED2 = ~LED2; Delay_ms(250); } if(ADC_Value > 100 && ADC_Value < 300) { // SW1 is pressed LED1 = ~LED1; Delay_ms(250); } } }


بارك الله لك مهندس فتح الله كود جميل وسهل
الافكار الجيده دائما تاتى من العظماء
باركك الله وجعله فى ميزان حسناتك



الصورة الرمزية احمدمعاطى
احمدمعاطى
:: مهندس جيد ::
تاريخ التسجيل: Apr 2009
الدولة: مدينة الاسكندريه
المشاركات: 271
نشاط [ احمدمعاطى ]
قوة السمعة:0
قديم 05-03-2012, 01:01 PM المشاركة 6   
افتراضي


مشكور على الفكرة الرائعه جدا

لكن كيف عرفت القيم 700 و 500 الخ

واذا ضغط على زرين معا او 3 معا او 4 معا

فكيف اعرف ذلك ؟؟ ومع مثال وكود لو امكن فالفكرة اكثر من رائعه
وهل ممكن عما اكثر من 4 مفاتيح
بعد اذن المهندس فتح الله
اخى لدينا المهاومه R1 ثابته 470 اوم
ويتم تقسيم الفولت بينها وبين R2 او R3 او R4 او R5 ....
واذا ضغط مفتاحين معا كاننى ووصلت مقاومتهما على التوازى
فينتج فولت اخر يجب حسابه وكتابت الكود الناظر لقيمته
ارجو ان اكون اوضحط الفكره


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 05-03-2012, 02:15 PM المشاركة 7   
افتراضي




بارك الله لك مهندس فتح الله كود جميل وسهل
الافكار الجيده دائما تاتى من العظماء
باركك الله وجعله فى ميزان حسناتك

أخى الكريم


شكرا جزيلا لك


تقدير أعتز به

بارك الله فيك

مع تمنياتى بدوام التوفيق


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 05-03-2012, 02:23 PM المشاركة 8   
افتراضي


مشكور على الفكرة الرائعه جدا

لكن كيف عرفت القيم 700 و 500 الخ

واذا ضغط على زرين معا او 3 معا او 4 معا

فكيف اعرف ذلك ؟؟ ومع مثال وكود لو امكن فالفكرة اكثر من رائعه
وهل ممكن عما اكثر من 4 مفاتيح
اخى الكريم

شكرا جزيلا لك


أساس الحسابات :
هى نفسها أساس التعامل مع المحول ADC .





جهد دخل تناظرى بقيمة 5 فولت يتم تحويله باستخدام المحول ADC إلى رقم يعادل 1024 قسم (من الصفر إلى 1023 ( . من هذان الرقمين نحسب معامل هام جدا وهويعبر عن دقة أو حساسية عملية التحويل ونحصل علية بقسمة 5 فولت على 1024 قسم فنحصل على 0.00488V/DIV وللحصول على عدد الأقسام المناظرة لجهد دخل تناظرى معين كل ما علينا هو قسمة الجهد بالفولت على هذا المعامل (الدقة) مقدرة بالفولت لكل قسم كما سنرى .
  • نستخدم مقاومة مشتركة واحدة وهى هنا 470 أوم ولتكن R.
  • عند استخدام المقاومة 120 أوم ولتكن R1 (على سبيل المثال) يكون جهد الدخل التناظرى :
V1=V* R/(R+R1) = 5 *470/(470+120) = 2350/590 =3.98V


  • يتم حساب عدد الأقسام بعملية القسمة :
3.98 V/0.00488 =816 DIV

  • النتيجة 816 قسم ويمكنك التعامل معها كما هى أو أقل منها أو أكبر منها حسب البرنامج المطلوب وخصوصا أن المقاومات بها نسبة خطأ قد تصل إلى 20 % .
مع تمنياتى بدوام التوفيق

إضافة رد

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

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

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


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

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