مضى على الشبكة و يوم من العطاء.

[ مشروع ] المشروع الثالث من كتاب The Arduino workshop

أبو المعاليأبو المعالي is verified member.

.:: اداري سابق ::.
.:: اداري سابق ::.

السمعة:

بسم الله الرحمن الرحيم و الصلاة و السلام على أشرف الخلق المرسلين سيدنا محمد صلى الله عليه و سلم و على أله و صحبه أجمعين

أما بعد فموضوعنا لليوم عن المشروع الثالث من كتاب The Arduino workshop

بعد أن تحدثنا في المشروعين الأولين عن كيف نقوم بتوصيل عدد من leds من خلال digitalWrite لكل ليد ثم افترضنا وجود led و أن هذه الطريقة ليست عملية لذلك استخدمنا الدالة for و تطرقنا بشكل بسيط عن ال PWM و موجات ال analog

مقتبس من الموضوع السابق

يوجد لدينا نوعين من الموجات في ال Arduino
[]موجات ال Digital[/]هذه نوع من الموجات التي إما أن تكون HIGH أو LOW و حالة ال HIGH = 5v أما ال LOW = 0v
فإما on أو off .. فإما أن يعمل ال led في أعلى طاقته أو لا يعمل
1747949164939.webp
[]موجات ال Analog[/]هذا النوع من الموجات يكون في حالة متوسطة فهو ليس منطفئ تمام و ليس سعمل بكل قوته
فيكون في حالة متوسطة
فيمكنني تشغيل الليد في نصف طاقته أو ربعها أو أي قيمة بين القوة الكاملة و و الصفر فولت
و هناك المزيد من المعلومات المهمة التي سنغطيها لاحقا
1747949307339.webp

1747949370831.webp

مثال لتوصيل مقاومة متغيرة ك 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 منافذ
1748692535998.webp



و الأن لنقم بتوصيل 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 و اكتبها في الردود لست مهتم إن كانت صعبة التطبيق .. المهم أن تتعلم التفكير

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

آخر المشاركات

عودة
أعلى