সুচিপত্র:

OLED I2C ডিসপ্লে Arduino/NodeMCU টিউটোরিয়াল: 15 টি ধাপ
OLED I2C ডিসপ্লে Arduino/NodeMCU টিউটোরিয়াল: 15 টি ধাপ

ভিডিও: OLED I2C ডিসপ্লে Arduino/NodeMCU টিউটোরিয়াল: 15 টি ধাপ

ভিডিও: OLED I2C ডিসপ্লে Arduino/NodeMCU টিউটোরিয়াল: 15 টি ধাপ
ভিডিও: OLED Display Interfacing with Arduino #arduino #arduinoprojects 2024, জুলাই
Anonim
Image
Image

যখন আপনি শেখা শুরু করেন তখন প্রথম প্রোগ্রামটি আপনি লেখেন

নতুন প্রোগ্রামিং ভাষা হল: "হ্যালো ওয়ার্ল্ড!"।

প্রোগ্রামটি স্ক্রিনে "হ্যালো ওয়ার্ল্ড" পাঠ্য ছাপানো ছাড়া আর কিছুই করে না।

সুতরাং, কিভাবে আমরা আমাদের Arduino "হ্যালো ওয়ার্ল্ড!" প্রদর্শন করতে পারি?

এই ভিডিওতে, আমি আপনাকে দেখাবো কিভাবে ছোট 0.91 (128x32) এবং 0.96 (128x64) I2C OLED ডিসপ্লে দিয়ে শুরু করা যায়।

ওয়েবে 100 টি টিউটোরিয়াল রয়েছে যা একই জিনিসকে বিভিন্ন উপায়ে ব্যাখ্যা করে, কিন্তু আমি এমন একটি খুঁজে পাইনি যা আমাকে ওএলইডি ডিসপ্লে এবং বিভিন্ন পরিস্থিতিতে এটি কীভাবে ব্যবহার করতে হয় সে সম্পর্কে সব বলে। এটা সব কাজ করতে আমার কিছু সময় লেগেছে। সুতরাং, আমি ভেবেছিলাম যে আমি যা শিখেছি তার একটি টিউটোরিয়াল তৈরি করা উচিত এবং OLED ডিসপ্লেগুলি আমাদের প্রকল্পগুলিতে ব্যবহার করা যেতে পারে এমন সমস্ত বৈশিষ্ট্য এবং উপায়গুলিকে একত্রিত করা উচিত।

ধাপ 1: আমরা আজ যা শিখতে যাচ্ছি

হার্ডওয়্যারের প্রয়োজনীয়তা
হার্ডওয়্যারের প্রয়োজনীয়তা

এই ভিডিওতে আমরা কথা বলব:

- একটি OLED ডিসপ্লে কি?

- তারপর আমরা 0.91 (128x32) এবং 0.96 (128x64) I2C OLED ডিসপ্লেগুলোকে ঘনিষ্ঠভাবে দেখব

- পরবর্তী আমরা আপনার Arduino IDE এ Adafruit Library ইনস্টল করার বিষয়ে কথা বলব

- তারপর আমরা একটি OLED ডিসপ্লেতে NodeMCU এবং Arduino কে সংযুক্ত করব

- এরপরে আমরা কোডটি দেখে নেব এবং এতে কিছু গ্রাফিক্স এবং পাঠ্য প্রদর্শন করব

- আমরা কাস্টম ফন্ট প্রয়োগ এবং ছবি প্রদর্শন সম্পর্কে কথা বলব

- তারপর আমরা I2C মাল্টিপ্লেক্সার ব্যবহার করে একাধিক OLED কে একটি মাইক্রো-কন্ট্রোলারের সাথে সংযুক্ত করব

- পরিশেষে, আমরা OLED ডিসপ্লে ব্যবহার করার সময় কিছু সাধারণ ত্রুটি সম্পর্কে কথা বলব

পদক্ষেপ 2: হার্ডওয়্যারের প্রয়োজনীয়তা

এই টিউটোরিয়ালের জন্য আমাদের প্রয়োজন:

- একটি ব্রেডবোর্ড

- একটি 0.91 "(128x32) এবং 0.96" (128x64) I2C OLED প্রদর্শন

- আরডুইনো ইউএনও/ন্যানো (যা কিছু সহজ)

- নোডএমসিইউ

- TCA9548A I2C মাল্টিপ্লেক্সার

- কয়েকটি সংযোগকারী তারগুলি

- এবং কোড আপলোড করার জন্য একটি ইউএসবি কেবল

ধাপ 3: একটি OLED প্রদর্শন কি?

একটি OLED প্রদর্শন কি?
একটি OLED প্রদর্শন কি?
একটি OLED প্রদর্শন কি?
একটি OLED প্রদর্শন কি?

OLED বা জৈব আলো-নির্গত ডায়োড একটি হালকা-নির্গমনকারী

ডায়োড (LED) যার মধ্যে এমিসিভ ইলেক্ট্রোলুমিনসেন্ট লেয়ার হল জৈব যৌগের একটি ফিল্ম (লক্ষ লক্ষ ছোট LED লাইট) যা বৈদ্যুতিক স্রোতের প্রতিক্রিয়ায় আলো নির্গত করে।

টেলিভিশন স্ক্রিন, কম্পিউটার মনিটর, পোর্টেবল সিস্টেম যেমন মোবাইল ফোন, হাতে ধরা গেম কনসোল এবং পিডিএর মতো ডিভাইসে ডিজিটাল ডিসপ্লে তৈরি করতে ওএলইডি ব্যবহার করা হয়। একটি OLED ডিসপ্লে ব্যাকলাইট ছাড়াই কাজ করে কারণ এটি দৃশ্যমান আলো নির্গত করে।

ধাপ 4:

ছবি
ছবি

সেখানে অনেক ধরনের OLED ডিসপ্লে পাওয়া যায়

তাদের উপর ভিত্তি করে বাজার

- মাপ

- রঙ

- ব্র্যান্ড

- প্রটোকল

- SPI (সিরিয়াল পেরিফেরাল ইন্টারফেস) বা I2C

-প্যাসিভ-ম্যাট্রিক্স (PMOLED) বা সক্রিয়-ম্যাট্রিক্স (AMOLED) নিয়ন্ত্রণ প্রকল্প

এই টিউটোরিয়ালে, আমি সংযোগ স্থাপন সম্পর্কে কথা বলতে যাচ্ছি

নীল রঙ 0.91 (128x32 OLED) এবং 0.96 (128x64 OLED) I2C OLDE একটি Arduino NANO এবং NodeMCU প্রদর্শন করে। I2C বাস প্রযুক্তি MCU- এর মাত্র 2 টি পিন ব্যবহার করে তাই আমাদের অন্যান্য সেন্সরের জন্য হিপস পাওয়া যায়।

ধাপ 5: কাছাকাছি চেহারা

নিকটতর দৃষ্টি
নিকটতর দৃষ্টি
নিকটতর দৃষ্টি
নিকটতর দৃষ্টি
নিকটতর দৃষ্টি
নিকটতর দৃষ্টি

এই দুটি ডিসপ্লেতে আরও কাছাকাছি আসুন।

এই ডিসপ্লের পিছনে এসএমডি ক্যাপাসিটার এবং সোল্ডার অন-বোর্ডের স্তুপ রয়েছে; কিন্তু, যেহেতু এটি একটি I2C ডিভাইস আমরা কেবল এই 2 টি পিনের (এসসিএল এবং এসডিএ) যত্ন করি

ডিসপ্লেটি শুধুমাত্র চারটি তারের ব্যবহার করে Arduino- এর সাথে সংযোগ স্থাপন করে - দুটি পাওয়ারের জন্য (VCC এবং GND) এবং দুটি ডেটার জন্য (সিরিয়াল ক্লক এসসিএল এবং

সিরিয়াল ডেটা এসডিএ), ওয়্যারিংগুলি খুব সহজ করে তোলে। ডাটা কানেকশন হল I2C (I²C, IIC বা Inter-Integrated Circuit) এবং এই ইন্টারফেসকে TWI (Two Wire Interface) ও বলা হয়।

- অন-বোর্ড পিনগুলি বিভিন্ন ক্রমে হতে পারে, তাই আপনার প্রকল্পের সাথে যুক্ত হওয়ার আগে সর্বদা ট্রিপল চেক করুন।

- অপারেশন ভোল্টেজ 3v থেকে 5v এর মধ্যে কিন্তু, নির্মাতার ডেটশীট থেকে নির্দেশিকা ব্যবহার করা ভাল।

- কখনও কখনও আমাদের প্রকল্পে 2 টি ডিসপ্লে ব্যবহার করতে হয়। সুতরাং, আমরা কিভাবে এটি অর্জন করতে পারি?

আপনার ডিসপ্লেতে একটি কনফিগারযোগ্য ঠিকানা থাকা কৌশল। এই ইউনিটের 0x78 এবং 0x7A এর মধ্যে কনফিগারযোগ্য ঠিকানা আছে। শুধু একদিক থেকে 0Ohm প্রতিরোধককে বিক্রয় না করে এবং অন্যদিকে এটিকে উঁচু করে বা কেবল একটি বিশ্বব্যাপী সোল্ডার লাগিয়ে আমরা ঠিকানা পরিবর্তন করতে পারি। আমরা এই টিউটোরিয়ালের পরবর্তী বিভাগে একটি Arduino- এ একাধিক ডিসপ্লে সংযুক্ত করার সময় আমরা এটি সম্পর্কে গভীরভাবে কথা বলব।

ছবিতে এই ডিসপ্লেগুলো দেখতে অনেক বড়। কিন্তু, কার্যত বলতে গেলে এরা ক্ষুদ্র। এগুলি 128 x 32/64 পৃথক OLED পিক্সেল দিয়ে তৈরি এবং এর জন্য কোনও ব্যাক-লাইটের প্রয়োজন নেই। শুধু এই দিকে একবার তাকান এবং দেখুন এটি কত ছোট। যদিও তারা ছোট তারা কোন ইলেকট্রনিক প্রকল্পে খুব দরকারী হতে পারে।

ধাপ 6: লাইব্রেরি

গ্রন্থাগার
গ্রন্থাগার
গ্রন্থাগার
গ্রন্থাগার
গ্রন্থাগার
গ্রন্থাগার

এগুলি নিয়ন্ত্রণ করার জন্য বেশ কয়েকটি গ্রন্থাগার রয়েছে

প্রদর্শন করে। অতীতে আমি "u8glib লাইব্রেরি" ব্যবহার করেছি কিন্তু আমি অ্যাডাফ্রুট লাইব্রেরিকে আমাদের প্রকল্পে বুঝতে এবং ব্যবহার করতে খুব সহজ মনে করি। সুতরাং, আমি এই টিউটোরিয়ালে AdaFruit লাইব্রেরি ব্যবহার করতে যাচ্ছি।

OLED ডিসপ্লে নিয়ন্ত্রণ করতে আপনার "adafruit_GFX.h" লাইব্রেরি এবং "adafruit_SSD1306.h" লাইব্রেরির প্রয়োজন হবে।

আপনার Arduino IDE তে লাইব্রেরি ডাউনলোড এবং ইনস্টল করার দুটি উপায় রয়েছে।

পদ্ধতি 1

"লাইব্রেরি ম্যানেজার" এ যান এবং "adafruit_SSD1306" এবং "adafruit_gfx" সার্চ করুন

সর্বশেষ সংস্করণটি নির্বাচন করুন এবং ইনস্টল বোতামটি টিপুন।

একবার ইনস্টল হয়ে গেলে আপনি আপনার প্রোগ্রামে এই লাইব্রেরিগুলি ব্যবহার করতে পারেন।

পদ্ধতি 2

এই দুটি লাইব্রেরি github থেকে ডাউনলোড করা যেতে পারে (আপনার উভয় প্রয়োজন):

আমি নীচের বর্ণনায় লিঙ্কগুলি প্রদান করব।

ডিসপ্লে লাইব্রেরি:

জিএফএক্স লাইব্রেরি:

একবার ডাউনলোড হয়ে গেলে, ডাউনলোড করা জিপ করা ফাইল থেকে Adafruit_SSD1306- মাস্টার ফোল্ডারটি Arduino লাইব্রেরি ফোল্ডারে অনুলিপি করুন। এই ফোল্ডারটি সাধারণত উইন্ডোজ সিস্টেমে ডকুমেন্টস> আরডুইনো> লাইব্রেরিতে পাওয়া যায়। লিনাক্সে এটি সাধারণত হোম ফোল্ডার> আরডুইনো> লাইব্রেরিতে পাওয়া যায়। অবশেষে Arduino লাইব্রেরি ফোল্ডারে, Adafruit_SSD1306- মাস্টার ফোল্ডারের নাম পরিবর্তন করে Adafruit_SSD1306 করুন। এমনকি যদি আপনি পুনnameনামকরণ না করেন তবে এটি ঠিক।

ধাপ 7:

ছবি
ছবি

এখন আসুন "Adafruit_SSD1306.h"

ফাইল

এই লাইব্রেরিতে আমাদের দুটি জিনিস জানতে হবে:

1. যদি আপনি ছোট ডিসপ্লে ব্যবহার করতে চান তাহলে ডিফল্ট 128_32 ব্যবহার করুন অন্যথায় বড় ডিসপ্লের জন্য 128_32 মন্তব্য করুন এবং 128_64 অস্বস্তিকর করুন

2. যদি আপনি বোর্ডে 0x7A ঠিকানাটি বিক্রি করে থাকেন (যা আমরা পরে আলোচনা করব) তাহলে বড় ডিসপ্লেগুলির জন্য 7 বিট 0x3D ঠিকানা ব্যবহার করুন, অন্যথায় ডিফল্ট 0x3C ঠিকানা ব্যবহার করুন। ছোট প্রদর্শনের জন্য ঠিকানা হল 0x3C।

ধাপ 8: 128 X 64/32 OLEDs তারের

তারের 128 X 64/32 OLEDs
তারের 128 X 64/32 OLEDs

NodeMCU ডিসপ্লেতে সংযুক্ত করে শুরু করা যাক।

লক্ষ্য করার প্রথম এবং সবচেয়ে গুরুত্বপূর্ণ বিষয় হল যে কিছু ডিসপ্লেতে GND এবং VCC পাওয়ার পিনের চারপাশে অদলবদল হতে পারে। আপনার ডিসপ্লেটি চেক করুন যাতে এটি ছবির মতই হয়। যদি পিনগুলি অদলবদল করা হয়, তবে Arduino বা NodeMCU- এ সংযোগগুলি পরিবর্তন করতে ভুলবেন না।

- NodeMCU OLED তারের

OLED VCC - NodeMCU 3.3V

OLED GND - NodeMCU GND

OLED SCL - NodeMCU D1

OLED SDA - NodeMCU D2

- Arduino Uno OLED তারের

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino Uno A5

OLED SDA - Arduino Uno A4

- Arduino MEGA 2560 OLED Wiring

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino MEGA 2560 pin 21

OLED SDA - Arduino MEGA 2560 pin 20

ধাপ 9: কোড

কোড
কোড
কোড
কোড
কোড
কোড
কোড
কোড

অ্যাডাফ্রুট লাইব্রেরি উভয়ের জন্য সত্যিই ভাল উদাহরণ নিয়ে আসে

128x32 এবং 128x64 ডিসপ্লে।

লাইব্রেরীটি ফাইল> উদাহরণ> অ্যাডাফ্রুট SSD1306> এর অধীনে অবস্থিত এবং তারপরে Arduino IDE তে ডিসপ্লে টাইপ।

আমরা 128x32 I2C উদাহরণ ব্যবহার করতে যাচ্ছি এবং এটি 128x64 এবং 128x32 ডিসপ্লে মুষ্টি দিয়ে কাজ করার জন্য এটিকে একটি Arduino এবং তারপর একটি NodeMCU বোর্ডে সংযুক্ত করে পরিবর্তন করব।

অ্যাডাফ্রুট লাইব্রেরি উভয়ই অন্তর্ভুক্ত করে কোডটি শুরু হয়। এই টিউটোরিয়ালে আমি কেবল কোডের সেই অংশগুলির উপর জোর দিতে যাচ্ছি যা আমাদের জন্য উভয় বোর্ড এবং ডিসপ্লে লোড করার জন্য প্রয়োজনীয়। আপনি যদি কোডটি সম্পর্কে আরও জানতে চান তবে দয়া করে আমার ব্লগে বা নীচের মন্তব্য বিভাগে একটি মন্তব্য করুন এবং আমি আপনার কাছে ফিরে আসার চেষ্টা করি।

- প্রথমে আমরা একটি 128x32 ডিসপ্লের সাথে সংযুক্ত একটি Arduino Nano এ কোডটি লোড করতে যাচ্ছি।

আমরা কোন পরিবর্তন ছাড়াই কোড ব্যবহার করতে পারি।

128x32 0x3C ঠিকানা ব্যবহার করে তাই এই বিটটি এখানে সব ভাল দেখায়, হেডার লাইব্রেরি দুবার চেক করতে দেয়, হ্যাঁ এটি 0x3C ঠিকানা ব্যবহার করে এবং ডিসপ্লের ধরন 128x32।

- এখন 128x64 ডিসপ্লে কানেক্ট করা যাক। যেহেতু আমরা জানি এটি ডিফল্টভাবে 0x3C ঠিকানা ব্যবহার করে তাই আমাদের কোড বা লাইব্রেরিতে ঠিকানা আপডেট করার দরকার নেই।

আমাদের শুধু প্রয়োজন আমাদের 128_32 মন্তব্য করতে হবে এবং হেডার লাইব্রেরিতে 128_64 কে অস্বস্তিকর করতে হবে এবং আমাদের কোডের LCDHEIGHT 64 তে পরিবর্তন করতে হবে।

- এখন একটি NodeMCU- এ একই কোড চালানোর জন্য আমাদের কোডে আরও একটি লাইন পরিবর্তন করতে হবে।

"#Define OLED_RESET 4"> "#Define OLED_RESET LED_BUILTIN" বাকি কোড Arduino এর মতই

যে কোন কিছু প্রদর্শন করার জন্য আমাদের প্রথমে আগের স্ক্রিন ব্যবহার করে পরিষ্কার করতে হবে

display.clearDisplay (); // বাফার সাফ করুন

তারপর বস্তুটি আঁকুন

টেস্টড্রলাইন (); // একটি লাইন আঁক

হার্ডওয়্যারে দেখান

display.display (); // ডিসপ্লে হার্ডওয়্যারে তাদের দৃশ্যমান করুন!

পরবর্তী আইটেম প্রদর্শনের আগে কিছু সময় অপেক্ষা করুন।

বিলম্ব (2000); // 2 সেকেন্ড অপেক্ষা করুন

এই উদাহরণে আমরা টেক্সট, লাইন, সার্কেল, স্ক্রোলিং টেক্সট, ত্রিভুজ এবং আরও অনেক কিছু প্রদর্শন করছি। এগিয়ে যান এবং আপনার কল্পনা ব্যবহার করুন এবং এই ক্ষুদ্র প্রদর্শনগুলিতে আপনি যা চান তা প্রদর্শন করুন।

ধাপ 10: পাঠ্য কাস্টমাইজ করা এবং ছবি যুক্ত করা

কাস্টমাইজ করা টেক্সট এবং ছবি যোগ করা
কাস্টমাইজ করা টেক্সট এবং ছবি যোগ করা
কাস্টমাইজ করা টেক্সট এবং ছবি যোগ করা
কাস্টমাইজ করা টেক্সট এবং ছবি যোগ করা
কাস্টমাইজ করা টেক্সট এবং ছবি যোগ করা
কাস্টমাইজ করা টেক্সট এবং ছবি যোগ করা

কখনও কখনও আপনার কোড কাস্টম ফন্ট প্রদর্শন করতে হবে এবং

ছবি আপনি যদি বিট ম্যাপিংয়ে খুব ভালো হন তাহলে কাস্টম ফন্ট এবং ছবি তৈরির জন্য ডিসপ্লের ছোট এলইডি চালু বা বন্ধ করে আপনাকে একটি বাইট অ্যারে তৈরি করতে হবে।

যাইহোক, আমি এই ম্যাপিং করতে খুব ভাল নই এবং বিট ম্যাপ টেবিল তৈরিতে ঘন্টা ব্যয় করতে চাই না।

তাই আমার অপশন কি? আমি সাধারণত কাস্টম ফন্ট এবং ছবি তৈরি করতে দুটি ওয়েবসাইট ব্যবহার করি। লিঙ্কগুলি নীচের বর্ণনায় দেওয়া হয়েছে।

কাস্টম ফন্ট

ফন্ট রূপান্তরকারী ওয়েবসাইটে যান, ফন্ট পরিবার, স্টাইল, সাইজ, লাইব্রেরি সংস্করণটি "অ্যাডাফ্রুট জিএফএক্স ফন্ট" হিসাবে নির্বাচন করুন এবং তারপরে "তৈরি করুন" বোতামটি টিপুন। এই পৃষ্ঠার ডান দিকে আপনি দেখতে পাবেন যে আপনার ফন্টটি আসল ডিসপ্লেতে কেমন দেখাচ্ছে।

আপনার নির্বাচনের উপর ভিত্তি করে ওয়েবপেজ ফন্ট হেডার ফাইল তৈরি করে। আপনার কোড যেখানে আছে সেই ফোল্ডারে "modified_font.h" নামে একটি ফাইল তৈরি করুন এবং জেনারেট কোডটি কপি করে সেভ করুন। তারপরে কাস্টম ফন্ট ব্যবহার করতে আপনাকে কেবল আপনার কোডে হেডার ফাইল অন্তর্ভুক্ত করতে হবে।

#অন্তর্ভুক্ত "modified_font.h"

তারপরে, কাস্টম ফন্ট প্রয়োগ করার জন্য পাঠ্য প্রদর্শনের আগে আপনাকে কেবল ফন্ট সেট করতে হবে।

display.setFont (& Your_Fonts_Name);

আপনি আপনার প্রকল্পে সদ্য যোগ করা হেডার ফাইল থেকে ফন্টের নাম পেতে পারেন। এটা, সহজ।

কাস্টম ফন্ট ব্যবহার করার সময় মেমরি সর্বদা একটি উদ্বেগের বিষয়, তাই সর্বদা বাইটগুলি বিবেচনা করুন যা মেমরি দ্বারা গ্রাস করা হবে। শুধু মনে রাখবেন Arduino UNO এর মেমরি মাত্র 32K।

কাস্টম ছবি

আপনার স্ক্রিনে একটি বিটম্যাপ ইমেজ প্রদর্শনের জন্য আপনাকে প্রথমে একটি 128 x 64/32 আকারের ছবি তৈরি করতে হবে।

আমি একটি 128 x 64 বিটম্যাপ ইমেজ তৈরি করতে ভাল পুরানো "এমএস পেইন্ট" ব্যবহার করছি যা আমি এই ইমেজ কনভার্টার ওয়েবসাইটে আপলোড করব। ওয়েবসাইট ইমেজগুলিকে বাইট-স্ট্রিং-এ রূপান্তরিত করে, যা Arduino এবং OLED ডিসপ্লের সাথে ব্যবহার করা যায়।

ওয়েবসাইটে ছবিটি আপলোড করে শুরু করুন। তারপরে "ইনভার্ট ইমেজ কালারস" চেক-বক্সে একটি চেক রাখুন এবং "আউটপুট কোড ফরম্যাট" কে "Arduino কোড" -এ পরিবর্তন করুন এবং তারপর ওরিয়েন্টেশন সিলেক্ট করুন এবং বাইট অ্যারে জেনারেট করতে "জেনারেট কোড" বোতাম টিপুন। "প্রিভিউ" বিভাগটি আপনাকে দেখায় যে আপনার চিত্রটি প্রকৃত প্রদর্শনে কেমন হবে।

আমি এই টিউটোরিয়াল সহ কোডটি অন্তর্ভুক্ত করেছি যা আপনি আপনার ছবি প্রদর্শন করতে ব্যবহার করতে পারেন। আপনি শুধু আমার কোডে অ্যারেটি প্রতিস্থাপন করতে হবে যা আপনি তৈরি করেছেন এবং তারপর এটি আপনার Arduino এ লোড করুন।

ধাপ 11: সংযোগ 2 প্রদর্শন

সংযোগ 2 প্রদর্শন
সংযোগ 2 প্রদর্শন
সংযোগ 2 প্রদর্শন
সংযোগ 2 প্রদর্শন

আপনার প্রকল্পে দুটি 128 x 64 ডিসপ্লে সংযুক্ত করা সহজ।

আপনাকে কেবল 0x78 ঠিকানা থেকে 0Ohm রোধকারীকে বিক্রয় করতে হবে এবং 0x7A এ রাখতে হবে এবং তারপরে ডিফল্ট 0x3C এর পরিবর্তে আপনার কোডে 0x3D ঠিকানা ব্যবহার করতে হবে।

আপনি নিশ্চয়ই ভাবছেন কেন আমরা 0x3C এবং 0x3D ঠিকানা ব্যবহার করছি এবং প্রকৃত 0x78 এবং 0x7A নয়। Arduino 7-বিট ঠিকানা গ্রহণ করে 8-বিট হার্ডওয়্যার ঠিকানা নয়। সুতরাং, আমাদের প্রথমে 8-বিট ঠিকানাটিকে বাইনারিতে রূপান্তর করতে হবে, এবং তারপর 7 বিট পেতে সর্বনিম্ন উল্লেখযোগ্য বিট কেটে ফেলতে হবে। তারপর 7x বিটকে HEX এ রূপান্তর করুন 0x3C বা 0x3D ঠিকানা যা আপনি আপনার কোডে প্রবেশ করেন।

প্রথমে, একটি অনন্য নাম দিয়ে প্রদর্শন শুরু করুন:

Adafruit_SSD1306 display1 (OLED_REST);

Adafruit_SSD1306 display2 (OLED_REST);

তারপরে আপনার কোডে ডিসপ্লে 1 এবং ডিসপ্লে 2 ব্যবহার করুন যাতে ডিভাইসের ঠিকানাগুলির সাথে শুরু বিবৃতিগুলি কল করুন:

display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // প্রদর্শন 1 অপ ঠিকানা 0x3C

display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // প্রদর্শন 2 অপ ঠিকানা 0x3D

এটাই, আপনি এখন এগিয়ে যেতে পারেন এবং আপনার বাকি কোডে ডিসপ্লে 1 বা ডিসপ্লে 2 ব্যবহার করে আপনি যা করতে চান তা করতে পারেন। আমি এই টিউটোরিয়াল দিয়ে একটি উদাহরণ প্রদান করেছি।

ওয়্যারিং হুবহু একই রকম যা আমরা আগে করেছি, মোটামুটি আপনাকে শুধু Arduino বা NodeMCU- এর একই I2C পিনে আরেকটি ডিসপ্লে যোগ করতে হবে। ঠিকানার উপর ভিত্তি করে, MCU তারপর I2C ডেটা লাইনে ডেটা পাঠায়।

ধাপ 12: 2 টির বেশি ডিসপ্লে সংযুক্ত করা

2 টিরও বেশি ডিসপ্লে সংযোগ করছে
2 টিরও বেশি ডিসপ্লে সংযোগ করছে
2 টিরও বেশি ডিসপ্লে সংযোগ করছে
2 টিরও বেশি ডিসপ্লে সংযোগ করছে
2 টিরও বেশি ডিসপ্লে সংযোগ করছে
2 টিরও বেশি ডিসপ্লে সংযোগ করছে

এখন, যদি আপনি 2 টিরও বেশি ডিসপ্লে হুক আপ করতে চান?

আরডুইনোতে সীমিত সংখ্যক পিন রয়েছে এবং সেইজন্য আপনি এটির সাথে একটি নির্দিষ্ট পরিমাণ shাল সংযুক্ত করতে পারবেন না। তাছাড়া, এতে I2C বাসের একটি মাত্র জোড়া আছে।

সুতরাং, কিভাবে আমরা একটি Arduino এর সাথে 2 I2C এর বেশি প্রদর্শন সংযুক্ত করতে পারি? কৌশলটি হল একটি TCA9548 মাল্টিপ্লেক্সার ব্যবহার করা।

TCA9548 প্রতিটি সেন্সর স্লেভ সাব-বাসে একটি অনন্য চ্যানেল বরাদ্দ করে একটি একই মাইক্রো-কন্ট্রোলারকে '64 সেন্সর 'পর্যন্ত একই বা ভিন্ন I2C ঠিকানার সাথে যোগাযোগ করতে দেয়।

যখন আমরা একাধিক ডিভাইসে 2 টি তারের উপর ডেটা পাঠানোর কথা বলি তখন আমাদের সেগুলি সমাধান করার একটি উপায় প্রয়োজন। পোস্টম্যান একক রাস্তায় এসে মেইলের প্যাকেটগুলি বিভিন্ন বাড়িতে ফেলে দেয় কারণ তাদের আলাদা আলাদা ঠিকানা লেখা আছে।

মাল্টিপ্লেক্সার মাইক্রো-কন্ট্রোলারের 3V3, GND, SDA এবং SCL লাইনের সাথে সংযোগ স্থাপন করে। স্লেভ সেন্সরগুলি বোর্ডের আটটি এসসিএল/এসডিএ স্লেভ পোর্টের একটির সাথে সংযুক্ত। TCA9548A এর I2C ঠিকানা (0x70 {default} - 0x77) পাঠিয়ে চ্যানেলগুলি নির্বাচন করা হয় এবং তারপরে চ্যানেল নম্বর (0b00000001 - 0b10000000)। একই I2C সম্বোধন করা অংশগুলির 64 টি নিয়ন্ত্রণ করার জন্য আপনি এই মাল্টিপ্লেক্সারের সর্বোচ্চ 8 টি 0x70-0x77 ঠিকানায় সংযুক্ত থাকতে পারেন। তিনটি ঠিকানা বিট A0, A1 এবং A2 কে VIN এর সাথে সংযুক্ত করে আপনি ঠিকানাগুলির বিভিন্ন সমন্বয় পেতে পারেন। আমি TCA9548A ব্রেকআউট বোর্ডে আমার পরবর্তী টিউটোরিয়ালে এই গভীরভাবে ব্যাখ্যা করব। আপাতত, এই বোর্ডে কেবল 8 টি OLED সংযুক্ত করুন এবং কোডটি দ্রুত দেখুন।

সংযোগ:

VIN থেকে 5V (বা 3.3V)

GND to ground

এসসিএল থেকে আই 2 সি ঘড়ি

SDA থেকে I2C ডেটা

তারপর সেন্সরগুলিকে VIN, GND এ সংযুক্ত করুন এবং SCn / SDn মাল্টিপ্লেক্সেড বাসগুলির মধ্যে একটি ব্যবহার করুন

এখন, Int কোডটি "ওয়্যার" লাইব্রেরি অন্তর্ভুক্ত করে এবং মাল্টিপ্লেক্সারের ঠিকানা সংজ্ঞায়িত করে শুরু করতে দেয়।

#"Wire.h" অন্তর্ভুক্ত করুন

#অন্তর্ভুক্ত

#MUX_Address 0x70 // TCA9548A এনকোডার ঠিকানা নির্ধারণ করুন

তারপরে আমাদের যে পোর্টটিতে যোগাযোগ করতে চান তা নির্বাচন করতে হবে এবং এই ফাংশনটি ব্যবহার করে ডেটা পাঠাতে হবে:

অকার্যকর tcaselect (uint8_t i) {

যদি (i> 7) ফিরে আসে;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

পরবর্তী আমরা "u8g.begin () কল করে সেটআপ বিভাগে ডিসপ্লে আরম্ভ করব"; MUX- এর সাথে সংযুক্ত প্রতিটি প্রদর্শনের জন্য "tcaselect (i);"

একবার প্রারম্ভিক হয়ে গেলে, আমরা ফাংশনটিকে "tcaselect (i);" যেখানে "i" হল মাল্টিপ্লেক্সেড বাসের মান এবং তারপর সেই অনুযায়ী ডেটা এবং ঘড়ি পাঠানো।

ধাপ 13: সুবিধা এবং অসুবিধা

সুবিধাগুলি এবং অসুবিধাগুলি
সুবিধাগুলি এবং অসুবিধাগুলি

একটি OLED এর ছবি সুন্দর। যাইহোক, OLEDs আছে

অসুবিধা যেহেতু OLED স্ক্রিনে জৈব উপাদান থাকে, তাদের জীবনকাল LCD ডিসপ্লের চেয়ে ছোট। উপরন্তু, অনেক OLED ডিসপ্লে দীর্ঘ সময় ধরে একই চিত্র দেখানোর পরে বার্ন-ইন পায়। বার্ন-ইন করার পরে, ছবিটি অন্য চিত্র দেখানোর পরেও পর্দায় থাকে। তাই নিশ্চিত করুন যে আপনি প্রতি কয়েক সেকেন্ডে স্ক্রিনটি রিফ্রেশ করে রাখছেন। জল তাত্ক্ষণিকভাবে এই প্রদর্শনগুলির জৈব উপকরণগুলিকে ক্ষতি করতে পারে।

সুবিধাদি

ব্যাকলাইটের প্রয়োজন নেই

ডিসপ্লেগুলি খুব পাতলা এবং হালকা

কম শক্তি খরচ

দেখার কোণগুলি এলসিডি -র চেয়ে বিস্তৃত

উজ্জ্বলতা এবং বৈসাদৃশ্য দুর্দান্ত

উচ্চ গতি এবং কম প্রতিক্রিয়া সময় আছে

গভীর কালো রঙ

অসুবিধা

ব্যয়বহুল প্রযুক্তি

সংক্ষিপ্ত জীবনচক্র

OLEDS বার্ন-ইন হওয়ার সম্ভাবনা বেশি

পানি দূষণ

ধাপ 14: সাধারণ ত্রুটি

সাধারণ ত্রুটি
সাধারণ ত্রুটি

টিউটোরিয়ালটি শেষ করার জন্য কয়েকটি সাধারণ ত্রুটি সম্পর্কে কথা বলা যাক

এই প্রদর্শনগুলি ব্যবহার করার সময় মানুষ তৈরি করে:

- আপনার প্রকল্পে ব্যবহার করার আগে সর্বদা পিনগুলি তিনবার পরীক্ষা করুন

- হেডার ফাইলে এবং আপনার কোডে সঠিক লাইব্রেরির ঠিকানা নিন

#SSD1306_I2C_ADDRESS 0x3C // Adafruit_SSD1306.h এ সংজ্ঞায়িত করুন

এবং

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // আপনার কোডে

ঠিকানা ভুল হলে OLED কিছু প্রদর্শন করবে না

- ব্যবহার করার আগে ডিসপ্লে সাইজ অবশ্যই ড্রাইভারে পরিবর্তন করতে হবে। যদি এটি পরিবর্তন না করা হয় তবে কোডটি যাচাই করার চেষ্টা করার সময় আপনি একটি ত্রুটির বার্তা পাবেন

#ত্রুটি ("উচ্চতা ভুল, দয়া করে Adafruit_SSD1306.h ঠিক করুন!");

- NodeMCU ব্যবহার করলে নিশ্চিত করুন যে আপনি OLED_RESET 4 থেকে LED_BUILTIN এ প্রতিস্থাপন করুন

#OLED_RESET LED_BUILTIN নির্ধারণ করুন

আমার কাছে এই OLED ডিসপ্লে ব্যবহার করে সব ধরণের জিনিস তৈরি করার দৃশ্য আছে। কেউ কেউ ভিডিও গেম এবং সব তৈরি করেছে। আমি সত্যিই এই ছোট ডিসপ্লে ব্যবহার করে একটি ভিডিও গেম তৈরিতে আগ্রহী নই। যাইহোক, আমি এখন আপনার কল্পনাগুলি অন্বেষণ করতে এবং আশ্চর্যজনক ধারণা নিয়ে বেরিয়ে আসার জন্য আপনাকে ছেড়ে দেব।

ধাপ 15: লিঙ্ক

- ব্লগ:

- ছবি যোগ করুন:

- কাস্টম টেক্সট:

- অ্যাডাফ্রুট ডিসপ্লে লাইব্রেরি:

-Adafruit GFX লাইব্রেরি:

- u8glib লাইব্রেরি: https://code.google.com/archive/p/u8glib/ অথবা

আপনি যদি ছোট ডিসপ্লে ব্যবহার করতে চান তবে ডিফল্ট 128_32 ব্যবহার করুন অন্যথায় বড় ডিসপ্লেতে 128_32 মন্তব্য করুন এবং 128X64 NO_ACK কে আপনার কোডে অস্বস্তিকর করুন (আপনি যে স্ক্রিনটি ব্যবহার করছেন তা কেবল অসম্পূর্ণ) (ফন্টগুলি ফন্ট লাইব্রেরিতে রয়েছে)

প্রস্তাবিত: