الشاشة الكريستالية 1602 Liquid crystal
هذا النوع من الشاشات الكريستالية هو الأشهر و الأكثر انتشارا بين هواة الالكترونيات و في المشاريع الإلكترونية , نظراً لتوفرها بسعر زهيد و سهولة برمجتها .
و قبل البدء بالحديث عن الشاشات الكريستالية , نقاط مهمة
تساعدك على أختيار الشاشة المناسبة لمشروعك ألا و هي :
1) أبعاد الشاشة
2) نوع المتحكم المدمج معها .
3) التطبيق الذي تحتاجه من الشاشة " وجود الألوان , إظهار الصور و المؤثرات الحركية , الكتابة بخطوط مختلفة , ألخ من التطبيقات "
ما سنتحدث عنها اليوم هي الشاشة الكريستالية LCD1602 التي تحتوي على سطرين و 16 عموداً , و التي تعتمد في تشغيلها على المتحكم Hitachi HD44780 driver و التي يمكن تملك ناقل خط Data bus 8 bit .
سنلقي نظرة بداية على هذا النوع و عن كيفية توصيله و برمجته و عرض النصوص و البيانات و الأرقام على هذه الشاشه .
لحسن الحظ هناك مكتبة مثبتة في لغة أردوينو تدعم هذه الشاشات , إضافة لكم هائل من المكتبات الخاصة التي قام المهتمون بالبرمجة بإضافتها على موقع أردوينو الرسمي لتناسب الأنواع المختلفة من الشاشات .
البنية العامة للشاشة الكريستالية :
للشاشات الكريستالية نظام اتصال على التوازي و يبين الرسم التالي التوزيع للمرابط الخاصة بهذه الشاشة :
سنتحدث بشكل مبسط و مختصر عن كل مربط و وظيفته ...
RS اختيار المسجل : هذا المربط يحدد لنا في أي ذاكرة نحن نكتب البيانات ! يتم الأختيار ما بين مسجل البيانات , أو مسجل التعليمات
R/W خيار القراءة أو الكتابة , هذا المربط يحدد إما أختيار وضعية القراءة أو الكتابة .
enable pin يسمح هذا المربط في حال تفعيله بالكتابة للمسجلات الخاصة بالشاشة الكريستالية .
data pin (D0-D7) : هي المرابط التي نمرر البيانات عبرها للمسجلات .
هناك ايضاً مرابط للتغذية و التأريض و للأضاءة الخلفية الداخلية .
هذه لمحة عامة عن المرابط الخاصة بهذه الشاشة , سنتكلم عن توصيل هذه الشاشة مع بطاقة الأردوينو .
و التوصيل كما في الصورة ....
و أيضا سنوصل الرجل رقم 15 مع مصدر التغذية الموجب و الرجل رقم 16 مع السالب في حال أردنا تشغيل الإضاءة الداخلية .
المكتبة الاساسية الخاصة بالشاشات الكريستالية :
يجب عليك الإلمام بهذه المكتبة لأنها تمكنك من التعامل مع اغلب الشاشات الكريستالية .
أوامرها سهلة و بسيطة و يمكنك الإطلاع عليها هنا .
سنقوم بداية بكتابة عدة برامج للإلمام بأكبر قدر من الأوامر و التطبيقات .
عند كتابة البرنامج , نقوم بتعريف المداخل المربوطة مع الشاشة باستخدام الأمر LiquidCrystal
و يكتب على الصورة التالية :
و تكتب المرابط المربوطة بالشاشة بأكثر من صيغة , و أكثر الصيغ استعمالاً هي :
يمكن مراجعة رابط المكتبة لرؤية باقي الصيغ
و يجب أن لا ننسى أن نقوم بتهيئة الشاشة للبدء باستخدامها بواسطة الأمر
حيث نقوم بكتابة ابعاد الشاشة المستخدمة عن طريق هذا الأمر .
في حالتنا هذه تكتب الشاشة بالصيغة :
هذان الأمران هما أهم أمرين يجب كتابتهما في جملة التثبيت void setup
البرنامج الأول : برنامج لطباعة جملة Hello world! الشهيرة .
البرنامج الأول سيبين لنا كيفية إظهار الكلمات على الشاشة .
// this simple program taken from : //This example code is in the public domain. //http://www.arduino.cc/en/Tutorial/LiquidCrystal //modified by Mohannad Rawashdeh// include the library code:#include <LiquidCrystal.h>// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!");}void loop(){}
حسناً لنأخذ هذا المثال , ستحتاج فقط لمقاومة متغيرة مربوطة مع المدخل A0 من الأردوينو للتحكم بسرعة تحرك النص .
#include <LiquidCrystal.h>int t=300;// initialize the library with the numbers of the interface pinsLiquidCrystal lcd(12, 11, 5, 4, 3, 2);int y =1;void setup(){ lcd.begin(16, 2); lcd.cursor(); lcd.autoscroll();}char Phone[]={"0786739233"};
char Name[]={"Mohannad Rawashdeh "};char Email[]={"[email protected] "};
void timing_delay(){ int A=analogRead(A0); delay(5); t=map(A,0,1023,30,1000); t= constrain(A, 30, 1000);} void loop(){ timing_delay(); lcd.setCursor(15, 0); for (int i=0;i<20;i++){ lcd.print(Name[i]); timing_delay(); delay(t); } lcd.clear(); lcd.setCursor(15, 0); for (int i=0;i<21;i++){ lcd.print(Email[i]); timing_delay(); delay(t); } lcd.clear(); lcd.setCursor(15, 0); for (int i=0;i<11;i++){ lcd.print(Phone[i]); timing_delay(); delay(t); } delay(2000); lcd.clear();}
و في الختام , هذا الفيديو للبرنامج الأخير الذي كتبناه , تحياتي