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

   

ENG. B.A
:: مهندس ::
تاريخ التسجيل: Mar 2011
الدولة: egypt
المشاركات: 8
نشاط [ ENG. B.A ]
قوة السمعة:
قديم 22-01-2013, 04:23 PM المشاركة 17   
win



الحمدلله.... اشتغلت ولكن
MCLR has two chooses ( external or internal
مع external لا تعمل الدائره ولكن internal اشتغلت ما معني هذا
وشكرا

اعلانات

ENG. B.A
:: مهندس ::
تاريخ التسجيل: Mar 2011
الدولة: egypt
المشاركات: 8
نشاط [ ENG. B.A ]
قوة السمعة:
قديم 22-01-2013, 04:29 PM المشاركة 18   
Question كيفية عمل هذه الفكره


بشمهندس في السعوديه في صبانه تضع يدك تحتها تنزل الصابون
انا بفكر في فكرته بقول sensor + valve
is the sensor IR sensor
and what is this valve ,how it operates and how it connect to the pic

أتمني ان نفعل شيئا وارجو المساعده
وشكرا لحضرتك

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

ENG. B.A
:: مهندس ::
تاريخ التسجيل: Mar 2011
الدولة: egypt
المشاركات: 8
نشاط [ ENG. B.A ]
قوة السمعة:
قديم 23-01-2013, 01:24 PM المشاركة 19   
x2 السؤال بخصوص التدريب الثاني وهو الاضواء المتحركه


السلام عليكم السؤال بخصوص التدريب الثاني وهو الاضواء المتحركه
السؤال الاول : حضرتك في اول 3 دالات وضعتvoid بين القوسين بعد اسم الداله وفي اخر داله لم تضعها فما الفكره
السؤال الثاني : اريد توصيل اكثر من led في نفس pin
جربت توصيل التوالي علي البروتس لم يعمل
اما التوازي اشتغل ولكن الاضاءه ضعيفه جدا وذلك بسبب توزيع التيار طبعا
ولكن ما الحل
هذه صوره من النت
http://upload.qariya.info/images/qar...8e6a0b1254.jpg
وشكرا


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 23-01-2013, 03:03 PM المشاركة 20   
افتراضي


السلام عليكم السؤال بخصوص التدريب الثاني وهو الاضواء المتحركه
السؤال الاول : حضرتك في اول 3 دالات وضعتvoid بين القوسين بعد اسم الداله وفي اخر داله لم تضعها فما الفكره
السؤال الثاني : اريد توصيل اكثر من led في نفس pin
جربت توصيل التوالي علي البروتس لم يعمل
اما التوازي اشتغل ولكن الاضاءه ضعيفه جدا وذلك بسبب توزيع التيار طبعا
ولكن ما الحل
هذه صوره من النت
http://upload.qariya.info/images/qar...8e6a0b1254.jpg
وشكرا
أخى الكريم شكرا جزيلا لك :

1- لا يوجد فرق سواء كتبت void أو تركت الأقواس فارغة . هذه الاقواس مخصصة لكتابة البارامترات التى تعتمد عليها الدالة عند التنفيذ والحالتان يعنيان عدم وجود بارامترات وسوف يفهم المترجم ذلك .

2- جهد خرج طرف الميكروكونترولر يكون حوالى خمسة فولت وأقصى تيار يمكن أن يتعامل معه حوالى 25 ملى أمبير , لذلك من الصعب تغذية أكثر من ليد سواء على التوالى ( بسبب الجهد) أو على التوازى (بسبب التيار) .

الحل هو استخدام ترانزستور مناسب كوسيط بين طرف الميكروكونترولر والليدات (أو أى حمل آخر) حيث يمكنك اختيار الترانزستور المناسب لتطبيقك من حيث الجهد والتيار .

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


الصورة الرمزية ميكرومان
ميكرومان
:: عضو فضي ::
تاريخ التسجيل: Oct 2012
المشاركات: 372
نشاط [ ميكرومان ]
قوة السمعة:
قديم 23-01-2013, 03:05 PM المشاركة 21   
افتراضي


الرائع لا يصدر منه سوي الروائع جزاكم الله خيرا علي مجهوداتكم الجبارة التي اصبحنا بسببها مبرمجين

الي الامام ايها الابطال



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 23-01-2013, 09:24 PM المشاركة 22   
افتراضي


الرائع لا يصدر منه سوي الروائع جزاكم الله خيرا علي مجهوداتكم الجبارة التي اصبحنا بسببها مبرمجين

الي الامام ايها الابطال
أخى الكريم الفاضل شكرا جزيلا لك
بارك الله فيك

تقدير أعتز به

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


ENG. B.A
:: مهندس ::
تاريخ التسجيل: Mar 2011
الدولة: egypt
المشاركات: 8
نشاط [ ENG. B.A ]
قوة السمعة:
قديم 24-01-2013, 01:23 PM المشاركة 23   
Exclamation


البرنامج :
بعد كتابة التعليقات لتوثيق التدريب نتبع الخطوات التالية :
1- نبدأ بإنشاء دالة الإعدادات اللازمة للتدريب :

كود:
void init_port(void) { ANSEL = 0x00; //set port as digital I/O , not analog input ADCON0 = 0x00; //shut off the A/D converter(default) CMCON = 0x07; //shut off the comparator VRCON = 0x00; //shut off the voltage reference(default) TRISIO = 0x08; // 0b001000 = GP3 bit only as input GPIO = 0x00; //make all pins low "0" }

2- ثم إعلان متغير من نوع البت لحفظ حالة المفتاح السابقة لمقارنتها بحالته الراهنة :

كود:
bit oldstate; // Old state flag

3- وتبدا الدالة الرئيسية باستدعاء دالة الإعدادات وتصفير بت متغير الحالة السابقة للمفتاح لتكون بصفر وندخل إلى حلقة التكرار :

كود:
void main() { init_port(); oldstate = 0; do {


4- نبدا الحلقة باختبار حالة المفتاح ( التحول إلى الحالة المرتفعة) عن طريق وضع "عائد" دالة المفتاح كشرط لعبارة if . إذا تحقق الشرط (عند الضغط على المفتاح يكون عائد دالة المفتاح بواحد ويكون عائدها بواحد أو true ) يتم تنفيذ عبارة الشرط وهى تحديث بت متغير الحالة السابقة للمفتاح ليكون بواحد كإشارة أو علامة على حالة المفتاح المضغوط (التحول من الحالة المنخفضة إلى الحالة المرتفعة تبعا لصيغة دالة المفتاح ) . لاحظ أن دالة المفتاح تحتوى على زمن تاخير 20 ملى ثانية لعلاج ارتدادات المفتاح .



كود:
if (Button(&GPIO, 3, 20, 1)) { // Detect logical one ie pressed button oldstate = 1; // Update flag

5- مرة أخرى يتم عمل اختبار المفتاح ( التحول للحالة المنخفض) وتشكيل عبارة شرط if . الشرط هذه المرة هو نتيجة عملية AND ( ورمزها && ) بين حالة المفتاح السابقة والمخزنة ببت الحالة السابقة للمفتاح وبين نتيجة دالة المفتاح (عند التحول للوضع المنخفض) . فإذا كانت الحالة السابقة للمفتاح هى الحالة المضغوطة ( المرتفعة) وتلتها حالة راهنة غير مضغوطة ( منخفضة) كانت نتيجة الشرط صواب true ويتم تنفيذ عبارة الشرط , حيث يتم تحويل حالة أطراف المنفذ وتصفير بت متغير الحالة السابقة للمفتاح . بعبارة أخرى عند الضغط على المفتاح يتم تذكر هذه الحالة , ثم بعد تحرير المفتاح يتم تغيير حالة أطراف المنفذ من حالة الفصل off إلى حالة التوصيل on , وفى الضغطة التالية ثم التحرير يتم التحويل من حالة التوصيل on إلى حالة الفصل off وهلم جرا .


كود:
if (oldstate && Button(&GPIO, 3,20, 0)) { // Detect one-to-zero transition ie press then release GPIO = ~GPIO; // Invert GPIO oldstate = 0; // Update flag } // beginning of a repeat loop
البرنامج :
السلام عليكم
البرنامج اشتغل تمام علي بروتس لكن بصراحه مش فاهمه امر button ما معني ما بين الاقواس بعد هذا الامر.

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

int flag=0;
sbit sw at gpio.b3;

void init_port(void)
{
ANSEL = 0x00; //set port as digital I/O , not analog input
ADCON0 = 0x00; //shut off the A/D converter(default)
CMCON = 0x07; //shut off the comparator
VRCON = 0x00; //shut off the voltage reference(default)
TRISIO = 0x08; //GP3 input , rest all output
GPIO = 0x00; //make all pins low "0"
}

void main() {
while(1){
if (sw=1&&flag==0)
{flag=1;
gpio=~gpio;}

if(sw=0){flag=0;}}

}

لماذا حضرتك لم توصل المفتاح بمقاومه واصله مع الارضي قبل رجل البيك بيقولوا حتي لا تكون floating بس مش فاكره معني floating
شكرا لحضرتك


ENG. B.A
:: مهندس ::
تاريخ التسجيل: Mar 2011
الدولة: egypt
المشاركات: 8
نشاط [ ENG. B.A ]
قوة السمعة:
قديم 24-01-2013, 08:37 PM المشاركة 24   
افتراضي


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

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

int flag=0;
sbit sw at gpio.b3;

void init_port(void)
{
ANSEL = 0x00; //set port as digital I/O , not analog input
ADCON0 = 0x00; //shut off the A/D converter(default)
CMCON = 0x07; //shut off the comparator
VRCON = 0x00; //shut off the voltage reference(default)
TRISIO = 0x08; //GP3 input , rest all output
GPIO = 0x00; //make all pins low "0"
}

void main() {
while(1){
if (sw=1&&flag==0)
{flag=1;
gpio=~gpio;}

if(sw=0){flag=0;}}

}

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



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