القائمة الرئيسية

الصفحات

الاتصال عبر الارتباط التسلسلي الاردوينو Communication par la liaison série Arduino

الاتصال عبر الارتباط التسلسلي الاردوينو  Communication par la liaison série Arduino

 

على جانب الكمبيوتر ، توفر بيئة تطوير Arduino أداة أساسية تقوم بعرض المعطيات على الشاشة. للقيام بذلك ، ما عليك سوى النقر فوق


المحطة التسلسلية

في هذه النافذة ، ستتمكن من إرسال واستقبال الرسائل على الرابط التسلسلي لجهاز الكمبيوتر الخاص بك (والذي يتم محاكاته بواسطة Arduino).

على جانب البرنامج ، لاستخدام الرابط التسلسلي والتواصل مع الكمبيوتر ، نستخدم كائنا مدمجا أصلا في مجموعة Arduino: الكائن التسلسلي .

يجمع هذا الكائن المعلومات (السرعة ، بتات البيانات ، إلخ) والوظائف (الإرسال ، استقبال القراءة ,...) حول ماهية القناة التسلسلية ل Arduino.

للبدء ، يجب عليك تهيئة الكائن التسلسلي لتحديد سرعة الاتصال بين الكمبيوتر ولوحة Arduino باستخدام وظيفة  begin( ) . يجب أن تكون هذه السرعة متطابقة على جانب الكمبيوتر وعلى جانب البرنامج.

مثال: Serial.begin ( 9600 ) ;/ / إنشاء اتصال تسلسلي عند 9600 باود

يتم استخدام و

إرسال البيانات  Envoi de données arduino

ظيفة print() لإرسال الأحرف .

يرسل البرنامج أدناه جميع حروف الأبجدية .

void setup ( )

{

                Serial.begin (9600 ) ;                           //إنشاء اتصال تسلسلي في 9600 باود

}

void loop ( )

{ char j = 0;

                 char lettre = 'b';                    // أو "B" لإرسال الأحرف الكبيرة

                       Serial.println("----  lalphabet ----" );                        //تحية صغيرة

//نبدأ في الإرسال

for  (j =0; j < 26;  j ++)

{

Serial.print(lettr);         //نرسل الرسالة
lettr = lettr + 1; //دعنا نذهب إلى الرسالة

                                delay(300);                    //ننتظر 300 مللي ثانية قبل الإرسال مرة أخرى

}

                 Serial.println(" ");                     //نعود إلى الخط

                 delay(1000);                                     //ننتظر 1 ثانية قبل إعادة الأبجدية

}

استقبال البيانات  Reception des données

 

للتحقق مما إذا كنا قد تلقينا بيانات ، سنقوم بالاستعلام بانتظام عن البطاقة للاستفسار عما إذا كانت البيانات متوفرة في المخزن المؤقت للاستقبال. المخزن المؤقت هو منطقة ذاكرة تستخدم لتخزين البيانات في مقرر دراسي فوري. هذه الذاكرة مخصصة للاستقبال على القناة التسلسلية. هناك أيضا واحد لإرسال البيانات ، والذي يصطف البيانات المراد إرسالها ويرسلها في أقرب وقت ممكن. باختصار ، المخزن المؤقت هو نوع من غرفة الانتظار للبيانات.

للتحقق مما إذا كانت البيانات قد وصلت ، نستخدم الوظيفة المتاحة () للكائن التسلسلي. ترجع هذه الدالة عدد الأحرف في المخزن المؤقت للاستلام للارتباط التسلسلي أو -1 عندما لا يكون هناك شيء للقراءة من المخزن المؤقت للتلقي.

بمجرد أن تعرف أن هناك بيانات ، عليك أن تذهب وتقرأها. ستتم القراءة ببساطة باستخدام الوظيفة ... اقرأ () !

سترجع هذه الوظيفة الحرف الأول الذي يصل دون معالجة. وبالتالي يتم الوصول إلى البيانات الواردة حرفا بحرف. إذا لم تتم قراءة أي شيء على الإطلاق ، فستعود الوظيفة -1 للإشارة إليها.

مثل. يقوم المستخدم بإدخال حرف من الكمبيوتر وإذا كان الحرف صغيرا ، إرجاعه بأحرف كبيرة ؛ إذا كانت كبيرة يتم إرجاعها بأحرف صغيرة. أخيرا ، إذا لم تكن الشخصية حرفا ، فإننا نعيدها بشكل طبيعي ، كما هي.

int carlu;          //يخزن الحرف المقروء على المسار série void setup  ( )

{

               Serial.begin ( 9600 ) ;                   //يبدأ ارتباط تسلسلي جديد  9600 baud

}

void loop() {

//نبدأ بالتحقق مما إذا كان الحرف متاحا في
 if ( Serial.available ( )  > 0 )

{

carlul = Serial.read ( ); //قراءة أول شخصية متاحة

       

//هل هي شخصية صغيرة ?
if ( carlul >= 'b' && carlu <= 'z' )

{ carlul = carlul – 'a';    //نحن فقط نحتفظ ب "رقم الحرف"" carlu = carlul + 'B';            //ننتقل إلى الأحرف الكبيرة

}

else

//هل هو حرف كبير ?

if (carlul >= 'B' && carlu  <= ' Z ' )

{ carlul = carlul – 'A';   //نحن فقط نحتفظ ب "رقم الرسالة" carlu = carlul + 'b';  //نذهب إلى الأحرف الصغيرة }

//لا يشار إلى أي منهما باسم BYTE

//أو إرجاع الحرف المعدل

                              Serial.write ( carlul ) ;                                // يرسل حرفا كمتغير بايت

}

}

إذا كنت ترغب في تجنب وضع اختبار وجود البيانات على المنفذ التسلسلي في التعليمات البرمجية الخاصة بك ، فقد أضاف Arduino وظيفة تعمل بانتظام. يتم إطلاق الأخير بانتظام قبل كل إعادة تشغيل للحلقة. لذلك ، إذا لم تكن بحاجة إلى معالجة بيانات المنفذ التسلسلي في وقت محدد ، فما عليك سوى إضافة هذه الوظيفة.

لتنفيذه بسيط للغاية ، ما عليك سوى وضع التعليمات البرمجية في وظيفة تسمى serialEvent ( ) والتي ستتم إضافتها خارج الإعداد والحلقة. تتم بقية معالجة الكلمات بشكل طبيعي ، مع Serial.read على سبيل المثال.

مثال الهيكل العظمي المحتمل: exemple de squelette possible :


const int          Led = 12;

//نضع LED على دبوس 12



void setup() {

 

pinMode(Led, OUTPUT);

//LED هو إخراج

digitalWrite(maLed, HIGH);

//نقوم بإيقاف تشغيل LED

Serial.begin( 9600 );

}

void loop ( ) {

//نبدأ القناة التسلسلية

delay ( 2000 ) ;

//...نحن لا نفعل أي شيء في الحلقة

//يستغرق استراحة قصيرة من 2 s

digitalWrite (ma_Led, HIGH ); }

//نقوم بإيقاف تشغيل LED

 

void serialEvent ( )                        //الإعلان عن وظيفة المقاطعة على المنفذ التسلسلي

{ while ( Serial.read() != -1 );
            //
يقرأ جميع البيانات (يمسح المخزن المؤقت للتلقي)
 digitalWrite( Led, LOW );
            //
نقوم بتشغيل LED

}




  

تعليقات