







السمعة:
- إنضم26 يونيو 2023
- المشاركات 1,707
- الحلول 31
- مستوى التفاعل 2,940
- النقاط 113
بسم الله الرحمن الرحيم و الصلاة و السلام على أشرف الخلق المرسلين سيدنا محمد صلى الله عليه و سلم و على أله و صحبه أجمعين
أما بعد فموضوعنا لليوم عن المشروع الثالث من كتاب The Arduino workshop
بعد أن تحدثنا في المشروعين الأولين عن كيف نقوم بتوصيل عدد من leds من خلال
مقتبس من الموضوع السابق
قلنا بأن ما يميز موجات ال analog هو أنها تمكننا من أن نجعل ال led يعمل بإضائة و سطوع متغير و أننا عمليا نخرج PWM التي هي عبارة عن digital و لكن نغير بزمن تشغيل الموجة و توقفها لتحاكي موجات ال analog
للمزيد عن المعلومات عن ال PWM يمكنك قراءة هذا المقال【 اضغط هنا 】
و الأن Lets go لمقالنا
Lets go
لعمل موجات PWM بالأردوينو نستخدم
و هنا يتبادر في ذهني و ذهنك و ذهن جارنا المار بالطريق لماذا 255 ؟
و أنا أريد أن أعطيك سؤال أخر و دعه يتبادر في ذهنك و هو في ال
الأن أتمنى أنك تعرف النظام الثنائي الذي يمثل 0 و 1
ففي الأردوينو المعالج أو المتحكم المستخدم من نوع ATmega328 و إن بحثت عن مواصفاته في ال datasheet و هذا رابطها للمهتم
المهم ستجد أنها 8bit ماذا يعني ذلك ؟
ال bit الواحد يعد أصغر قيمة تخزينية للحاسوب إما صفر أو واحد, حسنا أنا لدي مثل 2 بت كم احتمال يمكن ان يكون لدي
00 أو 01 أو 10 أو 11
أي أربعة احتمالات
حسنا و في حالة ال 3bit يكون لدي 8 احتمالات و هي
000
100
110
111
101
010
011
001
الان هل يجب ان أقوم بهذه الحركة كل مرة و حصر الإحتمالات ؟
بالطبع لا, حاول إيجاد العلاقة في حالة ال 2 كان لدينا 4 و في حالة ال 3 كان لدينا 8
حاول أن تفكر في الأمر قليلا حتى إن لم تعلم الحل و لكن درب عقلك على التفكير خذ 5 دقائق إن لم تكن تعلم الحل, و من باب التسهيل الأمر له علاقة بالأس
الجواب هو 2^x حيث x هي عدد ال bits
أي في حالة المتحكم الذي يستخدم في الأردوينو الذي يكون 8bit فإن لدينا 2 قوة 8 أي 256 بداية من الإحتمال 0 فالأعداد من صفر إلى 255 (مع حساب الصفر) هو عدد الإحتمالات الذي يمثل 256 احتمال
اليوم لن نتحدث كثيرا عن ال
المهم لنعد لموضوعنا في استخدام ال
بداية ليكون لديك معرفة أنه ليست كل منافذ الأردوينو مهيئة بشكل افتراض من المصنع أن تخرج PWM و لكن لدينا عدد معين من المنافذ التي يمكنك أن تعلمها من خلال هذه الصورة و هي التي عليها علامة ~ و عددها بنسخة ال uno 6 منافذ
و الأن لنقم بتوصيل led لنختبر ال PWM
و هذه ستكون النتيجة
و الأن فكر في الأمر و فكر في تطبيقات أخرى لل analogWrite و اكتبها في الردود لست مهتم إن كانت صعبة التطبيق .. المهم أن تتعلم التفكير
و أتمنى ان يكن في هذه الشروحات الإفادة ننتظر مشاركاتكم و شروحاتكم
إن أصبت فهو من الله و إن اخطأت فهو من نفسي و الشيطات
و السلام عليكم و رحمة الله و بركاته
أما بعد فموضوعنا لليوم عن المشروع الثالث من كتاب The Arduino workshop
بعد أن تحدثنا في المشروعين الأولين عن كيف نقوم بتوصيل عدد من leds من خلال
digitalWrite
لكل ليد ثم افترضنا وجود led و أن هذه الطريقة ليست عملية لذلك استخدمنا الدالة for
و تطرقنا بشكل بسيط عن ال PWM و موجات ال analogمقتبس من الموضوع السابق
يوجد لدينا نوعين من الموجات في ال Arduino
[]موجات ال Digital[/] هذه نوع من الموجات التي إما أن تكون HIGH أو LOW و حالة ال HIGH = 5v أما ال LOW = 0v
فإما on أو off .. فإما أن يعمل ال led في أعلى طاقته أو لا يعمل![]()
[]موجات ال Analog[/] هذا النوع من الموجات يكون في حالة متوسطة فهو ليس منطفئ تمام و ليس سعمل بكل قوته
فيكون في حالة متوسطة
فيمكنني تشغيل الليد في نصف طاقته أو ربعها أو أي قيمة بين القوة الكاملة و و الصفر فولت
و هناك المزيد من المعلومات المهمة التي سنغطيها لاحقا![]()
![]()
مثال لتوصيل مقاومة متغيرة ك INPUT مع منافذ ال Analog و بدلا من إستخدامdigitalWrite
وdigitalRead
نسنتخدم هناanalogWrite
وanalogRead
فحرفيا الأمر so easyبتوفيق الله
و لكن لا تنسى أن هذا فقط شرح فكرة و ليس شرح لها و سنقوم بشرح ال Analog و ال PWM بتفصيل أكبر في مشروع لاحق إن شاء الله
قلنا بأن ما يميز موجات ال analog هو أنها تمكننا من أن نجعل ال led يعمل بإضائة و سطوع متغير و أننا عمليا نخرج PWM التي هي عبارة عن digital و لكن نغير بزمن تشغيل الموجة و توقفها لتحاكي موجات ال analog
للمزيد عن المعلومات عن ال PWM يمكنك قراءة هذا المقال【 اضغط هنا 】
و الأن Lets go لمقالنا
Lets go
لعمل موجات PWM بالأردوينو نستخدم
analogWrite(x, y)
حيث x نوع المنفذ و y بين ال (0-255) لتحدد مقدار ال PWMو هنا يتبادر في ذهني و ذهنك و ذهن جارنا المار بالطريق لماذا 255 ؟

و أنا أريد أن أعطيك سؤال أخر و دعه يتبادر في ذهنك و هو في ال
analogWrite
تكون القيمة بين ال 0 و 1023 ؟الأن أتمنى أنك تعرف النظام الثنائي الذي يمثل 0 و 1
ففي الأردوينو المعالج أو المتحكم المستخدم من نوع ATmega328 و إن بحثت عن مواصفاته في ال datasheet و هذا رابطها للمهتم
المهم ستجد أنها 8bit ماذا يعني ذلك ؟
ال bit الواحد يعد أصغر قيمة تخزينية للحاسوب إما صفر أو واحد, حسنا أنا لدي مثل 2 بت كم احتمال يمكن ان يكون لدي
00 أو 01 أو 10 أو 11
أي أربعة احتمالات
حسنا و في حالة ال 3bit يكون لدي 8 احتمالات و هي
000
100
110
111
101
010
011
001
الان هل يجب ان أقوم بهذه الحركة كل مرة و حصر الإحتمالات ؟
بالطبع لا, حاول إيجاد العلاقة في حالة ال 2 كان لدينا 4 و في حالة ال 3 كان لدينا 8
حاول أن تفكر في الأمر قليلا حتى إن لم تعلم الحل و لكن درب عقلك على التفكير خذ 5 دقائق إن لم تكن تعلم الحل, و من باب التسهيل الأمر له علاقة بالأس
الجواب هو 2^x حيث x هي عدد ال bits
أي في حالة المتحكم الذي يستخدم في الأردوينو الذي يكون 8bit فإن لدينا 2 قوة 8 أي 256 بداية من الإحتمال 0 فالأعداد من صفر إلى 255 (مع حساب الصفر) هو عدد الإحتمالات الذي يمثل 256 احتمال
اليوم لن نتحدث كثيرا عن ال
analogRead
و لكن لماذا 1024 احتمال, بكل بساطة إن عدنا لل datasheet فسنجد أن ال ADC في الأردوينو و هو الجزء الذي يحول من إشارات رقمية لتناظرية 10bit و قم بعمل 2 قوة 10 فالناتج هو 1024المهم لنعد لموضوعنا في استخدام ال
analogWrite
عمليابداية ليكون لديك معرفة أنه ليست كل منافذ الأردوينو مهيئة بشكل افتراض من المصنع أن تخرج PWM و لكن لدينا عدد معين من المنافذ التي يمكنك أن تعلمها من خلال هذه الصورة و هي التي عليها علامة ~ و عددها بنسخة ال uno 6 منافذ
و الأن لنقم بتوصيل led لنختبر ال PWM
C++:
int d = 5; // تعيين الرمز d و وضع رقم 5 داخله
void setup()
{
pinMode(3, OUTPUT); // تعيين المنفذ 3 كمخرج
}
void loop()
{
for ( int a = 0 ; a < 256 ; a++ ) // قمنا بوضع for التي ستقوم بهنا بزيادة القيمة من 0 إلى أقل عدد صحيح أقل من 265 (255) قيمة واحدة في كل مرة
{
analogWrite(3, a);
delay(d); // انتظر ل d أي 5ms
}
for ( int a = 255 ; a >= 0 ; a-- ) // هنا نفس ال for بالأعلى و لكن عكس العملية حيث نقوم بتقليل الإضاءة درجة واحدة
{
analogWrite(3, a);
delay(d); // انتظر 5ms
}
delay(200); // انتظر 200ms
}
و هذه ستكون النتيجة
و الأن فكر في الأمر و فكر في تطبيقات أخرى لل analogWrite و اكتبها في الردود لست مهتم إن كانت صعبة التطبيق .. المهم أن تتعلم التفكير
و أتمنى ان يكن في هذه الشروحات الإفادة ننتظر مشاركاتكم و شروحاتكم
إن أصبت فهو من الله و إن اخطأت فهو من نفسي و الشيطات
و السلام عليكم و رحمة الله و بركاته
التعديل الأخير: