سلام خدمت همراهان همیشگی وبلاگ مایکروالکام. این دستگاه با استفاده از سنسور آلتراسونیک و صفحه نمایش OLED راه اندازی شده است. به طوری که شما فاصله جسم را با دیوار یا هر چیز دیگه ای اندازه گیری خواهید کرد. و مقدار فاصله رو میتونید بر روی صفحه نمایش مشاهده کنید. در این مطلب از برد آردوینو استفاده شده است. پس با ما تا آخر این مطلب همراه باشید.
قطعات مورد نیاز:
- (Arduino (UNO
- برد بورد
- سیم
- OLED Display
- ماژول SRF 05
اطلاعات ماژول آلتراسونیک:
این ماژول با استفاده از امواج الکترومغناطیسی فاصله را اندازه گیری میکنه. در داخل این ماژول دو IC مهم قرار گرفته که اولی امواج الکترو مغناطیسی را تا حد امکان کم صدا کرده و آن را به صورت پالس 8 بیتی به طرف جسم پرتاپ خواهد کرد. سپس این پالس پس از برخورد با جسم دوباره به سمت ماژول برگشت خواهد خورد. در این جا IC دوم با دریافت این امواج، آن را تقویت میکند که بتواند دیتای آن را به میکروکنترلر (MCU) مورد نظر انتقال دهد.
اتصالات ماژول التراسونیک:
ماژول | آردوینو |
---|---|
GND | GND |
TRIG | 10 |
ECHO | 11 |
5V+ | 5V+ |
اطلاعات صفحه نمایش OLED:
این صفحه نمایش OLED دارای 68 سطر و 128 ستون میباشد. البته میتوان صفحه نمایش بزرگتر یا کوچک تر نیز تهیه کنید. پروتکل هایی که برای راه اندازی این ماژول از آن استفاده میشود I2C و SPI میباشند. یکی از ویژگی های این صفحه نمایش کوچک و باریک بودن آن است. که این به خاطر عدم وجود Backlight میباشد.
اتصالات صفحه نمایش OLED:
ماژول | آردوینو |
GND | GND |
SDA | A4 |
SCL | A5 |
5V+ | 5V+ |
همان طور که گفته شد، در این آموزش برای راه اندازی صفحه نمایش مورد نظر از پروتکل I2C استفاده شده است.
کد نویسی پروژه :
// This Tutorial uploaded on https://blog.microele.com #include <U8glib.h>; U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C > SCL = A5 , SDA = A4 //***************************** int trig=10; int echo=11; int x=0; void setup() { u8g.setFont(u8g_font_timR10); Serial.begin(9600); pinMode(trig,OUTPUT); pinMode(echo,INPUT); } void loop() { digitalWrite(trig,LOW); delay(0.002); digitalWrite(trig,HIGH); delay(0.01); digitalWrite(trig,LOW); int duration=pulseIn(echo,HIGH); int distances=(duration/2) * 0.0343; Serial.println(distances); delay(100); u8g.firstPage(); do { u8g.drawStr( x, 10, "DIRECT BY :AHR DIRECT BY :AHR"); u8g.setPrintPos(20, 30); u8g.setScale2x2(); u8g.print(distances); u8g.undoScale(); } while ( u8g.nextPage() ); x++; }
برسی کد پروژه:
در ابتدای برنامه کتاب خانه U8glib را برای راه اندازی صفحه نمایشگر معرفی کردیم. همچنین نوع پروتکل و رزولوشن نمایشگر نیز تعریف شده است.
همچنین شماره پایه های trig و echo مربوط به سنسور فاصله که به آردوینو متصل شده در قسمت بالای void setup تعریف شده است.
(u8g.setFont(u8g_font_timR10:
این دستور برای نوع فونت متن روی صفحه نمایش میباشد. نوع فونت استفاده شده در این پروژه timR10 است که شما میتوانید فونت ها مختلفی رو برای صفحه نمایشگر خود انتخاب کنید.
در حلقه void loop پایه trig را به مدت زمان کمی خاموش و بعد روشن میکنیم تا پالس 8 بیتی تولید شود. سپس این پایه را خاموش میکنیم و امواج تولید شده پس از برخورد با جسم مورد نظر وارد پایه echo خواهد شد. و با محسباتی که مربوط به دما، رطوبت محیط و فاکتور های دیگر میباشد فاصله اندازی گیری میشود.
نکته: برای اطمینان خاطر در ابتدا، پایه Trig ماژول را خاموش کرده و سپس به ادامه برنامه نویسی خواهیم پرداخت.
:u8g.drawStr( x, 10, “DIRECT BY :AHR DIRECT BY :AHR”)
با این دستور حالتی مانند تابلو روان روی صفحه نمایش ایجاد میشود که باید در انتهای دستورات مربوط به راه اندازی صفحه نمایشگر، داخل دستور do نوشته شود. عبارت “++x” را اضافه کنید که حالت تابلو روان ایجاد بشه و متن بصورت روان نوشته بشه.
:u8g.setPrintPos(20, 30)
با این دستور مکانی که متن مورد نظر ما قرار میگیره روی صفحه نمایش انتخاب میکنیم. عدد اول مربوط به سطر و عدد دوم مربوط به ستون میباشد.
یادآوری: این صفحه نمایش دارای 128 سطر و 64 ستون میباشد.
:u8g.setScale2x2()
با استفاده از این دستور شما میتوانید سایز نوشته را بزرگتر کنید.
نکته: در حالت پیش فرض سایز نوشته کوچک میباشد و شما با استفاده از این دستور آن را بزرگتر خواهید کرد.
:u8g.print(distances)
با این دستور مقدار فاصله که داخل متغیر distances ریخته شده را روی صفحه نمایش OLED نمایش خواهیم داد.
حلقه چرخش در صفحه نمایشگر OLED:
همان طور که داخل کدها مشاهده کردید برای راه ندازی صفحه نمایش OLED از کتابخانه u8g استفاده شده است. و در این کتابخانه ما تمامی دستورات را برای طراحی اشکال، نوشتن عدد، کلمه و … بر روی صفحه نمایش در دستور do قرار داده و در پایان دستورات مربوط به راه اندازه صفحه نمایش از دستور (while ( u8g.nextPage استفاده میکنیم.
حال برنامه را پروگرام کنید و از پروژه خود لذت ببرید.
امیدوارم از این آموزش کمال بهره را برده باشید. در صورتی که هرگونه نظر یا سوال داشتید درباره این آموزش لطفا اون رو در انتهای همین صفحه در قسمت دیدگاه ها قرار بدید. و در کوتاه ترین زمان ممکن به اون ها پاسخ خواهم داد.
اگر این مطلب براتون مفید بود، اون رو حتما با دوستاتون به اشتراک بگذارید. همینطور میتونید اون رو پس از اجرای عملی توی اینستاگرام با هشتگ microelecom# به اشتراک بگذارید.
سلام به مهندس نوجوان باعث افتخاری و همیشه از جدیت و تلاشت لذت میبرم آرزوی بهترین ها برایت دارم ایمان دارم مثل اسمت به آرمان های خودت میبرسی🙏🏼👌👌👌
عرض ادب خیلی خیلی ممنونم لطف دارین شما
باعث افتخاره امیدوارم همین طور که میگید بشه بسیار انرژی بخش بود 💛
حتما به روی چشم امیدوارم مفید بوده باشه.
عرض ادب .خواهش میکنم امیدوارم مفید بوده باشه 🌹🌹
ماشالله بیشتر مطلب بزار
بسیار آموزش زیبایی بود ممنونم از شما
خواهش میکنم باعث افتخار هستش جناب .
امیدوارم مفید بوده باشه
جالب و مفید بود👌🏻
خواهش میکنم باعث افتخار هستش
عالی دستتم درد نکنه زحمت کشیدی خیلی مفید بود
عرض ادب خواهش میکنم باعث افتخار هستش امیدوارم براتون مفید بوده باشه.
واقعا احسنت به ان ظرافت و مرتب نویسیه همه موارد.
چقد برنامه رو تمیز نوشتید.
من که عاشق چیدمان متنو ترتیبش شدم.
امیداورم بهترین ها که شایستیگیش رو دارید بهتون نسیب بشه.
موفق باشی اقا مهندس.
بهترینها
واقعا احسنت به ان ظرافت و مرتب نویسیه همه موارد.
چقد برنامه رو تمیز نوشتید.
من که عاشق چیدمان متنو ترتیبش شدم.
امیداورم بهترین ها که شایستیگیش رو دارید بهتون نسیب بشه.
موفق باشی اقا مهندس
خیلی مچکرم مهندس عزیز
نظر لطفتون هست امیدوارم براتون بسیار مفید باشه و حتما به دوستانتون معرفی کنید آموزش و سایت رو.