الشاشة الرقمية TM1637

حول المشروع:

هذا الدرس يشرح كيفية توصيل وبرمجة شاشة رقمية SEGMENT 7 المعروفة ب TM1637 والتي تحتوي على أربع خانات. تتميز TM1637 بعدد منافذ اقل من 7 SEGMENT التقليدية.
 

الأدوات والمعدات الألكترونية المطلوبة:

1- آردوينو أونو.
2- شاشة رقمية TM1637.
3- أسلاك توصيل M-F.

الدائرة الكهربائية :

يجب تغذية الشاشة بالطاقة عن طريق توصيلها بكل من المنافذ VCC و GND. ثم توصيل منفذ الشاشة CLK بمنفذ الأردوينو رقم 4 بينما يوصل DIO بالمنفذ الخامس للأردوينو. كما هو موضح في الصورة التالية :

 

البرمجة

بداية يجب تتنزيل مكتبة الأردوينو المخصصة للشاشة. يوجد العديد من المكتبات لكن في هذا الدرس سيتم استخدام المكتبة SevenSegmentTM1637 لسهولتها وتعدد خياراتها . لتنزيل المكتبة مباشرة من ARDUINO IDE قم بالضغط على ادوات ومن ثم ادارة االمكتبات . بعد ذلك يمكنك البحث عن اسم المكتبة والضغط عليه لتنزيلها. بعد تنزيل المكتبة يجب تضمينها ضمن الشفرة البرمجية ومن ثم تعريف المنافذ المستخدمة لإتصال بين الأردوينو والشاشة (CLK, DIO). بعد ذلك يتم تعريف كائن باسم display للكلاس SevenSegmentTM1637. باستخدام الكائن يمككنا الوصول للدوال الخاصة بالكلاس ومنها الدالة ()setBacklight المسؤولة عن التحكم بسطوح شاشة العرض بمقياس متدرج من 0 إلى 100 حيث يمثل 0 السطوع الأقل (إطفاء الشاشة ) بينما يمثل الرقم 100 أعلى سطوع ممكن. أما الدالة ()print تتيح عرض الارقام على الشاشة . يمكن عرض 1 إلى 4 أربع ارقام. 

 

				
					
#include "SevenSegmentTM1637.h"
int CLK = 4;  
int DIO = 5;  
SevenSegmentTM1637  display(CLK,DIO);

void setup() {
  display.begin();   
  display.setBacklight(100);
  }
void loop() {
  display.print("1234");
}
				
			

يوجد العديد من الدوال الاضافية مثل الدالة ()blink التي تجعل الشاشة تعرض الارقام بشكل وميض بالاضافة للدالة ()setColonOn التي تسمح باظهار النقطتان الرئسيتان على الشاشة. كما يمكن تغير موقع الرقم من خانة لاخرى بعد تمرير قيمة الخانة المطلوبة للدالة ()setCurso حيث تقسم خانات الشاشة لاربع خانات كل خانة تحمل قيمة معنية كما هو موضح في الصورة . تحتاج دالة ()setCursor إلى اخذ قيمتين لتغير موقع الرقم على الشاشة القيمة الاولى للصف (والتي تكون في هذه الحالة دائما 0 لأن TM1637 لديها صف واحد فقط ) والقيمة الثانية للعامود.  كما يمكن مسح جميع المخرجات من الشاشة باستخدام الدالة ()clear .يمكن إضافة الشفرة التالية للشفرة السابقة لملاحظة تاثير الدوال  ()setColonOn(), blink(), setCursor 

				
					display.setColonOn(true);
  display.blink();
  display.setCursor(0,3);
  display.clear();
				
			

شاشة TM1637 مفيدة جدا في عرض المتغيرات في الكثير من التطبيقات. في هذا المثال تعرض قيمة المقاومة المتغيرة على الشاشة بعد ان تم حصرها في نطاق من 0 إلى 260.  يتم اعطاء اليمة للمتغير  x  ومن ثم عرضه على الشاشة.

				
					#include "SevenSegmentTM1637.h"
int CLK = 4;  
int DIO = 5;  
int x = 0;
SevenSegmentTM1637  display(CLK,DIO);

void setup() {
  pinMode(A0, INPUT);
  display.begin(); 
  display.setBacklight(100);
  
}
void loop() {
  x = map(analogRead(A0), 0, 1023, 0, 260);
  display.print(x);
  delay(1000);
}
				
			

كما يمكن استخدام الشاشة لعرض الوقت في التطبيقات التي تعتمد على التوقيت. في المثال التالي تعمل الشفرة البرمجية على عرض الدقائق والثواني على الشاشة. باستخدام الإضافة Sevensegmentextended التي تحتوي على الدالة ()printTime المخصصة لعرض الوقت. يجب التاكد من استخدام الكلاس SevenSegmentExtended بدلا من SevenSegmantTM1637 لتعريف الكائن display في حال استخدام الدالة ()printTime

				
					#include "SevenSegmentTM1637.h"
#include "SevenSegmentExtended.h"

int CLK = 4;  
int DIO = 5;  
SevenSegmentExtended   display(CLK,DIO);

void setup() {
  display.begin();           
  display.setBacklight(100); 
}
void loop() {
   int minutes  = 0;  
   int seconds  = 0;                        
  for (  ; minutes < 60; minutes++) {                
  for (  ;  seconds < 60; seconds++) {          
      display.printTime(minutes, seconds, true);  
      delay(1000);                
    }
    seconds = 0;                                
  }
}
				
			

انتقل إلى المتجر

انتقال إلى الأعلى