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

الدائرة الكهربائية :
يجب تغذية الشاشة بالطاقة عن طريق توصيلها بكل من المنافذ VCC و GND. ثم توصيل أطراف الشاشة DIO , CLK لأي منافذ رقمية في الأردوينو مثال : 2،3 شاهد الصورة بالأسفل:

تثبيت المكتبة الخاصة بالشاشة TM1637
يوجد مكتبات عديدة يمكنها تشغيل الشاشة TM1637 . ولكننا ننصح بمكتبة : TM1637Display.h
و مبرمج هذه المكتبة هو :
Avishorp
هذه المكتبة موصى بها من موقع الأردوينو الرسمي.
أيضا يمكنك تحميل المكتبة كملف مضغوط (zip) من هذا الرابط:

التمرين 1 : عرض رقم ثابت على شاشة TM1637
تم تسمية الكائن (dd) اختصاراً .
الأمر : setBrightness يستخدم لضبط شدة إضاءة الشاشة ، اختر أي رقم 0-15 .
الأمر showNumberDec يستخدم بسهولة لعرض أي قيمة رقمية عادية ، و يمكنك اضافة بعض الخيارات ، مثل : تشغيل الاصفار على اليسار أو عمل إزاحة للرقم ليظهر في المنتصف مثلا.
الأمر showNumberHex يمكنه عرض الأرقام و بعض الحروف الخاصة بالقيم السداسية عشر Hexadecimal .
الأمر clear يستخدم لإخفاء كل ما يظهر على الشاشة.


#include "TM1637Display.h"
#define CLK 12
#define DIO 11
TM1637Display dd(CLK, DIO);
void setup(){
dd.setBrightness(15); // choose value 0-15
}
void loop(){
dd.showNumberDec(31); delay(1000); dd.clear();
dd.showNumberDec(32,true); delay(1000); dd.clear();
dd.showNumberDec(33,false,3); delay(1000); dd.clear();
dd.showNumberHexEx(0xabcd); delay(1000); dd.clear();
dd.showNumberHexEx(0xef); delay(1000); dd.clear();
dd.showNumberHexEx(0xef,0,1,0); delay(1000); dd.clear(); //last number on right is the column
dd.showNumberHexEx(0xef,0,1,1); delay(1000); dd.clear(); // 1 is the 1st from the left
dd.clear();
}
التمرين 2 : عرض قيمة الساعة على الشاشة
لاحظنا أنه من الصعب التحكم بالنقطتين الرأسيتين (:) في وسط الشاشة . في المثال التالي نكتب لك كود مقترح لعرض الساعات و الدقائق ، و عرضها على الشاشة بشكل مناسب باستخدام الأمر :
dd.showNumberDecEx()
انظر للمثال :

#include "TM1637Display.h"
#define CLK 12
#define DIO 11
TM1637Display dd(CLK, DIO);
int m=0;
int h=0;
void setup(){
dd.setBrightness(15); // choose value 0-15
}
void loop(){
int x=m+(h*100);
dd.showNumberDecEx(x, 64, true);delay(500);
dd.showNumberDecEx(x, 0 , true);delay(500);
m=m+3;
h=h+1;
}
التمرين 3: عرض قراءة مقاومة متغيرة على شاشة TM1637

ملاحظة : في الصورة لم نوصل الطاقة للشاشة . لكن يجب عليك توصيلها .
#include "TM1637Display.h"
#define CLK 2
#define DIO 3
TM1637Display dd(CLK, DIO);
void setup(){
dd.setBrightness(15); // choose value 0-15
}
void loop(){
int x=analogRead(A7);
dd.showNumberDec(x);
delay(1000);
dd.clear();
}