ماهو الأردوينوا Ardoino
الأردوينو Ardoino هو لوحة إلكترونية صغيرة الحجم رخيصة السعر و سهلة الإستخدام, تعمل كمتحكم و رابط بين المكونات الكهربائية المختلفة و يتم التحكم بطريقة عملها و برمجتها.
كتاب pdf يعلمكم ما هو الأردوينو و أساسياته, و كيفية إستخدامه و المكتبات المتقدمة التي تستخدم به بالإضافة إلى التعرف على عدة دارات إلكترونية مهمة جداً.
يحتوي الكتاب على عدة أبواب منها التعرف على الأردوينو و بداياته و مميزاته و عيوبه و الدخول للمحور البرمجة و طرق برمجة قطعة الأردوينو IDE,Create,Tinker.
ماهي أهم مميزات الأردوينو advantages
- إنخفاظ السعر حيث سعرها لا يتجاوز 15$.
- سهولة الإستخدام مقارنة بغيره من الدوائر المبرمجة.
- كثرة الإضافات المتوافقة مع الأردوينو و التي تقوم بأعمال متنوعة و تسمى shields.
- موقع الانترنت الخاص بالاردوينو منظم و مفيد جداً arduino.cc.
- الشهرة الواسعة و الالاف المستخدمين و الدروس و المشاريع حول العالم.
ماهي عيوب الأردوينو Disadvantages
- تعتبر القدرة البرمجية للاردوينو اقل بكثير من الكمبيوتر و لا يتمكن من تشغيل برامج مثل ويندوز او اندرويد...
- التيار الذي يتمكن الاردوينو من إخراجه من المنفذ = 20mA و هذا لا يكفي لتشغيل محرك أو ريلاي, لذا يجب إستخدام عناصر إلكترونية لتكبير الطاقة الكهربائية في بعض التطبيقات.
حساب التيار الذي يسحبه الاردوينو وباقي الدائرة
كما تعلم فليست جميع الشواحن متساوية في الجهد والتيار الكهربائيين (شاهد مثلا شاحن الايفون و شاحن الايباد) الأردوينو أونو يسحب 45mA عادة.
لكن كلما شغلت ملحقات أكثر فإن سحب التيار سيزيد (مثلاً إضاءة ، صوت ، مرحلات...) ويمكن قياس التيار المستهلك من الدائرة باستخدام أجهزة مناسبة.
ملاحظة : التيار الذي يستطيع الأردوينو إخراجه من المنفذ الرقمي الواحد حوالي 20mA والتيار الذي يمكن سحبه من الطرفين VCC و GND يكون حوالي 200mA.
بوردات الأردوينو من تطوير شركات أخرى
بعد النجاح والانتشار الكبير للأردوينو إلى جانب سماح الشركة الأصلية للمطورين بتطوير بوردات جديدة بدون تعقيدات قانونية و حقوق ملكية وغيره.
ظهرت شركات كثيرة تسعى لتطوير الأردوينو بما تراه مناسباً بعضها صنعت بوردات أردوينو أصغر أو مدمجة مع وايفاي أو بلوتوث أو مترابطة مع تطبيق هاتف ذكي أو مربوطة مع موقع انترنت.
لكن جميعها يتم برمجتها بالطريقة البسيطة المعتادة مثل الأردوينو العادي.
برمجة الأردوينو عبر الانترنت Arduino Create
اذا طلبت مني برمجة أردوينو اليوم فإني أفضل برمجتها باستخدام أداة البرمجة المتوفرة أونلاين arduino-Create الواجهة أكثر تنظيماً, الوصول للمكتبات أسهل. وجميع الأكواد مخزنة مع حسابك و يمكنك الوصول لها من أي كمبيوتر متصل بالانترنت.
أيضا يمكنك تغيير الألوان لتكون غامقة و مريحة للعين أكثر فقط اذهب لموقع الأردوينو Arduino.cc وستجد رابط
Arduino >> software >> web editor
سيطلب منك انشاء حساب ، و تثبيت ملف صغير على الكمبيوتر. الواجهة سهلة. إذا كنت تعرف العمل على البرنامج العادي Arduino IDE فستحتاج لدقائق للاعتياد على الواجهة الجديدة.
القسم الأول : ستتنقل بين الأكواد التي كتبتها و الأكواد (الأمثلة) و إضافة المكتبات وفتح شاشة السيريال، و خيارات العرض و المساعدة.
القسم الثاني : سترى فيه تفاصيل القسم الأول : جميع الأكواد, جميع الأمثلة, البحث عن المكتبات وإضافتها وهكذا.
القسم الثالث : هنا ستكتب الكود و بإمكانك إدراج ملف كتابي أو صورة خاصة بمشروعك.
المتغيرات العامة والمتغيرات المحلية Global vs Local variables
في الأكواد السابقة قمنا بتعريف (Declare & assign) المتغيرات أعلى الكود قبل void setup هذه المتغيرات تسمى متغيرات عامة (Global Variables) و يمكن استخدامها في أي مكان من الكود و ستحتفظ بقيمتها. بينما يوجد خيار ثاني وهو تعريف المتغيرات داخل الدوال . وهذا يجعلها قابلة للاستخدام في الدالة فقط. توجد فوائد كبيرة لهذه الطريقة ولكن يجب عليك أن تفهمها بشكل جيد. في بعض الحالات (عادة داخل القسم void loop) نقوم بتعريف متغير محلي local variable ليعمل كعداد مثلا :
void loop() {
int x=0;
Serial.print ( x );
x++; }
قد تتوقع أن الكود سيطبع على الشاشة العد 0,1,2,3......الخ لكن في الواقع سيظهر 0,0,0,0,..... و السبب أنه في كل مرة يتكرر. تنفيذ الحلقة سيعاد إنشاء المتغير وإعطائه القيمة 0 !.
أقصر حل لهذه المشكلة هو جعل المتغير من نوع static int هذا سيجعل قيمة المتغير تتحدد في أول مرة بـ 0 و في باقي الدورات يحافظ المتغير على قيمته ولا يعود للقيمة 0.
في حالة وجود متغير عام بإسم x و متغير محلي بإسم x فإنه داخل الدالة سيتم استخدام المتغير المحلي و خارجها سيستخدم المتغير العام. هذه الطريقة مفيدة كثيرا عند استخدام دوال functions.
تكتيك التحويل بين النطاقات باستخدام الأمرين map, constrain
كثيرا ما نحتاج للتحويل المتناسب بين نطاقين رقميين مختلفين. (لا تقلق إذا لم تفهم العبارة السابقة لأني سأحاول شرحها الآن).
أبسط مثال يحضرني الآن أنك لو حصلت في الجامعة على معدل 4.33 من 5 و أردت أن تفهمه بشكل أفضل و تحوله للنظام. القديم (من مئة) فأنت تأخذ القيمة 4.33 من النطاق الأول 0- 5 و تريد معرفة القيمة الموازية في النطاق الجديد 0-100.
وفي الأردوينو نحتاج فكرة التحويل بين النطاقات بشكل أوسع أحد الأمثلة البسيطة. نود التحكم بـ شدة إضاءة LED كمخرج.
بحيث يكون الدخل : مقاومة متغيرة كمقسم جهد تكون قراءة الدخل : 0-1023 بينما الخرج التماثلي يجب أن لا يتجاوز 0-255 هنا نحتاج للتحويل من النطاق الأول للنطاق الثاني.
تخيل أيضاً أن الضوء لا يبدأ في العمل إلا بعد القيمة 50 و لا أود تحريك المقاومة بدون ملاحظة تغير فمن الممكن تعديل النطاق. الثاني إلى 50-255 . أتمنى أنك فهمت فائدة الأمر map لاحظ أن الأمر map يعمل مع الأعداد الصحيحة فقط ولا يعمل مع الأعداد الكسرية.