آردوینو Arduino Uno آموزش آردوینو نمایشگر LCD پروژه های آردوینو

ساخت فاصله سنج آلتراسونیک و شیلد نمایشگر lcd آردوینو

نوشته شده توسط حسین فهیمی

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

 


معرفی LCD KEYPAD Shiled آردوینو


این شیلد یکی از معروف ترین‌ شیلد‌هایی که تا به حال برای آردوینو Arduino عرضه شده. در این شیلد یک عدد LCD کاراکتری ۲*۱۶ به همراه ۶ عدد تاچ‌سوییچ تعبیه شده . پین‌های شماره ۴ ، ۵ ، ۶ ، ۷ ، ۸ ، ۹ و ۱۰ برروری آردوینو Arduino برای برقراری ارتباط و ارسال دیتا میان LCD و آردوینو Arduino استفاده میشه و فقط یک پین آنالوگ شماره A0 برای خواندن ۶ عدد تاچ‌سوییچ قرار گرفته بر روی شیلد استفاده میشه. شیلد LCD از تنظیم کانتراست پشتیبانی میکنه و بک‌لایت LCD هم به طور پیش‌فرض روشن است.

طراحی خوب این شیلد Shield باعث شده که به راحتی بتونین سنسورها، موتورها و …. را به راحتی به مابقی پین‌های آردوینو Arduino متصل کنین و اطلاعات آن‌ها را بر روی LCD مانیتور و توسط تاچ‌سوییچ‌ها عملیات لازم را بر روی آن‌ها انجام بدین. نمایش اطلاعات بر روی LCD و دیباگ کردن برنامه هنگامی که کامپیوتر در درسترس ندارین خیلی میتونه مفید باشه و این شیلد نیز برای انجام این کار بسیار مناسب است.

  • ولتاژ کاری ۵ ولت DC
  • ۵ عدد کلید برای کنترل منو  و …
  • کلید RST برای  ریست کردن آردوینو
  • یک عدد مولتی‌ترن برای  تنظیم کانتراست LCD
  • قابلیت دسترسی به I/O های آردوینو از روی شیلد
  • ابعاد ۸۰*۵۸ میلی‌متر
  • قابلیت کنترل بک‌لایت

بررسی پایه های LCD 


  • پین D4 تا D7 به منظور انتقال  دیتا استفاده می‌شود.
  • پین D8 برای انتخاب رجیسترها
  • پین D9 برای فعال کردن LCD
  • پین D10  برای کنترل بک‌لایت استفاده می‌شه به طوری که در برنامه اگر شما پین شماره ۱۰ آردوینو را در وضعیت HIGH قرار دهید  بک‌لایست LCD روشن می‌شود و در صورتی که در برنامه پین شماره D10 را در وضعیت LOW  قرار دهید ، LCD خاموش می‌شود.

 


معرفی ماژول SRF05


ماژول SRF05 یک سنسور فاصله التراسونیک (Ultrasonic Distance Sensor) می‌باشد که به شکل یک ماژول کوچک ارائه می‌شود و معمولاً در پروژه‌های الکترونیکی و رباتیک برای اندازه‌گیری فواصل استفاده می‌شود. این ماژول از تکنولوژی ارسال و دریافت امواج فراصوتی برای تعیین فاصله تا اشیاء استفاده می‌کند. ماژول SRF05 قادر به اندازه‌گیری فواصل در محدوده ۲ سانتیمتر تا حدود ۴ متر می‌باشد. این ماژول از رابط پالسی (Pulse Width Modulation) برای ارتباط با میکروکنترلر یا سیستم‌های الکترونیکی استفاده می‌کند.SRF05 دارای دقت نسبی برای اندازه‌گیری فواصل است و معمولاً دقت خوبی در اندازه‌گیری‌های نزدیک به اشیاء دارد. برای استفاده از ماژول SRF05، شما باید سیگنال‌های ترارسانی و دریافتی را به میکروکنترلر خود ارسال کنید و سپس زمانی که سیگنال فراصوتی به شیء ارسال شده و به ماژول برگشته، زمانی که طی می‌کند، را به عنوان فاصله تخمینی در نظر بگیرید. با استفاده از پین‌های مربوط به تنظیمات، می‌توانید فاصله حداقل را تنظیم کنید.ماژول SRF05 در پروژه‌های رباتیک، اتوماسیون خانگی، نقشه‌برداری روباتیک، و سایر برنامه‌هایی که نیاز به اندازه‌گیری دقیق فواصل دارند، مورد استفاده قرار می‌گیرد. این سنسور می‌تواند به شکل مؤثری به پروژه‌های الکترونیکی و رباتیک شما کمک کند.

  • رنج اندازه گیری :  حداقل  cm4 و حداکثر ۴ متر
  • ولتاژ مورد نیاز و جریان مصرفی : ۵ ولت – ۴ میلی آمپر
  • پایه ها : GND – VCC – Trig – Echo – Out

 


راه اندازی ماژول


مد ۱ :

۱) در این حالت ما ابتدا یه پالس با زمان ۲۰ میکرو ثانیه به پایه Trig  میدهیم.

۲) و بعد ماژول SRF05 پالس به سمت محیط ارسال میکند.

۳) و بعدش ما پالسی از پایه Echo دریافت میکنیم و با محاسبه طول این پالس و ضرب کردن در مقادیری…، فاصله SRF05 رو تا مانع پیدا میکنیم.

  • اگه طول پالسی که دریافت کردیم از ۳۰ میلی ثانیه بیشتر شد یعنی مانعی جلوی ماژول نیست.(تو برنامه نویسی تون بهتره لحاظش کنید.)
  •  طول پالسی که دریافت میکنیم بین ۱۰۰ میکرو ثانیه تا ۲۰ میلی ثانیه هستش.
  • پایه Out  هم به جایی وصل نیست……به جایی وصلش نکنید یه وقت…..بزارید بدون اتصال بمونه.

مد ۲ :

۱) پایه Out  به زمین وصل میشه.

۲) پایه Echo بدون اتصال میمونه.

۳) تو مد ۱ ما به پایه Trig  یه پالسی میدادیم و یه پالسی از پایه Echo  میگرفتیم…..اما تو این مد پایه Echo رو بدون اتصال میزاریم بمونه…..و پالسمون رو به Trig  میدیم و پالس رو هم از Trig  دریافت میکنیم.

 


وسایل مورد نیاز


 


کد آردوینو


کد را کپی و در نرم افزار آردوینو اجرا کنید.

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); 
String x;

void setup() {
 Serial.begin(9600);
 pinMode(10, OUTPUT);
 digitalWrite(10 , HIGH);
 lcd.begin(16, 2);
 lcd.setCursor(0, 1);
 lcd.print("**digispark.ir**");
 pinMode(2, OUTPUT);//TRIG
 pinMode(3, INPUT);//ECHO
}
 
void loop() {
 double cm,duration;
 digitalWrite(2, HIGH);
 delayMicroseconds(20);
 digitalWrite(2, LOW);
 duration = pulseIn(3, HIGH);
 cm = duration / 29 / 2;
 x = "CM : " + String(cm) + "          ";
 lcd.setCursor(0, 0);
 lcd.print(x);
 Serial.println(x);
 delay(200);
}

 

این کد برای استفاده از یک سنسور اولتراسونیک (Ultrasonic Sensor) برای اندازه‌گیری فاصله و نمایش آن روی یک نمایشگر مایع (LCD) طراحی شده است. این کد برای برد آردوینو (Arduino) نوشته شده است. دیگر کتابخانه‌ها و کامپوننت‌های مورد استفاده در این کد عبارتند از:

  • LiquidCrystal: این کتابخانه برای کنترل نمایشگر مایع (LCD) استفاده می‌شود.
  • pinMode: تنظیم پین‌های مربوط به سنسور اولتراسونیک و LED.
  • digitalWrite: تنظیم وضعیت خروجی پین‌ها.
  • Serial.begin: شروع ارتباط تسلسلی با مانیتور سریال برای ارسال اطلاعات به مانیتور سریال.

یک نمایشگر مایع با ۱۶ ستون و ۲ سطر تعریف شده و به پین‌های ۸ تا ۹ و ۴ تا ۷ متصل می‌شود.یک متغیر String به نام “x” تعریف می‌شود که برای ذخیره‌سازی مقدار فاصله در واحد سانتیمتر استفاده می‌شود.اتصال سریال به ۹۶۰۰ بیت در ثانیه برای ارسال اطلاعات به مانیتور سریال انجام می‌شود.پین ۱۰ به عنوان یک خروجی تعریف می‌شود و به وضعیت بالا (HIGH) تنظیم می‌شود.نمایشگر مایع مقداردهی و راه‌اندازی می‌شود.پین‌ها ۲ و ۳ به ترتیب به عنوان خروجی (TRIG) و ورودی (ECHO) برای سنسور اولتراسونیک تنظیم می‌شوند.در تابع loop، فرآیند اندازه‌گیری فاصله تکرار می‌شود:

ابتدا پالس ترارسانی به سنسور اولتراسونیک فرستاده می‌شود تا سنسور آماده به اندازه‌گیری شود.سپس پالس ترارسانی متوقف شده و پالس دریافتی توسط سنسور ثبت می‌شود.مدت زمان پالس دریافتی با استفاده از تابع “pulseIn” به عنوان مقدار “duration” ذخیره می‌شود.سپس مقدار فاصله در واحد سانتیمتر محاسبه می‌شود و در متغیر “cm” ذخیره می‌شود.مقدار فاصله بر روی نمایشگر مایع نمایش داده می‌شود و همچنین بر روی مانیتور سریال چاپ می‌شود.با ایجاد تاخیر ۲۰۰ میلی‌ثانیه، این فرآیند به صورت مکرر انجام می‌شود.

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

حسین فهیمی

تبادل نظر و رفع عیب با ثبت دیدگاه

۳۵ دیدگاه

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

  • اتصالات رو لطف می کنید بگید من این پروژه رو برای طرح جابر میخوام ممنون میشم کمک کنید با تشکر

    • با سلام
      اتصالات در متن آموزش نوشته شده است.
      پایه تریگر سنسور به پایه ۲ دیجیتال آردوینو و پایه اکو به پایه ۳ دیجیتال آردوینو متصل شده است.

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

    • با سلام
      کاربر گرامی تمامی سوالات قبلی شما پاسخ داده شده است. همچنین در نظر داشته باشید سوالات با اولویت و در سریعترین زمان ممکن پاسخ داده خواهد شد. لذا از ارسال پیام های پی در پی خودداری نمایید.

  • سلام من شیلد ال سی دی رو با سیم جامپر نصب کردم التراسونیک هم نصب کردم و ال سی دی صفحه خالی نمایش میده چیکار کنم

  • ال سی دی با کیپد مخصوص اردوینو باتوجه به اینکه من اتصالات رو به این طریق انجام دادم:
    پایه اکو به پایه ۳ سمت راست اردوینو
    پایه ی تریگر به پایه ی ۲ سمت راست اردوینو
    و پایه های ال سی دی هم همون طوری که رو اردوینو قرار می گیره با سیم جامپر وصل کردم
    و اینکه فقط کدی که داخل این اموزش هست اپلود کنم
    یا اینکه اگر این اتصالات غلطه خواهشا کل اتصالات رو بگید و بگید که کدوم کد هارو اپلود کنم ممنون

  • سلام من کتابخانه liquid crictal , DFR-LCD-CEYPADرو کامپایل کردم و مدار کار نمیکنه میشه اتصالات رو کامل بگید من از این دو تا مقاله که گفتید چیزی نفهمیدم

    • با سلام
      چه پروژه ای اجرا شده است؟ توضیحات کامل به همراه ارور دریافتی را ارسال کنید تا بررسی شود.

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

  • باسلام بنده قصد ساخت یک هد اتوفوکوس را دارم . میخواستم ببینم دوستان چه پیشنهادی دارن . نقطه aباید تحت هر شرایطی ثابط بماند ‌. با استپ موتور و درایو و اردوینو . اگر دوستان اهل فن بتوانند کمک کنند ممنون میشم

    • با سلام
      کاربر گرامی ضمن تشکر از شما، از دوستانی که در این زمینه تخصص و اطلاعاتی دارند، تقاضا میکنم در بحث شرکت کنند.

  • سلام من این کد رو نوشتم و اجرا گرفتم و اتصالات رو هم چک کردم درسته ولی روی LCD فقط CM: 0.00 رو به من نشون میده و ثابت هست فقط زمانی که دستمو میبرم سمت پایه های دیجیتال مقدار تغییر میکنه!!!!!!
    یعنی مشکلش چیه؟

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