ما يلزمنا
- لوحة أردوينو
- لوحة تجارب
- مقاومة 220 Ω (أحمر، أحمر، أحمر)
- صمام لد
- أسلاك توصيل.
قم بانشاء التركيب التالي
إفتح واجهة التطوير و حرر نص البرنامج التالي:
int led_pin = 10;
void setup() {
pinMode(led_pin, OUTPUT);
Serial.begin(9600);
}
void loop() {
byte value;
if(Serial.available()) {
value = Serial.read();
if(value == '1') {
Serial.println("LED ON");
digitalWrite(led_pin, HIGH);
} else if(value == '2') {
Serial.println("LED OFF");
digitalWrite(led_pin, LOW);
} else if(value == '3') {
Serial.println("LED ON OFF");
digitalWrite(led_pin, HIGH);
delay(1000);
digitalWrite(led_pin, LOW);
delay(1000);
}
}
}
هذا البرنامج يسمح للوحة أردوينو بتنفيذ أوامر آتية من الحاسوب الذي يسمى في هذه الحالة بالمضيف.
إذا كان الرمز المستقبل هو 1، يقوم أردوينو بإشعال اللد.
إذا كان الرمز المستقبل هو 2، يقوم أردوينو بإطفاء اللد.
إذا كان الرمز المستقبل هو 3، يقوم أردوينو بإشعال اللد لمدة ثانية ثم يطفئها.
إذن نتحقق فيما إذا كان هناك رمز مرسل من طرف المضيف بالعبارة
if(Serial.available()
نقوم بقراءة الرمز المرسل و نسجله في المتغير
value = Serial.read();
ثم نقوم بتنفيذ التعليمة حسب قيمة value
بقم بفحص نص البرنامج ثم إرفعه إلى اللوحة و نفّذه.
قم بتنفيذ مراقب الوصل.
حرر القيمة 1 في منطقة النص كما في الصورة ثم أنقر على الزر "send"
لاحظ توهج الصمام.
حرر القيمة 2 في منطقة النص، ثم أنقر على أرسل و بذلك يرسل المضيف رمز 2 عبر الخيط USB. يقوم أردوينو بالتحقق في الذاكرة المؤقتة للمنفذ فيما إذا كان يوجد فيها رمز، إذا كان التحقق صحيح فإنه يقوم بتنفيذ التعليمة المناسبة و يطفئ اللاد في هذه الحالة.
في رأيك ماذا يحدث لو قمت بتحرير 1231 ثم أرسلتها ؟
الجواب
في كل دورة للحلقة ()loop تقوم الدالة بقراءة الرمز الأول، نسخه في المتغير ثم مسحه من الذاكرة المؤقتة ( بعكس عمل الدالة ()peek التي تبقي الذاكرة المؤقتة على حالها) ثم تنفذ بقية التعليمات.
Serial.read()
في الدورة الثانية للحلقة تقوم الدالة بقراءة الرمز الثاني إذا كان متوفر و هكذا.
إذن إذا حررنا القيمة 1231، يكون لدينا الأوامر المنفذة على التوالي:
- لد مضاءة
- لد منطفئة
- لد مضاءة ثم منطفئة
- لد مضاءة
ما تعلمناه
- عمل مراقب الوصل المتوالي.
- المكتبة Serial
-
الخطوات الأولى في الإتصال بين نظم ذات متحكم دقيق.