درس عــ 7 ــدد: شاشة عرض 7 قطع (Afficheur 7 segments)

قد نحتاج في أحد المشاريع لإظهار عدد معين من القطع أو مسافة معيّنة…
في هذا الدرس سوف نتعرّف كيفيّة تركيب شاشة عرض Afficheur 7 segments مع أردوينو

هناك أنواع من الشاشة عرض و طريقة تركيبه و سنأخذ مثال الموجود في الموقع TinKercad

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

طريقة إختيار الأرقام

بالنسبة إلى عدد 1 يعني b وc تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 2 يعني a وb وd وe وg تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 3 يعني a وb وc وd و g تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 4 يعني b وc وf وg تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 5 يعني a وc وd وf وg تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 6 يعني a وc وd وe وf وg تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 7 يعني a وb وc تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد8 يعني a وb وc وd وe وf وg تكون مضيئة و البقيّة تكون منطفئة
بالنسبة إلى عدد 9 ماذا يكون؟

لتسهيل عمليّة البرمجة سنعيّن المنفذ رقم 1 لصمام a والمنفذ رقم 2 لصمام b والمنفذ رقم 3 لصمام c والمنفذ رقم 4 لصمام d والمنفذ رقم 5 لصمام e والمنفذ رقم 6 لصمام f والمنفذ رقم 7 لصمام g

توزبغ المنافذ على صمامات

بالنسبة إلى عدد 1
يعني المنفذ 2 و 3 في حالة مرتفع

بالنسبة إلى عدد 2
يعني المنفذ 1 و2 و 4و5و7 في حالة مرتفع

بالنسبة إلى عدد 3
يعني المنفذ 1 و2 و 3 و4 و7 في حالة مرتفع

بالنسبة إلى عدد 4
يعني المنفذ 2 و 3 و6 و7 في حالة مرتفع

بالنسبة إلى عدد 5
يعني المنفذ 1 و 3 و 4 و6 و7 في حالة مرتفع

بالنسبة إلى عدد 6
يعني المنفذ 1 و 3 و 4 و 5 و 6 و7 في حالة مرتفع

بالنسبة إلى عدد 7
يعني المنفذ 1 و2 و 3 في حالة مرتفع

بالنسبة إلى عدد 8
يعني المنفذ 1 و2 و 3 و4 و5 و6 و7 في حالة مرتفع

بالنسبة إلى عدد 0
يعني المنفذ 1 و2 و 3 و4 و5 و6 في حالة مرتفع

ماذا سيكون بالنسبة إلى رقم 9؟ راسلنا على فيسبوك بتعليقك على هذه التدوينة

العدّاد من 0 إلى 8

إستعملنا عمليّة تكراربإستعمال متغّير i من صفر إلى 8 و حسب المتغيّرi نقوم بإضهار رقم على الشاشة.
ماذا سيتغير إذا قمنا بالعد تنازلي راسلنا هنا

يجب تحديد مهلة من الزمن بالتوقّف و إلا تسارعت الأرقام بسرعة كبيرة و قد لا تراها إلا في شكل 8 (مضيئة كلّها)
ماذا سيتغيّر في البرنامج إذا أردنا إن يقع العد من 0 إلى 9 ؟

هذا كود الأصلي للبرنامج أقرءه فقط و حاول أن تفهم وظيفة كل كلمة

void setup()
{
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
for (int i = 0; i <= 8; i=i+1) {
if (i == 0) {
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
if (i == 1) {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
}
if (i == 2) {
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(7,HIGH);
}
if (i == 3) {
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
}
if (i == 4) {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if (i == 5) {
digitalWrite(1,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if (i == 6) {
digitalWrite(1,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if (i == 7) {
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
}
if (i == 8) {
digitalWrite(1,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
delay(1000);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
}
}

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

تمرين ثاني

نفس الدّارة الكهربائيّة السابقة مع تغيير في البرنامج
نضغط على أرقام من 0 إلى 8 عن طريق لوحة المفاتيح (الملامس) تظهر لنا على شاشة عرض و أي شيء آخر ينطفئ

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

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

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

إذا كان 1 سوف تكتب 1 و نفس الشيء بالنسبة إلى بقيّة الأرقام

وهذا كود الرسميلأردوينو

char j;
void setup()
{
j = '0';
pinMode(10, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
Serial.begin(9600);
pinMode(7, OUTPUT);
Serial.begin(9600);
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
Serial.println("Taper un numéro");
}
void loop()
{
while ((Serial.available() == 1)){
j = Serial.read();
Serial.println(j);
Serial.println("Taper un numéro");
digitalWrite(10,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
if (j == '0') {
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
}
if (j == '1') {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
}
if (j == '2') {
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(7,HIGH);
}
if (j == '3') {
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
}
if (j == '4') {
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if (j == '5') {
digitalWrite(10,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if (j == '6') {
digitalWrite(10,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
if (j == '7') {
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
}
if (j == '8') {
digitalWrite(10,HIGH);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
digitalWrite(6,HIGH);
digitalWrite(7,HIGH);
}
}
}

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

مشاهدة التمرين على موقع TinKercad


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


هل تعلم
من عائلات لوحة الأردوينو نجد  Arduino YUN  أنه مدمج مع WiFi . كما أن  يتيح خيارات برمجية متقدمة بنظام لينيكس.لكن  برمجة تكون في العادة مثل أردوينو