GLCD12864 ST7920 Controller
الشاشة الرسومية 12864
مع تنوع المشاريع و متطلباتها , يصبح المهتمين في علوم الألكترونيات و الهواة بحاجة لطرق جديدة لعرض البيانات و المعلومات التي يريدون عرضها , في وقت سابق عرضت كيفية التحكم بشاشة نوكيا 5110 و التي تمكنك من رسم الأشكال و الخطوط و حتى الصور و عرض البيانات بخطوط و تأثيرات ممتعة .
لذلك سأتحدث اليوم عن موضوع الشاشات الرسومية من جديد مستخدماً الشاشة GLCD 12864 التي تستخدم المتحكم ST7920 حيث يمكن رؤية النشرة الفنية لها من هنا
يوجد العديد من المتحكمات الأخرى للشاشة , لكن سأفتصر الحديث في هذا الموضوع عن المتحكم ST7920
المكتبة الخاصة بالرسم الجرافيكي مصممة بالأساس للتعامل مع كثير من أنواع الشاشات الرسومية , سواءاً GLCD,TFT,OLED حيث تدعم متحكمات و انواع متعددة.
يمكن تحميل هذه المكتبة من هذا الرابط .
قبل ن ابدأ احب أن انوه لأمر مهم , هو أن هذه المكتبة و التطبيقات التي يمكنك ان تنفذها بواسطته لا تنتهي , فمن يريد الأستزادة أكثر في هذا المجال من البرمجة عليه بالتطبيق العملي لكثرة الأوامر و التعليمات التي توفرها المكتبات الرسومية , ما سأعرضه في هذه التدوينة سيكون نقطة في بحر في هذا المجال.
في البداية سنحتاج لتنفيذ هذه التجربة ما يلي :
1) بطاقة أردوينو
2) شاشة رسومية ST7920 Controller
3)اسلاك توصيل
4) مقاومة متغيرة 500 اوم
6)breadboard
يوجد هناك طريقتين للتحكم بهذه الشاشة , فيمكن توصيلها بنمط تحميل البيانات على التوازي Parallel connection و هناك نمط التوصيل على التوالي Series Interface الذي يستعمل البروتوكول التسلسلي SPI و الذي يتميز بالسرعة ففي نقل البيانات و تقليص عدد المداخل التي نحتاج لتوصيلها من الشاشة الى المتحكم الأصغري , سأستخدم في التوصيل نمط التوصيل على التوالي Series Interface
طريقة التوصيل :
المخطط التالي يبين طريقة توصيل هذه الشاشة .
سأتحدث عن المكتبة و طريقة استعمالها .لنبدأ بهذا المثال
في البداية يجب تعريف المكتبة و نوع المتحكم و
الأرجل المستخدمة للتحكم , عن طريق هذا الأمر
U8GLIB_ST7920_128X64 u8g(13, 11, 12, U8G_PIN_NONE);
ضبط الألوان , بما أننا نستخدم شاشة ذات لونين
فقط Monochrome LCD فإن هناك أمر
يفعل نمط تفعيل البكسل الواحد او تعطيله , و هو
الأمر
u8g.setColorIndex(x); // pixel on
حيث :
x=0 تكون الشاشة في وضعية المسح
x=1 تكون الشاشة في وضعية الكتابة و تفعيل
البكسل .
سأوضح ما سبق بمثال بعد رؤية هذه التعليمة
لكتابة بكسل واحد فقط على الشاشة نكتب الأمر :
u8g.drawPixel(x_axis,y_axis);
حيث يقوم برسم بكسل واحد في الأحداثيات المحدده له
مثال :
الشاشة الرسومية 12864
.jpg)
مثال :
u8g.setColorIndex(1); // pixel on !
u8g.drawPixel(20,20);
النتيجة على الشاشة تكون
لو كان الأمر المكتوب بهذا الشكل :
u8g.setColorIndex(0); // pixel on !
u8g.drawPixel(20,20);
فسيتم مسح النقطة المحددة بالأحداثيات .
u8g.setColorIndex(1); // pixel on !
u8g.drawPixel(20,20);
هذه المكتبة تدعم العديد من الخطوط , يمكن ضبط الخط عن طريق الأمر
u8g .setFont(u8g_font);
أوامر الكتابة , لكتابة نص على الشاشة يستخدم الأمر :
u8g.drawStr(x , y, " text");
حيث تحدد الأحداثيات x,y التي نريد ان نبدأ الكتابة عندها و ثم نكتب النص الذي نريد اظهاره على الشاشة .
رسم الأشكال الهندسية .
لرسم الدوائر :
لرسم الدوائر :
u8g.drawCircle(x,y,raduis);
example:
u8g.drawCircle(20,40,10);
لرسم اجزاء من الدائرة , نكتب الأمر :
u8g.drawCircle(x,y,raduis,opt);
حيث :
- opt: Selects some or all sections of the circle.
- U8G_DRAW_UPPER_RIGHT
- U8G_DRAW_UPPER_LEFT
- U8G_DRAW_LOWER_LEFT
- U8G_DRAW_LOWER_RIGHT
- U8G_DRAW_ALL
حيث تستطيع اختيار اي جزء من الدائرة و رسمه .
لرسم الدوائر المعبأة Filled circle نكتب الأمر
u8g.drawDisc(x,y,radius);
لرسم الاشكال المربعة و المستطيلة هذا الأمر يستخدم لذلك
u8g.drawBox(x,y,w,h);
u8g.drawFrame(x,y,w,h);
حيث نحدد نقطة البداية x,y والطول و العرض لهذا الصندوق .
لرسم ما تريده , عليك وضعه في جملة استدعاء void و استدعاءه في جملة الLoop كالآتي :
u8g.firstPage();
do{
draw_shapes();
}
while(u8g.nextPage() );
بالمجمل هذه اهم الأوامر التي تحتاجها لعمل الرسوم و للاستزادة أكثر عن هذه المكتبة يمكنك قراءة المرجع الرئيسي الكامل لهذه المكتبة
و في النهاية هذه كود أخر لطريقة جعل النص يلتف بزوايا مختلفة على الشاشة
لتحميل البرنامج
Download the code
و هذا الفيديو في النهاية يوضح كيفية العمل الكود .
ماذا عن دهم العربية من مكتبة u8glib؟
ردحذفرأيت هذا من قبل و لكن لا يتوفر لدي شئ للتجربة الآن
http://forum.arduino.cc/index.php?PHPSESSID=dc23fl6qm7v869baml0r3sgag0&topic=139175.msg1100774#msg1100774
نعم تدعم المكتبة اللغة العربية .
حذفسأشارككم تجربتي بها قريباً
هل يمكن استعمال هذه المكتبه مع شاشة نوكيا 5110 حيث اني لم اجد مكتبة النوكيا
ردحذفموجوده تحت اسم PCD8544 يمكنك عمل ازالة للتعليق في البرنامج الموجود في المكتبة و استخدام هذه المكتبة معها
حذفالله يعطيكم العافية ..سؤال:هل هناك طريقة لوصل شاشات الاtft القياس الكبير ٧ إنش مثلا الى الاردوينو ..
ردحذف