شاشات من 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 ;
}
}
تعليقات
إرسال تعليق