اشکال کاراکتر سفارشی برای نمایشگر LCD کاراکتری

طراحی و تنظیمات
کد خروجی
اشکال کاراکتر سفارشی برای نمایشگر LCD کاراکتری ، اگر قبلاً با نمایشگر LCD کاراکتری روی آردوینو کار کرده باشید، حتماً میدانید که کتابخانه LiquidCrystal فقط حروف انگلیسی، اعداد و چند علامت محدود را پشتیبانی میکند. برای نمایش آیکون قلب، پیکان، باتری یا هر شکل دلخواه دیگری، باید سراغ اشکال کاراکتر سفارشی برای نمایشگر LCD کاراکتری بروید. ابزار همین صفحه دقیقاً برای همین کار طراحی شده است: با کلیک روی یک شبکه نقطهای، الگوی دلخواهتان را میسازید و ابزار بهصورت خودکار کد آماده تولید میکند. در این ابزار میتوانید بین اتصال موازی یا اتصال I2C به آردوینو یکی را انتخاب کنید، خروجی را با کتابخانه LiquidCrystal بسازید و در نهایت با تابع createChar کاراکتر ساختهشده را روی نمایشگر LCD کاراکتری نشان دهید.
این ابزار چیست و چه کاربردی دارد؟
نمایشگرهای مبتنی بر تراشه HD44780 (همان LCD کاراکتری معروف که در اندازه 16×2 یا 20×4 پیدا میشود) اجازه میدهند تا 8 کاراکتر سفارشی در حافظه CGRAM خودشان ذخیره کنید. هر کاراکتر یک جدول 5 در 8 نقطهای است؛ یعنی 8 ردیف که هر ردیف از 5 پیکسل تشکیل شده و هر پیکسل یا روشن است یا خاموش.
این ابزار همین شبکه 5×8 را بهصورت بصری در اختیارتان میگذارد. با کلیک روی نقطههایی که میخواهید روشن باشند، الگوی کاراکتر سفارشی LCD خود را میسازید و ابزار همزمان مقدار باینری یا هگزادسیمال هر ردیف را محاسبه میکند. خروجی نهایی یک کد کامل و کپیپیستشدنی است که کتابخانه LiquidCrystal را فراخوانی میکند، پایهها را تنظیم میکند، آرایه کاراکتر را میسازد و در انتها با تابع createChar و دستور lcd.write کاراکتر را روی صفحه نشان میدهد.
نحوه استفاده از ابزار
استفاده از ابزار طراحی کاراکتر دلخواه در LCD چند مرحله ساده دارد که هرکدام را جداگانه توضیح میدهیم.
مرحله 1: طراحی الگو روی شبکه
اولین کاری که باید انجام دهید، طراحی شکل روی جدول نقطهای است. با هر کلیک، یک نقطه رنگی (روشن) میشود و با کلیک دوباره خاموش میشود. دو دکمه کمکی هم زیر جدول قرار دارد: دکمه «پاک کردن» کل شبکه را صفر میکند تا از نو شروع کنید، و دکمه «معکوس کردن» وضعیت روشن و خاموش تمام نقاط را برعکس میکند. این گزینه وقتی مفید است که میخواهید سریع نسخه منفی یک الگو را ببینید، بدون آنکه تکتک نقطهها را دستی عوض کنید.
مرحله 2: انتخاب رنگ نمایشگر
گزینه سبز یا آبی صرفاً برای هماهنگی پیشنمایش با رنگ واقعی بکلایت نمایشگر LCD کاراکتری شماست و هیچ تأثیری در کد نهایی ندارد؛ فقط کمک میکند تصمیمگیری درباره خوانایی طرح راحتتر باشد.
مرحله 3: انتخاب رابط اتصال
این یکی از مهمترین تنظیمات ابزار است، چون مستقیماً روی سیمکشی و کد خروجی اثر میگذارد:
- اتصال موازی: نمایشگر با شش سیم داده (RS، E و چهار پایه D4 تا D7) مستقیماً به پایههای دیجیتال آردوینو وصل میشود. کد خروجی در این حالت کتابخانه LiquidCrystal استاندارد را با تنظیم پایهها فراخوانی میکند، مثلاً
LiquidCrystal lcd(12, 11, 5, 4, 3, 2).

- اتصال I2C: در این حالت یک ماژول کوچک تبدیلکننده I2C، که معمولاً پشت خود LCD نصب میشود، استفاده میشود و تنها با چهار سیم (VCC، GND، SDA و SCL) به آردوینو وصل میگردد. این روش سیمکشی را بسیار سادهتر میکند و پایههای دیجیتال بیشتری برای بقیه پروژه آزاد میگذارد. برای اتصال I2C به آردوینو حتماً باید کتابخانه LiquidCrystal_I2C را از قبل در آردوینو IDE نصب کرده باشید، چون این کتابخانه بهصورت پیشفرض همراه IDE نمیآید.

مرحله 4: انتخاب نوع کد داده
هر ردیف از الگوی کاراکتر را میتوانید به دو شکل ببینید. حالت باینری، مثل B00001110، خودِ الگوی نقطهها را مستقیماً نشان میدهد و برای تازهکارها خواناتر است. حالت هگزادسیمال، مثل 0x0E، کوتاهتر است و برخی برنامهنویسان حرفهای آن را ترجیح میدهند. این انتخاب کاملاً سلیقهای است و هیچ تأثیری روی عملکرد نهایی کاراکتر سفارشی LCD ندارد؛ کامپایلر هر دو را به یک شکل ترجمه میکند.
مرحله 5: کپی کردن کد خروجی
بعد از اینکه طرح، رنگ، رابط اتصال و نوع داده را مشخص کردید، در پنل سمت راست کد کامل آماده را میبینید. این کد شامل فراخوانی کتابخانه LiquidCrystal، آرایه byte مربوط به کاراکتر ساختهشده، فراخوانی تابع createChar در بخش setup و در نهایت نمایش کاراکتر با lcd.write است. کافی است روی دکمه «کپی کد» بزنید و آن را مستقیماً داخل اسکچ آردوینوی خودتان جایگذاری کنید.
مثالهای کاربردی
بهترین راه یادگیری کار با این ابزار، امتحان کردن چند طرح واقعی است. سه نمونه زیر را میتوانید مستقیم روی شبکه پیاده کنید و نتیجه را در کتابخانه LiquidCrystal آزمایش کنید.
مثال 1: آیکون قلب
الگوی ردیفبهردیف از بالا به پایین:
00000 → 01010 → 11111 → 11111 → 11111 → 01110 → 00100 → 00000
با فعال کردن این نقاط و انتخاب نوع داده باینری، خروجی شما آرایهای است که مستقیماً با lcd.createChar(0, heart) قابل استفاده است.
مثال 2: آیکون زنگ اعلان
الگو: 00100 → 01110 → 01110 → 01110 → 11111 → 00000 → 00100 → 00000
این طرح برای پروژههایی مثل نمایش هشدار یا اعلان روی نمایشگر LCD کاراکتری کاربرد زیادی دارد.
مثال 3: نماد باتری پر
الگو: 01110 → 11111 → 11111 → 11111 → 11111 → 11111 → 11111 → 11111
برای پروژههای مانیتورینگ ولتاژ یا وضعیت شارژ، میتوانید چند حالت باتری (خالی، نیمه، پر) بسازید و بر اساس مقدار خواندهشده از سنسور، کاراکتر مناسب را با تابع lcd.write نمایش دهید.
نکات مهم و اشتباهات رایج
حداکثر 8 کاراکتر همزمان: نمایشگرهای HD44780 فقط اجازه ذخیره 8 کاراکتر سفارشی همزمان (با اندیس 0 تا 7) را میدهند. اگر بیشتر از این تعداد نیاز دارید، باید در طول اجرای برنامه کاراکترها را جایگزین کنید.
فراخوانی createChar پیش از استفاده: همیشه باید تابع createChar را در بخش setup و پیش از هر lcd.write فراخوانی کنید، وگرنه کاراکتر درستی روی نمایشگر LCD کاراکتری دیده نمیشود.
اشتباه در شماره پایهها: اگر از اتصال موازی استفاده میکنید، حتماً شماره پایههای داخل کد تولیدشده را با سیمکشی واقعی خودتان مطابقت دهید؛ در غیر این صورت نمایشگر چیزی نشان نمیدهد یا کاراکترهای درهم نمایش میدهد.
آدرس اشتباه در اتصال I2C: در اتصال I2C به آردوینو، آدرس ماژول (معمولاً 0x27 یا 0x3F) ممکن است بین ماژولهای مختلف فرق کند. اگر نمایشگر روشن نمیشود، یک اسکچ I2C Scanner اجرا کنید تا آدرس درست را پیدا کنید.
کنتراست پایین: در اتصال موازی، پتانسیومتر کنتراست حتماً باید وصل باشد؛ بدون آن ممکن است هیچچیز روی صفحه دیده نشود، حتی اگر کد کاملاً درست باشد.
فراموشکردن نصب کتابخانه I2C: کتابخانه LiquidCrystal_I2C بهصورت پیشفرض همراه آردوینو IDE نصب نمیشود؛ اگر رابط اتصال را روی I2C بگذارید و این کتابخانه را نصب نکرده باشید، کد اصلاً کامپایل نمیشود.
سوالات متداول
کد تولیدشده بر پایه کتابخانه استاندارد LiquidCrystal است که روی بیشتر بردهای سازگار با آردوینو (نانو، مگا، پرو مینی و…) بدون تغییر کار میکند؛ فقط کافی است شماره پایهها را متناسب با برد خودتان تنظیم کنید.
این معمولاً به این معناست که createChar قبل از lcd.write فراخوانی نشده یا شماره اندیس کاراکتر (بین 0 تا 7) اشتباه وارد شده است.
بله، تا سقف 8 کاراکتر میتوانید همزمان تعریف کنید و هرکدام را با اندیس مخصوص خودش (0 تا 7) در lcd.write(byte(index)) صدا بزنید.
این گزینه فقط جنبه بصری دارد و کمک میکند طرح را همانند رنگ واقعی نمایشگر خودتان ببینید؛ در کد نهایی هیچ تأثیری ندارد.
عملاً چیز اضافهای لازم نیست؛ فقط ماژول I2C روی پشت LCD نصب میشود و با چهار سیم VCC، GND، SDA و SCL به آردوینو وصل میگردد. کتابخانه LiquidCrystal_I2C هم باید از قبل نصب شده باشد.
خیر، این دو صرفاً دو نمایش متفاوت از یک عدد هستند و کامپایلر هر دو را به یک شکل ترجمه میکند؛ انتخاب کاملاً سلیقهای است.
جمعبندی
اشکال کاراکتر سفارشی برای نمایشگر LCD کاراکتری یکی از آن قابلیتهایی است که پروژههای آردوینویی شما را از حالت معمولی خارج میکند؛ چه بخواهید آیکون هوشمندانهای برای وضعیت سیستم نشان دهید، چه فقط یک شکلک کوچک برای زیبایی نمایشگر LCD کاراکتری خودتان بسازید. با این ابزار دیگر نیازی نیست خودتان دستی مقدار باینری هر ردیف را حساب کنید؛ کافی است طرح دلخواهتان را در شبکه رسم کنید، رابط اتصال (موازی یا اتصال I2C به آردوینو) و نوع خروجی کد را انتخاب کنید، و کد آماده مبتنی بر کتابخانه LiquidCrystal را همراه با فراخوانی تابع createChar در پروژهتان کپی کنید.
اگر تازه با نمایشگر LCD کاراکتری کار میکنید، پیشنهاد میشود ابتدا با اتصال موازی شروع کنید تا مفهوم پایهها دستتان بیاید، و بعد برای پروژههای نهایی به سراغ اتصال I2C بروید تا سیمکشیتان تمیزتر شود.