مرحباً بكم

الثلاثاء، 24 نوفمبر 2015

ما هو مفهوم (اردوينو في القلب | Arduino at Heart)



اردوينو في القلب [Arduino At Heart] هو برنامج صمم للصناع الهواة والشركات التي تحب ان تميز منتجاتها عن طريق جعلها مرتكزه على تقنيه الاردوينو،وفيما يلي تتلخص فوائد هذا البرنامج ومتطلباتة.

الفوائد:


* الاستفادة من قوة مجتمع اردوينو الضخمة.
* تتيح للمستخدم النهائي للمنتج امكانية تخصيص المنتج فقط بواسطة كيبل USB و بيئة تطوير الاردوينو IDE.
* اضافة شعار اردوينو في القلب (Arduino at Heart) لأظهار وبوضوح انت منتجك يستند الى تكنولوجيا الاردوينو.
* صفحة على موقع الاردوينو الرسمي لوصف المنتج خاصتك وكل متعلقاتة من روابط و مستندات واية مواد تسويقية اخرى.
* المشاركة في انشطة التسويق ابخاصة باردوينو.
* أخبار المنتج الخاص بك والتحديثات الخاص به تغرد وتدون من خلال الحسابات الرسمية لاردوينو.
* نزولاً عند رغبتك سيتم توفير المنتج خاصتك للبيع في متجر الاردوينو على الانترنت.



   المتطلبات:

    1- المشاركة في البرنامج تتطلب دفع رسوم ترخيص قليلة للعلامة التجارية AtHeart الخاصة باردوينو. إذا كنت صانع صغير(او من الهواة) فتكون الرسوم المدفوعه موحدة،اما الشركات التي تم تأسيسها تدفع نسبة صغيرة (بحد أقصى 5٪ من سعر الجملة).

    2-  يطبق هذا البرنامج إلى منتجات تامة الصنع مثل منبهات، والساعات، ولعب اطفال، ومصابيح، وأجهزة الراديو ومنتجات مماثلة فضلا عن "الالواح النشطة (Activity boards)" التي تلخص الالكترونيات والبرمجيات من قاعدة اردوينو.

    3- وتستبعد ·نسخ الواح الاردوينو من البرنامج (أي الالواح التي هي نسخ مباشرة من لوحات اردوينو الرسمية)

        هذا البرنامج متاح لأي منتج يستخدم معالج دقيق مدعوم ضمن خطه البرنامج .موضح في قائمة.
المعالجات الدقيقة المدعومة حالياً ضمن البرنامج:
     ·      ATMega328 clocked at 8 or 16 MHz
     ·      ATMega1280 clocked at 16 MHz
     ·      ATMega2560 clocked at 16 MHz
     ·      ATMega32U4 clocked at 16MHz
     ·      SAM3X


الأربعاء، 11 نوفمبر 2015


مكتبات الاردوينو البرمجية - الجزء الثاني



استخدام المكتبة.

أولاً، جعل Morse داخل مسار المكتبات sub-directory للمسار sketchbook الخاص بك. نسخ أو نقل الملفات Morse.h و Morse.cpp في هذا الدليل. الآن تشغيل بيئة Arduino. إذا قمت بفتحقائمة سكيتش > "استيراد مكتبة" ، يجب أن تشاهد Morse بداخلها. وسيتم تجميع المكتبة مع السكيتشات المستخدمه. إذا لم تبنى المكتبة ، تأكد من أن الملفات ينتهي حقاً بـ.cpp  و .h (بدون إضافة .pde أو.txt ملحق، على سبيل المثال).

دعونا نرى كيف يمكنك نسخ سكيتش الـ SOS القديمة باستخدام المكتبة الجديدة:
#include <Morse.h>

Morse morse(13);
void setup()
{
}
void loop()
{
  morse.
dot(); morse.dot(); morse.dot();
  morse.
dash(); morse.dash(); morse.dash();
  morse.
dot(); morse.dot(); morse.dot();
  
delay(3000);
}
هناك بعض الاختلافات من الرسم القديم (إلى جانب حقيقة أن بعض الشفرات البرمجية انتقلت إلى مكتبة).
أولاً، لقد أضفنا عبارة #include إلى الجزء العلوي من السكيتش. وهذا يجعل المكتبة Morse  متاحة للسكيتش، ويشمل ذلك الشفرات البرمجية(Codes) التي أرسلت إلى اللوح. وهذا يعني إذا لم تعد بحاجة المكتبة في السكيتش، يجب عليك حذف العبارة #include لتوفير مساحة.
Morse morse(13);
عندما يحصل تنفيذ هذا السطر (الذي يحدث بالفعل حتى قبل داله setup())، سوف تسمى المنشئ لفئة Morse، وتمرير الوسيطة التي كنت أعطيت هنا (في حاله اعطيت فقط(13)).
لاحظ أن لدينا setup() هي الآن فارغة؛ وهذا يرجع إلى أن الدعوة إلى pinMode() يحدث داخل المكتبة (عندما يتم إنشاء المثيل).
وأخيراً، استدعاء الدوال dot() و dash() ، نحن بحاجة إلى إضافة بادئة لهم مع morse. -اسم مثيل الذي نريد استخدامه . ونحن يمكن أن يكون مثيلات متعددة من فئة مورس، كل على رأسها (pin) الخاص المخزنة في المتغير _pin الخاصة لذلك المثيل. بواسطة استدعاء دالة على حالة معينة، يمكننا تحديد متغيرات المثيل الذي ينبغي أن تستخدم خلال ذلك الاستدعاء للدالة. هذا اذا كان الاثنين بحوزتنا :
Morse morse(13);
Morse morse2(12);
ثم داخل استدعاء إلى morse2.dot() , _pin سيكون 12-
إذا كنت حاولت سكيتش جديد، ربما كنت لاحظت أن لا شيء من مكتبتنا تم التعرف عليه او سلط عليه الضوء. ولسوء الحظ، برنامج اردوينو لا يمكن تلقائياً معرفة ما كنت تعرف في المكتبة الخاصة بك (على الرغم من أنه سيكون سمة او خاصية لطيفة )، لذلك عليك أن تعطيه القليل من المساعدة. للقيام بذلك، قم بإنشاء ملف يسمىkeywords.txt في المجلد Morse directory. ينبغي أن تبدو مثل هذا:
Morse   KEYWORD1
dash    KEYWORD2
dot     KEYWORD2
كل سطر يحتوي على اسم keyword ، متبوعاً بعلامة تبويب (not spaces)، متبوعاً بالنوع من keyword.
الفئات ينبغي أن يكون KEYWORD1 وهي برتقالية اللون؛
الدوال ينبغي أن يكون KEYWORD2 وبنية اللون.
 عليك إعادة تشغيل البيئة اردوينو للحصول على الاعتراف بالكلمات الرئيسية keyword الجديدة.
كما أنه من اللطيف ان تزويد الناس بسكيتش يستخدم المكتبة الخاصة بك. للقيام بذلك، قم بإنشاء مجلد امثلة داخل مجلد مورس. بعد ذلك، انقل أو انسخ من المجلد الذي يحتوي السكيتش (دعنا نسميها SOS) كتبناها فوق مجلد الامثلة. (يمكنك العثور على السكيتش باستخدام Sketch > Show Sketch Folder command.) إذا قمت بإعادة تشغيل البيئة اردوينو (هذه المرة الأخيرة، اعدكم J)--سترى مكتبة Morse داخل المجلد File > Sketchbook > Examples
القائمة التي تحتوي على المثال الخاص بك. قد ترغب في إضافة بعض التعليقات التي توضح كيفية استخدام المكتبة الخاصة بك أفضل.
إذا كنت ترغب في التحقق من مكتبة كاملة (مع الكلمات الرئيسية(Keyword) والمثال)، يمكنك تحميل البرنامج: كاملاً Morse.zip.

للحصول على مزيد من المعلومات انظر Arduino-style API ، للحصول على معلومات حول جعل Arduino-style API  نمط جيد للمكتبة الخاصة بك.

مكتبات الاردوينو | Arduino Libraries


ما هي مكتبات الاردوينو البرمجية؟



توضح هذه التدوينة كيفية صنع مكتبه اردوينو، تبدأ سكيتش لعمل اضاءة إشارة مورس (flashing Morse code) وتوضيح كيفية تحويل الدوال الى مكتبة. وهذا يتيح لأناس اخرين سهولة استخدام الشفرات البرمجية التي قمت بكتابتها وكذلك سهولة اجراء التحديثات لتحسين مكتبة الاردوينو الخاصة بك. 
* لمزيد من المعلومات،حول كيفية صناعه مظهر اردوينو أنظر API Style Guide خاص بمكتبتك.
نبدأ بـ سكيتش يعمل كـ شفرة مورس (Morse code) بسيطة:
int pin = 13;

void setup()
{
  
pinMode(pin, OUTPUT);
}

void loop()
{
  dot(); dot(); dot();
  dash(); dash(); dash();
  dot(); dot(); dot();
  
delay(3000);
}

void dot()
{
  
digitalWrite(pin, HIGH);
  
delay(250);
  
digitalWrite(pin, LOW);
  
delay(250);
}

void dash()
{
  
digitalWrite(pin, HIGH);
  
delay(1000);
  
digitalWrite(pin, LOW);
  
delay(250);
}

إذا شغلت السكيتش، سيضيئ المصباح كشفرة (SOS)على الرأس(pin) رقم 13 في لوح الاردوينو.
السكيتش يحتاج الى أجزاء صغير مختلفة لكي يصبح مكتبة متكاملة. 
أولاً لدينا الـdot()والـ dash() دوال تجعل المصباح يوميض, 
ثانياً يوجد ledPin كمتغير تستخدمه الدالة لمعرفه الرأس المستخدم.
 واخيراً استدعاء pinMode() كدالة تعرف الرأس كمخرج.

لنتعلم كيفية تحويل السكيتش الى مكتبة!


تحتاج على الأقل ملفين لأنشاء مكتبة: ملف الهيدر(header) (امتداد الملف ".h") وملف المصدر(source) وبالامتداد (.ccp
ملف الهيدر يضم التعريفات للمكتبة: بالواقع قائمة بكل شيء موجود داخل المكتبة؛ بينما ملف المصدر يضم الشفرة البرمجية(السكيتش). إذا لنطلق اسم (Morse) على مكتبتنا لذلك ملف الهيدر سيكون بالشكل التالي Morse.h لنلق نظره لما سيتضمن ربما سيبدو غريب بعض الشيء في البداية لكن سيكون لديك الحس لكيفيه العمل حالما تلاحظ تعامله مع ملف المصدر.
قلب ملف الهيدر يتكون من سطر لكل داله في المكتبة، منظمة على شكل فئات بحسب المتغيرات التي تحتاجها:
class Morse
{
  
public:
    Morse(
int pin);
    
void dot();
    
void dash();
  private:
    
int _pin;
};


(الفئة class) هي ببساطة عبارة عن مجموعة من الدوال والمتغيرات التي تحفظ معا في مكان واحد. يمكن أن تكون هذه الدوال والمتغيرات العامة،بمعنى إمكانية الدخول لها من قبل المستخدمين لمكتبتك ,او خاصة أي بمعنى إمكانية الدخول من الفئه نفسها فقط .لكل فئة دالة خاصه تسمى (constructor) المنشئ  والتي تستخدم لأنشاء مثيل للفئة .المنشئ يحمل نفس اسم الفئة . 
أنت بحاجة إلى بضعة أشياء أخرى في ملف الرأس. واحد هو عبارة #include الذي يمنحك حق الوصول إلى أنواع قياسية وثوابت اللغة اردوينو (وهذا يتم تلقائياً إضافة إلى اسكتشات العادية، ولكن ليس للمكتبات). يبدو أن هذا (يذهب فوق تعريف الفئة التي تعطى سابقا):
#include "Arduino.h"
وأخيرا فمن الشائع ان يختتم ملف الهيدر كله في بشكل غريب.
#ifndef Morse_h
#define Morse_h

// the #include statment and code go here...

#endif

أساسا، وهذا ما يمنع مشاكل إذا كان شخص ما عن طريق الخطأ ضمن  #include المكتبة الخاصة بك مرتين.
وأخيراً، يمكنك عادة وضع تعليق في الجزء العلوي من المكتبة باسمها، ووصف مختصر لما تقوم به، الكاتب، والتاريخ، والترخيص.
دعونا نلقي نظرة على ملف الهيدر(header) كاملة:
/*
  Morse.h - Library for flashing Morse code.
  Created by David A. Mellis, November 2, 2007.
  Released into the public domain.
*/

#ifndef Morse_h
#define Morse_h

#include "Arduino.h"

class Morse
{
  
public:
    Morse(
int pin);
    
void dot();
    
void dash();
  private:
    
int _pin;
};

#endif
الآن دعونا نذهب في اعماق أجزاء مختلفة من الملف المصدر، Morse.cpp.
ويأتي أولاً بضع عبارات #include. وهذه تعطي صلاحية الولوج إلى دوال اردوينو القياسية، والى التعاريف الواردة في ملف الرأس الخاص بمكتبتك:
#include "Arduino.h"
#include "Morse.h"

ثم تأتي بعد ذلك المنشئ.مرة أخرى، وهذا يفسر ما يجب أن يحدث عند أي شخص يقوم بإنشاء مثيل للفئة الخاصة به. وفي هذه الحالة، يحدد المستخدم رقم pin الذي يودون استخدامه. نحن تنسمي pin كمخرج  ونحفظه كمتغير خاصة لاستخدامه في دوال أخرى:
Morse::Morse(int pin)
{
  
pinMode(pin, OUTPUT);
  _pin = pin;
}

وهناك بضعة أشياء غريبة في هذه الشفرة. 
الأول هو Morse:: قبل اسم الدالة. هذا يقول أن الدالة جزء من فئة Morse سترى هذا مرة أخرى في الدوال الأخرى في الفئة.
 والشيء الثاني الغير طبيعي هو تسطير أسفل السطر underscore باسم المتغير الخاصة بنا، _pin. يمكن أن يكون هذا المتغير في الواقع أي اسم تريده، طالما أنه يطابق التعريف في ملف الرأس.
إضافة تسطير أسفل سطر(underscore) بداية الاسم بمثابة وضع اتفاقية مشتركة لتوضيح المتغيرات التي هي متغيرات خاصة، وأيضا لتمييز الاسم (كما في حالة pin).
ثم يأتي الشفرات البرمجية الفعلية من السكيتش الذي أنت كنت تحول إلى مكتبة (أخيرا!). يبدو إلى حد كبير مشابه، ما عدا Morse:: أمام أسماء الدالات، و _pin بدلاً من pin:
void Morse::dot()
{
  
digitalWrite(_pin, HIGH);
  
delay(250);
  
digitalWrite(_pin, LOW);
  
delay(250);
}

void Morse::dash()
{
  
digitalWrite(_pin, HIGH);
  
delay(1000);
  
digitalWrite(_pin, LOW);
  
delay(250);
}

وأخيراً، أنها نموذجية تضمين تعليق الهيدر في الجزء العلوي من الملف المصدر، وكذا. دعونا نرى كل شيء:
/*
  Morse.cpp - Library for flashing Morse code.
  Created by David A. Mellis, November 2, 2007.
  Released into the public domain.
*/


#include "Arduino.h"
#include "Morse.h"

Morse::
Morse(int pin)
{
  
pinMode(pin, OUTPUT);
  _pin = pin;
}

void Morse::dot()
{
  
digitalWrite(_pin, HIGH);
  
delay(250);
  
digitalWrite(_pin, LOW);
  
delay(250);
}

void Morse::dash()
{
  
digitalWrite(_pin, HIGH);
  
delay(1000);
  
digitalWrite(_pin, LOW);
  
delay(250);
}
وهذا هو كل ما تحتاجه (هناك بعض الأشياء الاختيارية الأخرى جميلة، ولكن سوف نتحدث عن ذلك في وقت لاحق).

كيفية استخدام المكتبة,هذا ما سنتعرف علية في الجزء الثاني من هذه التدوينة.