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

الصفحات

شاشات من 7 أجزاءالاردوينو Afficheurs 7 segments Arduino

شاشات من 7 أجزاءالاردوينو   Afficheurs 7 segments Arduino

تحتوي الشاشة المكونة من 7 مقاطع على ... 7 المصابيح راحة في مربع. لذلك هناك 8 أجزاء تحسب الفاصلة العشرية (DP) للشاشة.

تمثل المفاتيح a و b و c و d و e و f و g الإشارات التي تقود كل جزء.

من الضروري إضافة مقاوم الحد الحالي بين الدبوس المعزول ودبوس الإشارة. تقليديا ، سنأخذ مقاومة 330 Ω لجهد +5 فولت. إذا كنت ترغب في زيادة السطوع ، فما عليك سوى تقليل هذه القيمة. إذا كنت تريد على العكس من ذلك تقليل السطوع ، فقم بزيادة المقاومة.

لتشغيل مصابيح LED ، ما عليك سوى وضع الإخراج الرقمي للوحة Arduino على القيمة الصحيحة.


مخطط كهربائي   Schéma électrique


مخطط كهربائي



إليك الرمز لعرض "5": programme pour afficher le nombre 

int       cinq [ ] = { LOW , HIGH , LOW , LOW , HIGH , LOW , LOW };
void setup ( )

{

//لاحظ أننا لا ندير عرض النقطة

                int       j;

for ( j = 2 ; j  < = 8 ;  j ++ )

{

//تعريف دبوس الإخراج (2 إلى 8)
pinMode ( i , OUTPUT ) ;

//ضبط هذه المخرجات على TOP لإيقاف تشغيل مصابيح LED للشاشة  

digitalWrite ( j , HIGH ) ;

}

}
void loop ( )  {

//عرض الرقم 5 ، وفقا للجدول précédent
int       j , i = 0;

for (j = 2 ; j <= 8 ; j ++, i ++ )

{  digitalWrite ( j, cinq [ i ] ) ;

}

}

ومع ذلك ، لتمثيل الأرقام من 0 إلى 9 ، يكفي 4 بت وليس المخرجات الرقمية ال 7 للبطاقة. لهذا ، يتم استخدام وحدة فك ترميز

يتم تثبيت هذا المكون على DIP 16  ويحتوي على الميزات التالية :

  • 1.                   إذا قمنا بتعيين دبوس Bl (فارغ ، رقم 7) على واحد ، فإن جميع المخرجات تذهب إلى الصفر. من أجل عدم استخدامه ، يجب توصيله بالأرض لإلغاء تنشيطه.
  • 2.                   المدخلات A و B و C و D ( الدبابيس 5،3  ،2 و 4 على التوالي ) نشطة في الحالة العليا. المخرجات تكون نشطة في الحالة المنخفضة  ( لتشغيل شاشة ذات أنود مشترك ) أو عالية اعتمادا على حالة دبوس PH (6).
  • 3.                   يعمل دبوس BI / RBO  ( رقم  4) على تثبيط المدخلات. لن نستخدمه وبالتالي سنضعه في الحالة العالية (+5  V)
  • 4.                   يستخدم LD ( 1) لإنشاء ذاكرة لحالة المخرجات .
  • 5.                   دبابيس الطاقة هي 8 (GND / VSS ، أرضي) و 16 (، + 5)

 


إليك رمز عرض الأرقام من 0 إلى 9:

void setup ( )

{

                int       j ;

for ( j = 2  ; j  <=  5 ; j ++)

{

//تعريف دبوس الإخراج (2 إلى 5)
pinMode ( j , OUTPUT ) ;

}

}

void loop ( )

{

               char    j;                             //متغير "عداد"

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

{  afficher ( j ) ;                //تسمى وظيفة العرض delay (1000  );  //ننتظر 1 ثانية

}

}

void afficher ( char chiffre )

{

 //تصفير جميع القطاعات

                int       j ;

for (j = 2 ; j  <= 5 ; j ++ )

{ digitalWrite( j , LOW ) ;

}

//نحن نعول في ثنائي باستخدام قناع
char    mask = 1;

for ( j = 2 ; j <= 5 ;j ++ )

{     int nl = ( chiffre & mask ) ?  HIGH : LOW ;

digitalWrite ( j , nl ) ; mask *= 2 ;

}

}

لاستخدام شاشتين ، لا يوجد سوى 6 دبابيس. لتقليل عدد المسامير ، يتم استخدام وحدة فك ترميز BCD ، والتي من شأنها أن تصنع 4 دبابيس لكل شاشة ، ليصبح المجموع 8 دبابيس. لعرض أرقام مختلفة على كل شاشة ، يجب عليك تشغيل شاشة واحدة وإيقاف تشغيل الأخرى أثناء توصيلها معا على نفس وحدة فك التشفير .


مثال: عداد من 0 إلى 99 على 2 قطاع.

//تعريفات دبوس الترانزستور لكل شاشة (عشرات ووحدات)
const int  alim__dizaine = 6 ; const int      alim__unite = 7 ;

bool                afficheur = false;

void setup ( )

{

                int       j ;

for ( j = 2 ; j <= 5 ; j ++ )

{

//متغير لاختيار العرض

pinMode (j , OUTPUT );

//تعريف دبوس الإخراج (2 إلى 5)

digitalWrite ( j , LOW); }

//يتم وضع جميع المسامير في الحالة المنخفضة

pinMode(alim__dizaine, OUTPUT ); pinMode(alim__unite, OUTPUT ) ; digitalWrite(alim__dizaine,  LOW ); digitalWrite(alim__unite, LOW );

}

void loop( )

{

//إدارة التحديث

//إذا تم عرض أكثر من 10 مللي ثانية ، فإننا نغير 7 أجزاء (الوحدة المتناوبة <-> عشرة)
if ( (millis() - temps) >= 10 )

{

//نعكس قيمة "العرض" لتغيير العرض (وحدة أو عشرة)
afficheur = ! afficheur;

//يتم عرض القيمة على الشاشة //display: true->tens، false->units  afficher__nombre(القيمة، العرض);

               temps = millis();              //نقوم بتحديث الوقت

}

   

//هنا ، يمكننا معالجة الأحداث (زر ...)

}

//وظيفة لعرض رقم // يعرض إما عشرات أو وحدات فارغة afficher__nombre (رقم char ، عرض bool)

{

char unit = 0,  dizain = 0;

if ( nombre > 9 ) dizain  = nombre / 10;     //on recupere  dizains

               unit = nombre – (dizain * 10);                 //نستعيد الوحدات

   

//عرض عشرات

if ( afficheur )

{

//يتم عرض عشرات الكتابة الرقمية (alim_unite ، LOW) ؛ عرض (عشرات) ؛

الكتابة الرقمية (alim__dizaine ، عالية) ؛

}

else

{

//الكتابة الرقمية (alim__dizaine ، يتم عرض وحدات LOW) ؛ عرض (وحدة) ؛

الكتابة الرقمية (alim__unite ، عالية) ؛

}

}

//وظيفة الكتابة إلى عرض فارغ عرض واحد (تشفير حرف)

{

 تصفير جميع القطاعات

                int       j;

for (j = 2 ; j <= 5 ; j ++)

{ digitalWrite  (  j , LOW );

}

//نحن نعول في ثنائي باستخدام قناع
char    mask = 1;

for (j = 2 ; j <= 5 ; j++)

{ int nl = ( chiffre & mask ) ? HIGH : LOW;

digitalWrite(i, nl); mask *= 2 ;

}

}    




تعليقات