সুচিপত্র:

একটি Arduino ন্যানোর জন্য LCD COG: 3 টি ধাপ
একটি Arduino ন্যানোর জন্য LCD COG: 3 টি ধাপ

ভিডিও: একটি Arduino ন্যানোর জন্য LCD COG: 3 টি ধাপ

ভিডিও: একটি Arduino ন্যানোর জন্য LCD COG: 3 টি ধাপ
ভিডিও: Arduino Nano SPWM: LCD 16x2 ব্যাটারি এবং AC ভোল্টেজ এবং তাপমাত্রা প্রদর্শন 2024, জুলাই
Anonim
একটি Arduino ন্যানোর জন্য LCD COG
একটি Arduino ন্যানোর জন্য LCD COG

এই নির্দেশযোগ্য একটি Arduino ন্যানো সঙ্গে একটি COG LCD ব্যবহার কিভাবে বর্ণনা করে।

সিওজি এলসিডি ডিসপ্লেগুলি সস্তা তবে ইন্টারফেসের জন্য কিছুটা কঠিন। (COG মানে "চিপ অন গ্লাস"।) আমি যা ব্যবহার করছি তাতে একটি UC1701 ড্রাইভার চিপ রয়েছে। এর জন্য Arduino এর মাত্র 4 টি পিন প্রয়োজন: SPI- ক্লক, SPI- ডেটা, চিপ-সিলেক্ট এবং কমান্ড/ডেটা।

UC1701 SPI বাস দ্বারা নিয়ন্ত্রিত এবং 3.3V এ চলে।

এখানে আমি একটি Arduino ন্যানো দিয়ে কিভাবে এটি ব্যবহার করতে হয়। এটি একটি Arduino মিনি বা Uno এর সাথেও কাজ করা উচিত - আমি শীঘ্রই এটি চেষ্টা করব।

এটি আমার প্রথম আরডুইনো প্রজেক্ট এবং আমি কয়েক দশক ধরে সি লিখিনি তাই যদি আমি কোন স্পষ্ট ভুল করে থাকি, দয়া করে আমাকে জানান।

ধাপ 1: হার্ডওয়্যার তৈরি করা

হার্ডওয়্যার নির্মাণ
হার্ডওয়্যার নির্মাণ
হার্ডওয়্যার নির্মাণ
হার্ডওয়্যার নির্মাণ
হার্ডওয়্যার নির্মাণ
হার্ডওয়্যার নির্মাণ

একটি COG LCD কিনুন যাতে UC1701 চিপ থাকে। এটি একটি সমান্তরাল ইন্টারফেসের পরিবর্তে SPI বাস ব্যবহার করা উচিত। এটিতে প্রায় 14 টি পিন থাকবে যা নীচে তালিকাভুক্ত নামগুলির মতো লেবেলযুক্ত হবে। (আপনি D0, D1, D2 লেবেলযুক্ত আরও অনেক পিনের সমান্তরাল ইন্টারফেস চান না)

আমি যেটি কিনেছি তা হল: https://www.ebay.co.uk/itm/132138390168 অথবা আপনি "12864 LCD COG" এর জন্য ইবে অনুসন্ধান করতে পারেন।

1.27 মিমি পিনযুক্ত মোটামুটি প্রশস্ত লেজযুক্ত একটি চয়ন করুন - সূক্ষ্ম পিনগুলি ঝালাই করা কঠিন হবে। এটি একটি UC1701 চিপ আছে তা নিশ্চিত করুন। লক্ষ্য করুন কিভাবে ইবে পৃষ্ঠার ষষ্ঠ ছবিতে এটি "CONNECTOR: COG/UC1701" বলে।

ডিসপ্লেটি স্বচ্ছ এবং সামনে এবং পিছনে কোনটি তা জানা কঠিন। আমার ছবিগুলো সাবধানে অধ্যয়ন করুন। লক্ষ্য করুন পিন 1 এবং 14 কোথায় - সেগুলি লেজে চিহ্নিত করা আছে।

নমনীয় লেজটি ঝালাই করা বেশ সহজ কিন্তু এর জন্য একটি অ্যাডাপ্টারের প্রয়োজন হয় যাতে আপনি এটি একটি রুটিবোর্ডে প্লাগ করতে পারেন। আমি কিনেছি: https://www.ebay.co.uk/itm/132166865767 অথবা আপনি "অ্যাডাপ্টার SMD SSOP28 DIP28" এর জন্য ইবে অনুসন্ধান করতে পারেন।

অ্যাডাপ্টার একপাশে 28-পিন এসওপি চিপ বা অন্য দিকে 28-পিন এসএসওপি চিপ নেয়। একটি এসওপি চিপের পিনের ব্যবধান 0.05 (1.27 মিমি) যা LCD এর লেজের সমান।

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

অ্যাডাপ্টারের উপর হেডার পিনের 14 টি সোল্ডার। এগুলি সমস্ত পথ দিয়ে ধাক্কা দেবেন না - অ্যাডাপ্টারের পিছনে সমতল হলে এটি আরও ভাল। আপনার বেঞ্চে এটি সমতল রাখুন যাতে পিনগুলি গর্তের মধ্যে খুব দূরে ঠেলে দেওয়া যায় না। নিশ্চিত করুন যে পিনগুলি বোর্ডের এসওপি পাশে রয়েছে (যেমন বড় চিপ)।

লেজের প্যাডগুলি এক ধরণের জানালায় রয়েছে। তাদের উভয় পাশে ঝাল দিয়ে টিন করুন। অ্যাডাপ্টারের প্যাড টিন করুন। অ্যাডাপ্টারের লেজটি ধরে রাখুন তারপর সোল্ডারিং লোহা দিয়ে প্রতিটি প্যাড স্পর্শ করুন (আপনার মোটামুটি সূক্ষ্ম টিপ লাগবে)।

স্ট্রেন রিলিফ হিসাবে কাজ করার জন্য অ্যাডাপ্টারের ছিদ্র দিয়ে কিছু থ্রেড বেঁধে দিন। (আমি "ট্রান্সফরমার তার" ব্যবহার করেছি)।

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

ধাপ 2: Arduino এর সাথে সংযোগ স্থাপন

Arduino এর সাথে সংযোগ স্থাপন
Arduino এর সাথে সংযোগ স্থাপন
Arduino এর সাথে সংযোগ স্থাপন
Arduino এর সাথে সংযোগ স্থাপন

এই বিভাগটি ব্যাখ্যা করে কিভাবে একটি Arduino Nano এর সাথে সংযোগ স্থাপন করতে হয়। এটি একটি মিনি বা ইউনোর জন্য খুব অনুরূপ হবে কিন্তু আমি এখনও চেষ্টা করিনি।

সার্কিট ডায়াগ্রাম অধ্যয়ন করুন।

একটি USB পোর্টের সাথে সংযুক্ত একটি Arduino Nano 5V এ চলে। LCD 3.3V এ চলে। সুতরাং আপনাকে ন্যানোর 3V3 পিন থেকে LCD পাওয়ার এবং প্রতিটি কন্ট্রোল পিনের ভোল্টেজ 5V থেকে 3.3V কমাতে হবে।

LCD এর পিনআউট হল:

  • 1 সিএস
  • 2 আরএসটি
  • 3 সিডি
  • 4
  • 5 CLK
  • 6 এসডিএ
  • 7 3 ভি 3
  • 8 0V Gnd
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

CS হল চিপ-সিলেক্ট। এটি UC1701 চিপ নির্বাচন (সক্ষম) করার জন্য কম টানা হয়। (CS কে CS0 বা En বা অনুরূপ বলা যেতে পারে।)

RST হল রিসেট। চিপটি পুনরায় সেট করতে এটি কম টানা হয়। (RST কে রিসেট বলা যেতে পারে।)

সিডি হল কমান্ড/ডেটা। এসপিআই -এর উপর চিপে কমান্ড পাঠানোর সময় এটি কম টানা হয়। ডেটা পাঠানোর সময় এটি বেশি। (CD কে A0 বলা যেতে পারে।)

CLK এবং SDA হল SPI বাস পিন। (SDA কে SPI-Data বলা যেতে পারে। CLK হতে পারে SCL বা SPI-Clock।)

VB0+ এবং VB0- UC1701 এর অভ্যন্তরীণ চার্জ পাম্প দ্বারা ব্যবহৃত হয়। চার্জ পাম্প এলসিডি দ্বারা প্রয়োজনীয় অদ্ভুত ভোল্টেজ তৈরি করে। VB0+ এবং VB0- এর মধ্যে 100n ক্যাপাসিটরের সংযোগ করুন। UC1701 ডকুমেন্টেশন 2uF সুপারিশ কিন্তু আমি এই বিশেষ LCD সঙ্গে একটি পার্থক্য দেখতে পারে না

যদি আপনার এলসিডিতে VB1+ এবং VB1- পিন থাকে, তাহলে তাদের মধ্যে 100n ক্যাপাসিটরের সংযোগ করুন। (যদি আপনার এলসিডিতে একটি ভিএলসিডি পিন থাকে, তাহলে আপনি ভিএলসিডি এবং জিএনডির মধ্যে 100n ক্যাপাসিটরের সংযোগ করার চেষ্টা করতে পারেন। এটি আমার এলসিডির সাথে কোন পার্থক্য করে না।)

নিম্নরূপ LCD কে ন্যানোর সাথে সংযুক্ত করুন:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 সিডি = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*" মানে ভোল্টেজ কমাতে একটি সম্ভাব্য ডিভাইডার ব্যবহার করুন। যদি Arduino একটি স্বাধীন সরবরাহ থেকে 3V3 এ চলতে থাকে, তাহলে আপনাকে রোধকগুলির প্রয়োজন হবে না।)

3.3V ন্যানো দ্বারা আউটপুট এবং LCD এর জন্য পর্যাপ্ত কারেন্ট প্রদান করতে পারে। (ডিসপ্লেটি প্রায় 250uA টানে।)

5V এছাড়াও ন্যানো দ্বারা আউটপুট এবং ব্যাকলাইট শক্তি ব্যবহার করা যেতে পারে। একটি 100ohm প্রতিরোধক সঙ্গে ব্যাকলাইট বর্তমান সীমিত।

আপনার যদি ন্যানোতে পিনের অভাব থাকে, আপনি RST কে 3V3 এর সাথে সংযুক্ত করতে পারেন - তাহলে আপনি অন্য কিছু করার জন্য D6 ব্যবহার করতে পারেন। U1701 SPI- এ একটি কমান্ডের মাধ্যমে সফটওয়্যারে রিসেট করা যায়। আমি কখনোই এর সাথে কোন সমস্যায় পড়িনি কিন্তু যদি আপনি একটি গোলমাল পরিবেশে আপনার নিজের সার্কিট ব্যবহার করেন, তাহলে একটি হার্ডওয়্যার রিসেট ব্যবহার করা ভাল হতে পারে।

ধাপ 3: সফটওয়্যার

সফটওয়্যার
সফটওয়্যার

তত্ত্বগতভাবে, আপনি U817 লাইব্রেরি (অথবা Ucglib বা উপলব্ধ অন্যান্য লাইব্রেরি) থেকে UC1701 চালাতে পারেন। আমি কাজ করার জন্য দিনের পর দিন সংগ্রাম করেছি এবং ব্যর্থ হয়েছি। U8g2 লাইব্রেরি একটি দৈত্য কারণ এটি চিপের একটি বিশাল বৈচিত্র চালাতে পারে এবং কোডটি অনুসরণ করা খুব কঠিন। তাই আমি হাল ছেড়ে দিয়ে আমার নিজের ছোট লাইব্রেরি লিখলাম। এটি Arduino (প্রায় 3400 বাইট প্লাস ফন্ট) এ অনেক কম জায়গা নেয়।

আপনি আমার লাইব্রেরি এখান থেকে ডাউনলোড করতে পারেন (এই পৃষ্ঠায় ডাউনলোড বোতাম)। একটি নমুনা স্কেচ এবং একটি ব্যবহারকারী নির্দেশিকা অন্তর্ভুক্ত করা হয়েছে। ওয়েব পৃষ্ঠা https://www.arduino.cc/en/Guide/Libraries বর্ণনা করে কিভাবে একটি লাইব্রেরি আমদানি করা যায়; ".zip লাইব্রেরি আমদানি" বিভাগে যান।

এলসিডি দিয়ে শুরু করুন

UC1701 শুরু ();

UC1701Begin পিন পরিবর্তন করতে বা RST পিন উপেক্ষা করতে পরামিতি নিতে পারে। লাইব্রেরি শুধুমাত্র হার্ডওয়্যার SPI ব্যবহার করে (একটি সফটওয়্যার SPI প্রদান করা হয় না)। ডিসপ্লেটি x এবং y অক্ষের মধ্যে উল্টানো যেতে পারে। যদি আপনি একটি ভিন্ন অভিযোজন LCD মাউন্ট করতে চান তাহলে এটি দরকারী।

U8g2 লাইব্রেরি থেকে বেশ কয়েকটি পদ্ধতি নকল করা হয়েছে:

  • রেখা অংকন করুন
  • ড্র পিক্সেল
  • ড্রহলাইন
  • ড্রভলাইন
  • ড্রবক্স
  • ড্রফ্রেম
  • অঙ্কন বৃত্ত
  • ড্রডিস্ক
  • DrawFilledEllipse
  • অঙ্কন উপবৃত্ত
  • আঁকা ত্রিভুজ
  • UC1701 সেট কার্সার
  • UC1701 ক্লিয়ার ডিসপ্লে

কিছু পদ্ধতি কিছুটা ভিন্ন:

  • অকার্যকর DrawChar (uint8_t c, word Font);
  • অকার্যকর DrawString (char * s, word Font);
  • অকার্যকর DrawInt (int i, word Font);

স্ট্রিং অঙ্কন পদ্ধতি একটি ফন্টের সূচী পাস করা হয়। Arduino এর ফ্ল্যাশ মেমরিতে ফন্ট ঘোষণা করা হয় যাতে তারা মূল্যবান SRAM দখল করে না। তিনটি ফন্ট দেওয়া হয়েছে (ছোট, মাঝারি এবং বড়)। এগুলি কেবলমাত্র সংযুক্ত থাকে এবং ফ্ল্যাশ মেমরি দখল করে যদি আপনি সেগুলি ব্যবহার করেন (প্রায় 500 থেকে 2000 বাইট প্রতিটি)।

"রঙ" U8g2 লাইব্রেরি থেকে ভিন্নভাবে পরিচালনা করা হয়। যখন এলসিডি সাফ করা হয় তখন এর গা dark় পটভূমি থাকে। যদি মেকমার্ক (একটি গ্লোবাল ভেরিয়েবল) সত্য হয়, অঙ্কনটি সাদা রঙে করা হয়। যদি মেকমার্ক মিথ্যা হয়, আঁকা অন্ধকারে করা হয়।

কিছু পদ্ধতি UC1701 এর জন্য অনন্য:

সেট-ইনভার্টেড সাদা-কালো-এর পরিবর্তে কালো-সাদা-তে আঁকা।

অকার্যকর SetInverted (bool inv);

UC1701 এর উজ্জ্বলতা এবং বৈসাদৃশ্য দ্বারা সেট করা হয়:

  • অকার্যকর SetContrast (uint8_t মান); // প্রস্তাবিত হল 14
  • অকার্যকর SetResistor (uint8_t মান); // প্রস্তাবিত 7

তারা বরং অসন্তোষজনক উপায়ে একসাথে কাজ করে।

LCD নিচে SetEnabled ক্ষমতা:

অকার্যকর SetEnabled (bool en);

ঘুমানোর সময় ডিসপ্লে 4uA লাগে। আপনার ব্যাকলাইটটিও বন্ধ করা উচিত - এটি ন্যানোর একটি পিন থেকে চালান। পুনরায় সক্রিয় করার পর, UC1701 পুনরায় সেট করা হবে; ডিসপ্লে সাফ করা হয়েছে এবং কনট্রাস্ট এবং রেজিস্টরকে তাদের ডিফল্ট মানগুলিতে পুনরায় সেট করা হবে।

সুতরাং, উপসংহারে, COG প্রদর্শনগুলি সস্তা এবং একটি শালীন আকার। তারা একটি Arduino সাথে সংযোগ করা সহজ।

প্রস্তাবিত: