الكتابة باللغة العربية على شاشة الـ LCD بإستخدام الاردوينو
هل حاولت من قبل عرض الحروف العربية أو الرموز الخاصة بك على شاشة LCD كما نفعل في اللغة الإنجليزية , وهل حاولت أيضا فهم كيف يتم عرض الاحرف عليها او رسم بعض الأشكال الخاصة بك؟!
في هذا المشروع سنقوم بكتابة كلمة باللغة العربية عن طريق الرسم على شاشة LCD.
ولكي نقوم بطباعة الحروف العربية او الرموز الخاصة بنا على شاشة العرض LCD يجب ان نتعرف على ذاكرة ال CG-RAM لشاشة LCD .
ذاكرة CG-RAM
CG-RAM هي العنصر الأساسي لعملية انشاء الرسومات و الاحرف الخاصة بك على شاشة العرض LCD، بحيث تقوم بتخزين الرسومات التي نقوم بإنشائها في الكود.
– حجم هذه الذاكرة هو 64 بايت, بحيث يمكنها تخزين 8 احرف في وقت واحد، وكل حرف يتكون من 8 بايت
– يبدأ عنوان الذاكرة CG-RAM من (0x40 Hex (64 decimal.
في الجدول التالي يتم توضيح عناوين الاحرف و الرسومات التي سيتم إنشاءها وأوامر الطباعة الخاصة بهم:
في الجدول اعلاه ستلاحظ العنوان الذي سيبدأ به كل رمز خاص بك مع امر الطباعة الخاص به. مثلا اول حرف يتم انشاؤه وتخزينه على الموقع من 0x40 الى 0x47 في الذاكرة، ثم يتم طباعته على شاشة الـ LCD بواسطة ارسال الامر 0 الى شاشة الـ LCD. والحرف الثاني يبدأ تخزينه من الموقع 0x48 الى 0x4F ويتم طباعته من خلال ارسال الامر 1 الى الشاشة.
كيف يتم إنشاء أحرف مخصصة في CG-RAM
يتم تشكيل كل حرف او رمز على الشاشة في مصفوفة تكون ابعادها 8×5، حيث ان 5 تمثل عدد الاعمدة و 8 تمثل عدد الصفوف.
اولا: قم برسم مصفوفة 8*5 بكسل، ثم قم برسم الرمز او الحرف الخاص بك في داخل المصفوفة، ثم قم بوضع على كل خلية ملونة قيمة 1 , و قيمة صفر على الخلايا الأخرى.
فمثلا اذا اردنا ان ننشئ حرف ا في هذه المصفوفة يتم انشاؤه بالطريقة التالية:
يتم استبدل كل لون احمر بالرقم ١ و المربع الغير ملون (بحسب الصورة اعلاه - اخضر )نستبدله ب 0.
وبهذه الطريقة، عندما نريد كتابة أي حرف او شكل يجب ان يكون بداخل المصفوفة التي حجمها 8×5، بحيث يتم مكان كتابة النقطة المراد اضاءتها ١ و النقاط الاخرى 0.
بعد ذلك نقوم بتحويلها الى مصفوفة مكونة من 8-Bytes كالتالي:
و تكون كتابة كل صف من المصفوفة ضمن الكود بهذا الشكل
0b00000
مع مراعاة ترتيب الرقمين 0 للمطفئ و 1 للمضاء
مثال لكتابتها ضمن الكود وليكن لحرف الالف
توصيل شاشة الـ LCD :
الكود البرمجي للأردوينو
قم برفع البرنامج التالي على الاردوينو:
و يوجد نسخة أخرى اسفل الموضوع و بالمرفقات
توضيح رسم الاحرف بالمصفوفات
مع مراعات ترتيب ارقام كل مصفوفة
النتيجة بعد رفع الكود على الاردوينو
لتحميل الملفات التالية
- محاكاة DNS
- كود ino
- كود hex
يرجى الضغط هنا
أرجو أن أكون وفقت بالشرح و التوضيح
تحياتي لكم
هل حاولت من قبل عرض الحروف العربية أو الرموز الخاصة بك على شاشة LCD كما نفعل في اللغة الإنجليزية , وهل حاولت أيضا فهم كيف يتم عرض الاحرف عليها او رسم بعض الأشكال الخاصة بك؟!
في هذا المشروع سنقوم بكتابة كلمة باللغة العربية عن طريق الرسم على شاشة LCD.
ولكي نقوم بطباعة الحروف العربية او الرموز الخاصة بنا على شاشة العرض LCD يجب ان نتعرف على ذاكرة ال CG-RAM لشاشة LCD .
ذاكرة CG-RAM
CG-RAM هي العنصر الأساسي لعملية انشاء الرسومات و الاحرف الخاصة بك على شاشة العرض LCD، بحيث تقوم بتخزين الرسومات التي نقوم بإنشائها في الكود.
– حجم هذه الذاكرة هو 64 بايت, بحيث يمكنها تخزين 8 احرف في وقت واحد، وكل حرف يتكون من 8 بايت
– يبدأ عنوان الذاكرة CG-RAM من (0x40 Hex (64 decimal.
في الجدول التالي يتم توضيح عناوين الاحرف و الرسومات التي سيتم إنشاءها وأوامر الطباعة الخاصة بهم:

في الجدول اعلاه ستلاحظ العنوان الذي سيبدأ به كل رمز خاص بك مع امر الطباعة الخاص به. مثلا اول حرف يتم انشاؤه وتخزينه على الموقع من 0x40 الى 0x47 في الذاكرة، ثم يتم طباعته على شاشة الـ LCD بواسطة ارسال الامر 0 الى شاشة الـ LCD. والحرف الثاني يبدأ تخزينه من الموقع 0x48 الى 0x4F ويتم طباعته من خلال ارسال الامر 1 الى الشاشة.
كيف يتم إنشاء أحرف مخصصة في CG-RAM
يتم تشكيل كل حرف او رمز على الشاشة في مصفوفة تكون ابعادها 8×5، حيث ان 5 تمثل عدد الاعمدة و 8 تمثل عدد الصفوف.

اولا: قم برسم مصفوفة 8*5 بكسل، ثم قم برسم الرمز او الحرف الخاص بك في داخل المصفوفة، ثم قم بوضع على كل خلية ملونة قيمة 1 , و قيمة صفر على الخلايا الأخرى.
فمثلا اذا اردنا ان ننشئ حرف ا في هذه المصفوفة يتم انشاؤه بالطريقة التالية:

يتم استبدل كل لون احمر بالرقم ١ و المربع الغير ملون (بحسب الصورة اعلاه - اخضر )نستبدله ب 0.
وبهذه الطريقة، عندما نريد كتابة أي حرف او شكل يجب ان يكون بداخل المصفوفة التي حجمها 8×5، بحيث يتم مكان كتابة النقطة المراد اضاءتها ١ و النقاط الاخرى 0.
بعد ذلك نقوم بتحويلها الى مصفوفة مكونة من 8-Bytes كالتالي:

و تكون كتابة كل صف من المصفوفة ضمن الكود بهذا الشكل
0b00000
مع مراعاة ترتيب الرقمين 0 للمطفئ و 1 للمضاء
مثال لكتابتها ضمن الكود وليكن لحرف الالف
PHP:
byte A[8] = {
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00000,
};
توصيل شاشة الـ LCD :

الكود البرمجي للأردوينو
قم برفع البرنامج التالي على الاردوينو:
و يوجد نسخة أخرى اسفل الموضوع و بالمرفقات
PHP:
#include <LiquidCrystal.h>
//www.altonji.net
//منتدى العلوم و الهندسة
//syria
//+963935888592
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte A[8] = {
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
0b00100,
};
byte L[8] = {
0b00001,
0b00001,
0b00001,
0b00001,
0b11111,
0b00000,
0b00000,
0b00000,
};
byte T[8] = {
0b01110,
0b00000,
0b00100,
0b00100,
0b11111,
0b00000,
0b00000,
0b00000,
};byte O[8] = {
0b00000,
0b00000,
0b01110,
0b01010,
0b01111,
0b00010,
0b01110,
0b00000,
};
byte N[8] = {
0b00000,
0b00100,
0b00001,
0b00001,
0b11111,
0b00000,
0b00000,
0b00000,
};
byte J[8] = {
0b00000,
0b00000,
0b01100,
0b00010,
0b11111,
0b00000,
0b00100,
0b00000,
};
byte I[8] = {
0b00000,
0b00000,
0b00000,
0b10011,
0b11110,
0b00000,
0b01100,
0b00000,
};
void Word1()
{
lcd.setCursor(4,0);
lcd.write(7);
lcd.write(byte(0));
lcd.write(1);
lcd.write(2);
lcd.write(3);
lcd.write(4);
lcd.write(5);
lcd.write(6);
lcd.write(7);
lcd.setCursor(2,1);
lcd.print("AHMAD-ALTONJI");
lcd.write(7);
}
void Logo1()
{
lcd.setCursor(7,0);
}
void setup() {
lcd.createChar(0, I); // char (ـي)
lcd.createChar(1, J); //char ( ـجـ )
lcd.createChar(2, N); //char (نـ)
lcd.createChar(3, O); //char (ـو)
lcd.createChar(4, T); //char (ـتـ)
lcd.createChar(5, L); //char (لـ)
lcd.createChar(6, A); //char (ا)
lcd.begin(16, 2);
}
void loop() {
Word1();
}
توضيح رسم الاحرف بالمصفوفات

مع مراعات ترتيب ارقام كل مصفوفة

النتيجة بعد رفع الكود على الاردوينو

لتحميل الملفات التالية
- محاكاة DNS
- كود ino
- كود hex
يرجى الضغط هنا
أرجو أن أكون وفقت بالشرح و التوضيح
تحياتي لكم
المرفقات
التعديل الأخير: