راهنمای فارسی نویسی روی نمایشگرهای پیکسلی در آردوینو

نوشته شده توسط آی دریمز در 9 آگوست 2018

چند وقت پیش کتابخانه ای برای فارسی نویسی روی نمایشگرهای پیکسلی در آردوینو معرفی کردم. برخی از دوستان برای استفاده از این توابع دچار مشکل شدند که در این آموزش به شرح نحوه استفاده از این توابع می پردازیم.

نکته ای که همین ابتدا لازم به ذکر است اینکه در این روش نیاز هست کتابخانه نمایشگرِ شما حتماً تابعی به نام writepixel داشته باشد تا بتوان در هر نقطه از نمایشگر، پیکسلی با رنگ دلخواه رسم کرد. بیشتر کتابخانه های مطرحِ نمایشگرها (مانند Adafruit SSD1306) این تابع را دارند و جای نگرانی نیست.

برای شروع کار ابتدا این فایل را دریافت نموده و آن را با آردوینو باز نمایید. در این مثال من از یک نمایشگر 64×128 پیکسل با درایور SSD1306 و رابط SPI استفاده کردم که بسیار معمول هست و در بازار ایران به وفور یافت می شود. در صورت تمایل می توانید از سایر نمایشگر های پیکسلی مانند نمایشگر 5110 نیز استفاده کنید.

همان طور که مشاهده می کنید من از کتابخانه های Adafruit SSD1306 و Adafruit GFX library برای نمایش نوشته ها و رسم اشکال استفاده کردم. پس لازم است این دو کتابخانه مطابق تصویر به آردوینو اضافه نمایید.

در پنجره Library Manager و کادر جستجو بالای آن (مطابق تصویر زیر)، نام کتابخانه ای که می خواهید نصب کنید بنویسید. بلافاصله در لیست زیر کادر جستجو، کتابخانه مورد نظر نمایش داده می شود. آن را انتخاب و کلید Install بزنید. بعد از زمان اندکی مراحل نصب به اتمام می رسد و کتابخانه به لیست کتابخانه های آردوینو اضافه خواهد شد. (این مراحل را برای نصب هر دو کتابخانه اشاره شده انجام دهید.)

اگر تمام مراحل را درست انجام داده باشید می توانید با زدن کلید کامپایل (کلیدی که در تصویر زیر با رنگ زرد هایلایت شده) از صحت نصب کتابخانه ها مطمئن شوید.

در ادامه به بررسی کدها می پردازیم، همان طور که در خطوط 18 تا 21 کدها مشاهده می کنید نوع اتصال نمایشگر من با آردوینو، از طریق SPI می باشد. اگر نمایشگر شما از نوع i2c است این قسمت را کامنت کنید و خطوط 25 و 26 را از کامنت خارج کنید.

در خطوط 11 تا 15 برای راحتی کار، چند تابع کوچک و دم دستی تعریف کردیم که باعث عملکرد سریعتر برنامه نویس خواهد شد. همان طور که ابتدای این آموزش توضیح دادم تمام مراحل نوشتن کاراکترهای فارسی روی نمایشگر توسط تابع writepixel در خط 11 انجام می شود.

اگر از نمایشگر و کتابخانه ای غیر از کتابخانه Adafruit SSD1306 استفاده می کنید حتما این خط را ویرایش کنید. در خط 12 عرض نمایشگر مورد استفاده تان را تعریف کنید. چون من از نمایشگر 64×128 پیکسل استفاده کردم در اینجا، هم می توانم عدد 128 را به عنوان عرض نمایشگر وارد کنم و هم می توانم، در فایل نصب شده کتابخانه Adafruit SSD1306 که بصورت پیش فرض در مسیر (C:\Users\ramin\Documents\Arduino\libraries\Adafruit_SSD1306\Adafruit_SSD1306.h) قابل مشاهده است (خطوط 73 تا 75)، سایز نمایشگر را تغییر دهم تا کتابخانه بصورت خودکار و با استفاده از تابع width عرض نمایشگر را در هر کجای برنامه برایم فراهم کند. خطوط 13 تا 15 به ترتیب برای تراز بندی وسط، راست و چپ متن مورد استفاده قرار می گیرد.

در پایان برای نمایش متن فارسی روی نمایشگر، از خطوط 158 و 161 استفاده می کنیم. برای نمایش اعداد لازم است رشته اعداد را ابتدا معکوس کنید که این کار توسط تابع strreverse انجام می شود. در انتها چون از کتابخانه Adafruit SSD1306 استفاده کردیم با استفاده از خط 164 خروجی را به نمایشگر می فرستیم.

امیدوارم توضیحات فوق، مفید بوده باشد. در صورت هر گونه مشکل یا سئوال لطفاً در قسمت نظرات مطرح بفرمایید. اگر این کد زمان توسعه پروژه شما را کاهش داد و به شما کمک کرد من را به یک فنجان قهوه، مهمان کنید 🙂

22 دیدگاه دسته‌بندی : آردوینو, آموزش

22 دیدگاه برای “راهنمای فارسی نویسی روی نمایشگرهای پیکسلی در آردوینو”

  1. محمد رضا گفت:

    با سلام
    ممنون از زحمات و توضیح بسیار خوب شما.
    آیا فونت تعریف شده فقط 8*8 هست؟ چطور میشه فونت رو با سایز بزگتر نوشت؟ به غیر تعریف فونت در سایز جدید آیا راهی هست؟

    • رامین گفت:

      سلام
      فعلا فقط فونت 8 در 8 تعریف شده و برای فونت های بزرگتر نیاز هست تغییراتی در کدها اعمال بشه.

  2. em گفت:

    واقعا سپاس از شما دوست عزیز بسیار عالی بود
    فقط اگر میشود روش ساخت فونت را هم یک توضیح بدین که برای طراحی فونت هم بشود کاری کرد

    • رامین گفت:

      خواهش می کنم.
      برای تغییر فونت نیاز به بازنویسی کدها هست و فعلا فرصتش مقدور نیست.

  3. arya گفت:

    سلام
    ببخشید در ارابه دوبعدی PeChar که نوشتید فونت ها را با چه نرم افزاری به ین hex ها بدیل کردید؟
    ممنون میشم راهنمایی ام کنید

    • رامین گفت:

      درود بر شما
      برای این کار نرم افزار های متعددی هست، کافیه عبارت 8×8 Dot matrix font generator را جستجو کنید.
      برای نمونه این سایت رو ببینید:
      http://dotmatrixtool.com

  4. رامتین گفت:

    سلام موقع اجرا خط 30 ارور می دهد علت چیست؟ چجوری میشه از این روش روی تابلو روان استفاده کرد؟

    • رامین گفت:

      سلام
      نمایشگر مورد استفاده شما با نمایشگری که بنده استفاده کردم (از نظر سایز) متفاوت است. خط 30 مربوط به ارتفاع نمایشگر هست.
      طبق توضیحات که در همین خط می بینید، باید این خط را با توجه به ارتفاع نمایشگر خود، در فایل “Adafruit_SSD1306.h” ویرایش کنید.

  5. رامتین گفت:

    سلام و تشکر از راهنمایی قبلی شما مشکل حل شد.
    میخواستم سایز فونت را به 16*16 تغییر بدم میتونید کمی راهنماییم کنید؟

    • رامین گفت:

      برای تغییر سایز، نیاز به باز طراحی و نوشتن مجدد کدها هست که پیچیدگی بالایی داره.

  6. رامتین گفت:

    من یکسری فونت دارم با نقشه مپ اونا ولی نمیدونم چطور به فرمت آردینو تبدیلش کنم میتونید این را چک کنید انجام بدهید؟
    https://uploadfiles.io/qdgrdm7y

  7. آرش گفت:

    سلام خسته نباشید ممنون از مطلب خوبتون
    میخواستم ببینم میتونم از کتابخونه openglcd با این پروژه برای نوشتن فارسی روی ال سی دی گرافیکی اسفاده کنم؟

    • رامین گفت:

      سلام
      اگر کتابخونه تون تابعی به اسم writepixel یا تابعی مشابه، برای نوشتن پیکسل روی صفحه داشت امکان استفاده روی هر کتابخونه یا هر نوع نمایشگری رو خواهید داشت.

  8. صالح گفت:

    باسلام خدمت تیم پرقدرت آی دریمز!
    دمتتون گرم خیلی ممنون رنج زیادی رو از ما کم کردین! خدا خیرتون بده!
    فقط یه سؤالی: میشه راهنماییم کنین که چجوری میشه فونت های فارسی رو بزرگش کرد؟
    با تشکر…

    • آی دریمز گفت:

      سلام
      این کتابخانه بر اساس فونت 8 در 8 نوشته شده و برای فونت های بزرگتر نیاز هست اصلاحات زیادی در اون انجام بشه که فعلا فرصتش نیست.
      یه راه جایگزین استفاده از کتابخانه جدیدی هست که به تازگی معرفی کردم و قابلیت تغییر فونت و سایز رو هم داره.

  9. امیرحسین رضایی گفت:

    باسلام و خسته نباشید ببخشید امکانش هست یه توضیح مختصری بدید که چیجوری داخل lcd 2*16 اینو استفادش کنم؟

  10. مسعود گفت:

    سلام . کد های اسکی کارکتر های فارسی در آردینو مگه متفاوته
    من روی keil کتابخانه رو اجرا کردم کد هایی که خروجی میده برای جدول فونت شما همخوانی نداره .

  11. امین گفت:

    با سلام آیا کسی موفق شده به غیر از فونت دیفالت از فونت بزرگتری هم برای نوشتن متن فارسی استفاده کنه؟

  12. علی گفت:

    سلام چطور میشه utf-8 رو به utf-16 یا یونکد تبدیل کرد
    و توی متغیر ریخت؟
    که بشه برای ارسال sms در sim800l استفاده کرد؟

دیدگاه‌تان را ارسال کنید ...


Time limit is exhausted. Please reload the CAPTCHA.