محترف إزيس2: إستعمال لوحة الأردوينو على برمجيّة Proteus ISIS

في هذا الدرس و الدروس القادمة سنختصّ في إستعمال لوحة أردوينو من خلال برمجيّة Proteus ISIS

دارة BLINK

إنجاز دارة كهربائيّة تحتوي على لوحة أردوينو و صمام مشع ومقاوم كربوني
المطلوب: من خلال برمجيّة Proteus ISIS ننجز الدّارة الكهربائيّة بالمكوّنات التي تم ذكرها بأن يضيء الصمام المشع ثانيّة ثمّ ينطفئ (تسمّى هذه الدّارة الكهربائيةالمشهورة بـ BLINK)

مراحل إنجاز الدّارة الكهربائّية

في البداية نستخرج المكوّنات الكهربائيّة
لوحة أردوينو (ARDUINO UNO)
صمام مشع (LED-RED)
مقاوم كربوني (RES)

نقوم بإنجاز الدّارة الكهربائيّة التاليّة

بالنسبة إلى السالب (الأرضي) نستعمل Terminals mode -> GROUND

بالنسبة لبرمجة أردوينو سنستعمل تطبيقة Arduino IDE
راجع هذا الدرس لمعرفة كيفيّة تثبيت و إستعمال تطبيقة Arduino IDE

عند فتح تطبيقة Arduino IDE و مثال Blink و ذلك بالذهاب إلى
Fichier -> Exemples -> 01.Basics -> Blink
كما هو مبيّن في الصورة التّالية

نتحصّل على هذا الكود (تمّ حذف كلّ التعاليق)

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}

بالنسبة LED_BUILTIN تساوي 13 بالنسبة لأردوينو أونو (ذاك المنفذ الذي يحتوي على صمام مشع داخلي يضيء عندما يكون منفذه (13) في حالة مرتفع
بالنسبة لبقيّة الكود المنفذ 13 يكون مرتفع ثمّ إنتظار ثانية تمّ ينطفئ ثم إنتظار 1 ثانيّة) وتتكرّر العمليّة

تواصل بين تطبيقة Arduino IDE و لوحة الأردوينو في برمجّة Proteus ISIS

لإرسال برمجة إلى لوحة أردوينو في برمجيّة Proteus ISIS هناك طريقتين (سنعتمد في هذا التمرين على الطريقة الأولى و في التمرين الموالي على الطّريقة الثّانية). وبإمكانك إختيار أي طريقة تعجبك.

إرسال بإستعمال الطريقة الأولى

بعد كتابة البرمجة نضغط على Vérifier
يقوم البرنامج بالتثبّت من البرمجة و البحث عن أخطاء و إن لم يجد يقوم بإنشاء ملف بنظام سداسي عشر
بالبحث في الأسطر الأخيرة حوالي السطر الرابع قبل الأخير نجد رابط لمسار ملف الذي ينتهي بـ (.hex)
مثال (C:\Users\USERS\AppData\Local\Temp\arduino_build_234709/Blink.ino.hex)
نقم بنسخ (Ctrl+C) مثل هذا المسار

نعود إلى برمجّة Proteus ISIS و إلى المكوّن Arduino uno بالضغط عليه مرّتين تظهر لنا نافذة Edit Component
و في خانة Program File نقوم بلصق المسار المنسوخ ثمّ نضغط على Ok

إنتهينا من إنجاز و إعداد الدّارة و لم يبق إلى التشغيل و التثبّت من الأخطاء إن وجدت

ملاحظة: إذا تمّ تعديل على البرمجة يكفي فقط بالضغط على Vérifier من تطبيقة Arduino IDE و تشغيل الدّارة بدون إعادة نسخ و لصق الدّارة
و أمّا إذا قمنا بتغيير لوحة الأردوينو أو تغيير الملف الذي قمنا بالتواصل معه و مع لوحة الأردوينو فيجب علينا إعادة نسخ و لصق المسار

شاهد هذا الفيديو لعمليّة إنجاز الدّارة و برمجة لوحة الأردوينو

تمرين 2 : التحكّم في الصمّام مشع بإستعمال الزر الضاغط و لوحة أردوينو على  برمجّة  Proteus ISIS

في هذا التمرين سنقوم بإنجاز دارة كهربائيّة تحتوي على
صمام مشع أحمر (LED-RED)
صمام مشع أصفر(LED-YELLOW)
مقاومات كربونيّة (RES)
و ثلاثة أزرار ضاغطة (BUTTON)
و لوحة الأردوينو أونو(ARDUINO UNO)

Terminals mode -> Ground بالنسبة للقطب السالب
Terminals mode -> POWERبالنسبة للقطب الموجب(Vcc=5V)

وذلك عند الضغط على الزر الضاغط الأوّل  يضيء الصمّام الأوّل ثم  ينطفأ ثم يضيء الصمام الثاني ثمّ ينطفئ و تتكرّر العمليّة
و عند الكف عن الضغط لا تتغيّر الوضعيّة
و عند الضغط على الزر الضاغط الثاني  يضيء الصمّامان معا ثم ينطفئا و عند الكف عن االضغط لا تتغيّر الوضعيّة أيضا
و عند الضغط على الزر الضاغط الثالث  تنطفئ كلّ المصابيح

ملاحظة قبل إنجاز التمرين يجب مراجعة هذا الدرس لمعرفة كيفيّة إستعمال أزرار ضاغطة

في ما يلي الدّارة الكهربائيّة التالية

ملاحظة : ليس مهم أن تحفظ الأكواد حاليّا بل معرفة كيفيّة إستعمالها و التعامل معها
و إنّ حفظ الأكواد سينتج عن طريق الكثرة التّمارين

في ما يلي هذا الكود لمبرمجة الأردوينو

const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;
const int ledPin1 = 12;
const int ledPin2 = 13;
int buttonVar1 = 0;
int buttonVar2 = 0;
int buttonVar3 = 0;
void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);
}
void loop() {
if(digitalRead(buttonPin1)==HIGH){

buttonVar1 = HIGH;
buttonVar2 = LOW;
buttonVar3 = LOW;
}
if(digitalRead(buttonPin2)==HIGH){

buttonVar2 = HIGH;
buttonVar1 = LOW;
buttonVar3 = LOW;
}
if(digitalRead(buttonPin3)==HIGH){

buttonVar3 = HIGH;
buttonVar1 = LOW;
buttonVar2 = LOW;
}
if (buttonVar1 == HIGH) {
digitalWrite(ledPin1, HIGH);
delay(500);
digitalWrite(ledPin1, LOW);
delay(500);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin2, LOW);
delay(500);
} else if (buttonVar2 == HIGH) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
delay(500);
}
else if (buttonVar3 == HIGH) {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}
}

شرح الأكواد  

const int buttonPin1 = 2;
const int buttonPin2 = 3;
const int buttonPin3 = 4;

إنشاء متغيّلاات ثابتة buttonPin1 و buttonPin2 و buttonPin3 ولحفظ فيها أرقام منافذ للأزرار ضاغطة
كلّما غيّرنا منفذ لزر ضاغط ما علينا إلا تغيير هذه المتغيّرات فقط بدون التعديل على البرمجة

const int ledPin1 = 12;
const int ledPin2 = 13;

إنشاء متغيّرات ثابتة ledPin1 و ledPin1 لحفظ فيها أرقام منافذ للصمامات المشعّة
كلّما غيّرنا منفذ للصمام المشع ما علينا إلا تغيير هذه المتغيّرات فقط بدون التعديل على البرمجة

int buttonVar1 = 0;
int buttonVar2 = 0;
int buttonVar3 = 0;

تعيين 3 متغيّرات لحفظ وضعية الأزرار عند الضغط

void setup() {
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);

تحديد وضعيّة المنافذ ledPin1 و ledPin2 لإخراج التيّار الكهربائي

pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
pinMode(buttonPin3, INPUT);

تحديد وضعيّة المنافذ buttonPin1 و buttonPin2 و buttonPin3 كإدخال تيّار الكهربائي

}
void loop() {
if(digitalRead(buttonPin1)==HIGH){

إذا كان الزر الأوّل تم ضغط عليه

buttonVar1 = HIGH;
buttonVar2 = LOW;
buttonVar3 = LOW;

حفظ وضعيّة المتغيّرات

}
if(digitalRead(buttonPin2)==HIGH){

إذا كان الزر الثاني تم ضغط عليه

buttonVar2 = HIGH;
buttonVar1 = LOW;
buttonVar3 = LOW;

حفظ وضعيّة المتغيّرات
}
if(digitalRead(buttonPin3)==HIGH){

buttonVar3 = HIGH;
buttonVar1 = LOW;
buttonVar2 = LOW;
}
if (buttonVar1 == HIGH) {
digitalWrite(ledPin1, HIGH);
delay(500);
digitalWrite(ledPin1, LOW);
delay(500);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin2, LOW);
delay(500);
}

إذا كان الزر الأوّل تمّ الضغط عليه يضيء الصمام الأول ثم ينطفئ ثمّ يضيء الصمام الثاني ثم بنطفئ ثمّ يضيء َ

else if (buttonVar2 == HIGH) {
digitalWrite(ledPin1, HIGH);
digitalWrite(ledPin2, HIGH);
delay(500);
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
delay(500);
}

إذاتمّ الضغط على الزر الثاني بضيء الصمامان معا ثمّ ينطفئ


else if (buttonVar3 == HIGH) {
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
}

إذا تمّ الضغط على الزر الثالث تنطفئ كل الصمامات المشعّة
}

سنستعمل الطريقة الثاليّة في طريقة التواصل بين برمجية أردوينو Arduino IDEو الأردوينو في برمجّة  Proteus ISIS
نقوم بحفظ الملف البرمجة أردوينو في مكان تختاره
 ثمّ الذهاب إلى
Croquis – > Exporter les binaires compilées
أو  بالضغط على  CTRL+ALT+S (إختصار لوحة المفاتيح)

بعد التثبّت من الأخطاء و عندما و تكون البرمجية صحيحة سوف يتمّ إنشاء ملفّات إضافيّة
و سنختار الملف الذي يحتوي على  “…ino.standard.hex “

من خلال برمجييّة برمجّة  Proteus ISIS بالضغط مرّتين على صورة أردوينو و في program file
و على إيقونة الصفراء و نختار الملف المنشأ  "…ino.standard.hex "

ثمّ نقوم بتجربة الدّارة


أكثر تفصيل حول التمرين الثاني شاهد هذا الفيديو

تمرين خاص Montage va et vient

إنجاز دارة كهربائيّة تحتوي على لوحة أردوينو و صمام مشعة وزرين ضاغطين
يضيء الصمّام مشع عند الضغط على أحد الزرّين و ينطفئ عند الضغط على أحد الزرّين أيضا
يمكن إنجاز التمرين على موقع Tinkercad أيضا
أوّل من يرسل التمرين إن كان على موقع TinKercad (في هذه المقالة) أو على برمجّة  Proteus ISIS مع البرنامج في ملف Arduino IDE
بأن يرسل لنا تحت هذا الرابط و أوّل من يرسله صحيحا سوف ينشر في هذه الصفحة مع ذكر إسمه

أي إستفسار حول التمرين أو تعليق أو إقتراح الرجاء لا تبخل علينا بالضغط على هذا الرابط