پروژه الکترونیکپروژه های آردوینوپروژه های بازی و سرگرمی

ماشین حساب لمسی با LCD TFT و آردوینو (راه اندازی صفحه نمایش تاچ)

سلام. پروژه ماشین حساب لمسی با LCD TFT و آردوینو (راه اندازی صفحه نمایش لمسی) را آماده کردیم.

راه اندازی ماشین حساب لمسی با ال سی دی TFT

آردوینو همیشه به آسان کردن و جذاب کردن پروژه ها کمک کرده است. برنامه نویسی یک صفحه نمایش ال سی دی لمسی شاید سخت بنظر برسد، با وجود کتابخانه ها و شیلد های Arduino این کار بسیار ساده شده است. در این پروژه از یک صفحه نمایش ال سی دی 2.4 اینچی TFT را به برد آردوینو متصل میکنیم تا یک ماشین حساب لمسی بسازیم که میتواند اعمال ضرب ، تقسیم ، حمع و تفریق را انجام دهد.

در صورتی که به یک پروژه ماشین حساب ساده نیاز دارید مطلب زیر را مشاهده کنید :

قطعات مورد نیاز

  1. برد آردوینو Uno
  2. شیلد ال سی دی 2.4 اینچی TFT
  3. باتری 9 ولت

ماژول صفحه نمایش 2.4 اینچی LCD TFT

قبل از اینکه ما وارد پروژه شویم، مهم است بدانیم که ماژول LCD TFT 2.4 چگونه کار می کند و چه انواعی دارد. بگذارید نگاهی بیندازیم به این ماژول صفحه نمایش LCD T4 2.4 اینچی.

ماژول صفحه نمایش 2.4 اینچی LCD TFT 

همانطور که می بینید 28 پین وجود دارد که کاملاً در برد آردوینو Uno و برد آردوینو Mega جای می گیرد. توضیحات کوتاهی از این پین ها در جدول زیر آورده شده است.

توضیحات پین های شیلد LCD لمسی TFT

همانطور که می بینید پین ها را می توان در چهار طبقه بندی اصلی LCD Command Pins ، LCD Data Pins ، Pin Card SD و Power Pins طبقه بندی کرد، بنابراین لازم نیست که درباره کار دقیق این پین ها اطلاعات زیادی داشته باشیم زیرا تمامی کار ها توسط کتابخانه آردوینو انجام میشود.

همچنین می توانید شکاف کارت حافظه SD را در پایین تصویر ماژول که در بالا آورده شده است ببینید ، با استفاده از این ویژگی میتوانید تصاویر bmp را نمایش دهید.

نکته مهم دیگر که باید به آن توجه کنید ، رابط کاربری شما است. انواع مختلفی از ماژول های TFT در بازار وجود دارد. از ماژول اصلی Adafruit TFT LCD گرفته تا انواع ارزان قیمت چینی آن. برنامه ای که کاملاً برای شیلد اصلی Adafruit کار کند ممکن است برای ال سی دی های ضعیف چینی کار نکند. بنابراین ،

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

کالیبره کردن TFT LCD برای صفحه لمسی

اگر قصد استفاده از عملکرد صفحه لمسی ماژول TFT LCD خود را دارید ، باید آن را کالیبره کنید تا درست کار کند. صفحه LCD بدون کالیبراسیون ممکن است بد کار کند، به عنوان مثال ممکن است شما در یک مکان لمس کنید و TFT در مکان دیگری پاسخ دهد. کالیبراسیون برای تمامی ال سی دی ها یکسان نخواهد بود و شما باید خودتان این کار را انجام دهید.

بهترین راه کالیبراسیون استفاده از برنامه نمونه کالیبراسیون همراه با کتابخانه یا استفاده از سریال مانیتور آردوینو است. با این حال ما در این پروژه از دکمه های بزرگ استفاده میکنیم بنابراین امکان بروز خطای جدی بسیار کم است. اما ما میگوییم که چطور میتوانید ال سی دی خود را کالیبره کنید.

نحوه اتصال TFT LCD لمسی به آردوینو

صفحه نمایش LCD TFT 2.4 اینچی یک شیلد آردوینو است. شما می توانید مستقیماً نمایشگر LCD را روی Arduino Uno فشار دهید و این کاملاً با پین ها مطابقت دارد و به خوبی متصل میشود. LCD مونتاژ شده در UNO در زیر چیزی شبیه به این خواهد بود.

نحوه اتصال TFT LCD لمسی به آردوینو
نحوه اتصال TFT LCD لمسی به آردوینو

آموزش برنامه نویسی آردوینو برای ال سی دی لمسی

ما در این پروژه از کتابخانه SPFD5408 استفاده میکنیم تا ماشین حساب ما کار کند. این کتابخانه یک Library اصلاح شده در Adafruit است و میتواند به صورت یکپارچه با ماژول LCD TFT کار کند. این کتابخانه به همراه کد کامل در انتهای صفحه قرار داده شده است.

مطلب پیشنهادی :
دانلود کتابخانه ال سی دی لمسی SPFD5408 برای آردوینو (Library LCD TFT)

توجه: نصب این كتابخانه در Arduino IDE بسیار مهم است تا برنامه شما بدون خطا کامپایل شود.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

برای کار این برنامه به سه کتابخانه نیاز داریم. هر سه این کتابخانه در در یک فایل ZIP در فایل دانلودی پایین صفحه موجود است.

#include <SPFD5408_Adafruit_GFX.h>    // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>

همانطور که گفته شد ما نیاز داریم به کالیبره کردن صفحه نمایش ال سی دی لمسی.  متغیرهای TS_MINX ، TS_MINY ، TS_MAXX و TS_MAXY کالیبراسیون صفحه را انجام میدهند. اگر احساس می کنید کالیبراسیون رضایت بخش نیست ، می توانید تغییراتی را ایجاد کنید.

#define TS_MINX 125
#define TS_MINY 85
#define TS_MAXX 965
#define TS_MAXY 905

از آنجا که می دانیم صفحه نمایش TFT LCD می تواند رنگ های زیادی را نمایش دهد، همه این رنگ ها باید در مقدار هگز تعریف شوند.

#define WHITE   0x0000 // مشکی -> سفید  
#define YELLOW    0x001F // آبی -> زرد 
#define CYAN     0xF800 // قرمز -> آبی سیر
#define PINK   0x07E0 // سبز -> صورتی 
#define RED    0x07FF // آبی سیر -> قرمز 
#define GREEN 0xF81F // صورتی -> سبز
#define BLUE  0xFFE0 // زرد -> آبی 
#define BLACK   0xFFFF // سفید -> مشکی

اکنون می توانیم وارد قسمت برنامه نویسی شویم. سه بخش در این پروژه آردوینو نقش دارد :

  1. ایجاد یک رابط کاربری برای ماشین حساب
  2. تشخیص دکمه های لمس شده
  3. نمایش اعداد و محاسبه نتیجه

1. ایجاد یک رابط کاربری برای ماشین حساب

در این قسمت میتوانید از خلاقیت خود نهایت استفاده را ببرید. ما به سادگی یک طرح از ماشین حساب با 16 دکمه و یک صفحه نمایش را ایجاد کرده ایم. کتابخانه های موجود به شما کمک میکنند انواع خطوط ، مستطیل ها ، دایره ها ، کاراکتر ها و… را به آسانی با هر رنگی ترسیم کنید.

ایجاد یک رابط کاربری برای ماشین حساب

ما برای این پروژه از خط ها و چهارگوش ها استفاده کرده ایم. هر دکمه دارای عرض و ارتفاع 60 پیکسل است. ظاهر این پروژه شبیه به ماشین حساب های دهه 60 شده است.

//باکس نتیجه
  tft.fillRect(0, 0, 240, 80, CYAN);

 //ردیف اول
  tft.fillRect  (0,260,60,60,RED);
  tft.fillRect  (0,200,60,60,BLACK);
  tft.fillRect  (0,140,60,60,BLACK);
  tft.fillRect  (0,80,60,60,BLACK);
بقیه کد در فایل انتهای صفحه قرار دارد.

2. تشخیص دکمه های لمس شده

قسمت دیگر چالش بر انگیز این پروژه تشخیص منطقه لمس کاربر است. هر بار که کاربر جایی را لمس کند ما میتوانیم موقعیت x و y پیکسلی را که لمس کرده است دریافت کنیم. این مقادیر با استفاده از  در سریال مانیتور نمایش داده میشوند.

کار دیگر چالش برانگیز تشخیص لمس کاربر است. هر بار که کاربر جایی را لمس می کند ، ما قادر خواهیم بود موقعیت X و Y پیکسلی را که لمس کرده است ، در کجا قرار دهیم. این مقدار را می توان با استفاده از println مطابق شکل زیر بر روی مانیتور سریال مشاهده کرد.

TSPoint p = waitTouch();
X = p.y; Y = p.x;
Serial.print(X); Serial.print(','); Serial.println(Y);// + " " + Y);

از آنجا که ما هر دکمه را با طول و عرض 60 پیکسل طراحی کرده ایم و دارای چهار ردیف و ستون ها است از (0) شروع می کنیم. موقعیت هر دکمه را می توان همانطور که در تصویر زیر نشان داده شده است پیش بینی کرد.

تشخیص دکمه های لمس شده

اما در حالت عملی بدین صورت نخواهد بود و اختلاف زیادی بین مقدار مورد انتظار و مقدار واقعی وجود دارد.

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

آموزش برنامه نویسی آردوینو برای ال سی دی لمسی

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

حالا چون موقعیت همه صندوق ها را می دانیم. هنگامی که یک کاربر با هر جایی لمس کند می توانیم با مقایسه مقادیر (X، Y) خود با مقادیر هر جعبه همانطور که در زیر مشاهده کرده است ، جایی را لمس کرده است.

if (X<105 && X>50) //تشخیص دکمه ها در ردیف دوم
  {
    if (Y>0 && Y<85)
    {Serial.println ("Button 0"); //دکمه 0 فشرده شده است
    if (Number==0)
    Number=0;
    else
    Number = (Number*10) + 0; 
    }

     if (Y>85 && Y<140) 
    {Serial.println ("Button 2"); //دکمه 2 فشرده شده است
     if (Number==0)
    Number=2;
    else
    Number = (Number*10) + 2; //Pressed twice
    }
بقیه کد در فایل انتهای صفحه قرار دارد.

3. نمایش اعداد و محاسبه نتیجه

مرحله آخر این پروژه محاسبه نتیجه و نمایش آن در نمایگشر LCD TFT است. این ماشین حساب آردوینو میتوانید اعمال چهارگانه جمع ، تفریق ، ضرب و تقسیم را با دو عدد انجام دهد. این دو عدد به عنوان متغیر های “Num1” و “Num2” نامگذاری شده اند. متغیر Number از متغیر های “Num1” و “Num2” مقدار میگیرد و میدهد و نتیجه را نیز به همراه می آورد.

هنگامی که یک دکمه را فشار می دهید ، یک رقم به عدد اضافه می شود. وقتی دکمه دیگری فشرده می شود ، رقم قبلی با 10 ضرب می شود و عدد جدید به آن اضافه می شود. به عنوان مثال ، اگر 8 را فشار داده و سپس 5 را فشار داده و سپس 7 را فشار دهید. ابتدا متغیر 8 سپس (8 * 10) + 5 = 85 سپس (85 * 10) +7 = 857 را نگه می دارد.

if (Y>192 && Y<245)
    {Serial.println ("Button 8");
     if (Number==0)
    Number=8;
    else
    Number = (Number*10) + 8;
    }

هنگامی که ما هر عملیاتی مانند جمع را انجام می دهیم ، وقتی کاربران دکمه + را فشار می دهند، مقدار از Number به Num1 منتقل می شود و سپس Number به صفر می رسد تا آماده شود تا ورودی را برای عدد دوم بگیرد.

با فشار دادن هر عدد، مقدارآن به Num2 ارسال می شود و سپس محاسبه مربوط انجام می شود و نتیجه دوباره در متغیر “Number” ذخیره می شود.

سرانجام این مقدار در LCD نمایش داده می شود.

فیلم و نحوه کار با ماشین حساب لمسی آردوینو

کار این ماشین حساب لمسی Arduino ساده است. شما باید کد موجود در فایل دانلودی را در برد آردوینوی خود بارگذاری کنید و سپس همه چیز انجام شده است !

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

فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

فیلم عملکرد مدار : کلیک کنید !

موارد موجود در فایل : سورس کامل ، کتابخانه مورد نیاز

دانلود فایل های پروژه

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

2 نظر

  1. سلام
    محبت شما قابل ستایش است

    بسیار آسان و مفید توضیح دادین

    بهترین ها را از خداوند براتون آروزمندم.

    1. سلام جناب، خوشحالم که راضی بودین، نظر لطف شماست.
      موفق باشید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *