সুচিপত্র:

কিভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন: 12 টি ধাপ (ছবি সহ)
কিভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন: 12 টি ধাপ (ছবি সহ)

ভিডিও: কিভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন: 12 টি ধাপ (ছবি সহ)

ভিডিও: কিভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন: 12 টি ধাপ (ছবি সহ)
ভিডিও: গরুটা সাথে কি হয়েছে #shorts #wildlifebd 2024, নভেম্বর
Anonim
কীভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন
কীভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন
কীভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন
কীভাবে আপনার প্রকল্পে একটি ই-কালি প্রদর্শন যুক্ত করবেন

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

এখন আপনি বিভিন্ন ধরণের ডিসপ্লে ব্যবহার করতে পারেন, সবগুলো বেশ সস্তা, কিন্তু বিভিন্ন সুবিধা এবং অসুবিধা রয়েছে:

  • একটি আলফানিউমেরিক এলসিডি ডিসপ্লে সবচেয়ে সস্তা কিন্তু সবচেয়ে সীমিত।
  • একটি OLED ডিসপ্লে গ্রাফিক্স প্রদর্শন করতে পারে কিন্তু সস্তাগুলি খুব ছোট। দ্বিতীয় ছবিতে একটি 128x64 পিক্সেল OLED ডিসপ্লে ই-ইঙ্ক-এর পাশে দেখানো হয়েছে।
  • একটি ই-কালি (বা ই-কাগজ) ডিসপ্লে কিছুটা বড় এবং তাই পড়া সহজ, এবং এর সুবিধা হল যে ডিসপ্লেটি সুইচ অফ থাকলেও বজায় থাকে! কিন্তু ডিসপ্লেটি পুনরায় আঁকাতে কয়েক সেকেন্ড সময় লাগে।

ই-ইঙ্ক ডিসপ্লেটি আমার অ্যাপ্লিকেশনের জন্য আদর্শ বলে মনে হচ্ছিল কারণ আমি আরডুইনোকে মাত্র কয়েক ঘন্টা জেগে উঠতে, একটি পড়া নিতে এবং ঘুমাতে যাওয়ার আগে এটি প্রদর্শন করতে পারি। এটি তখন কোন ফলাফল নয় যে ডিসপ্লেটি পুনরায় আঁকাতে কয়েক সেকেন্ড সময় লাগে।

এই ধরনের একটি অ্যাপ্লিকেশনে, গড় বর্তমান ব্যবহার এত কম করার ব্যবস্থা করা যেতে পারে যে একটি 9V লিথিয়াম স্মোক ডিটেক্টর ব্যাটারি 10 বছর পর্যন্ত চলতে পারে! আরো কি, এই ডিসপ্লেগুলির মধ্যে কিছু তিনটি রং প্রদর্শন করবে: সাদা, কালো এবং লাল (বা হলুদ)। আপনি যদি লাল রঙে সতর্কতা বা সতর্কতা প্রদর্শন করতে চান তাহলে আদর্শ।

সরবরাহ

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

আপনার প্রয়োজনীয়তা এবং আপনার বাজেটের উপর নির্ভর করে, আপনার বিভিন্ন আকারের পছন্দ রয়েছে:

  • 1.54 "(152x152 = 23, 104 পিক্সেল)
  • 2.13 "(212x104 = 22, 048 পিক্সেল)
  • 2.6 "(296x152 = 44, 992 পিক্সেল)
  • 2.7 "(176x264 = 46, 464 পিক্সেল)
  • 2.9 "(296x128 = 37, 888 পিক্সেল)
  • 4.2 "(400x300 = 120, 000 পিক্সেল)
  • 5.83 "(640x480 = 307, 200 পিক্সেল)
  • 7.5 "(880x528 = 464, 640 পিক্সেল)

(শেষবার যখন আমি দেখেছিলাম তখন থেকে পরিসীমাটি বিস্তৃত হয়েছে তাই আপনি এটি পড়ার সময় এটি আরও বিস্তৃত হতে পারে।)

এগুলি 2-রঙ (কালো/সাদা) বা 3 রঙ (কালো/লাল/সাদা বা কালো/হলুদ/সাদা) হিসাবে উপলব্ধ। এই নির্দেশযোগ্য অনুমান করে যে আপনি লাল ব্যবহার করছেন, কিন্তু যদি আপনি হলুদ সংস্করণটি বেছে নিয়ে থাকেন তবে কেবল "লাল" জুড়ে "হলুদ" পড়ুন।

একটি SPI (4-তারের) সংস্করণ নির্বাচন করুন। আমি 1.54 মডেল ব্যবহার করেছি, যা একটি খুব সুন্দর আকার।

ধাপ 1: আপনার প্রদর্শন সংযুক্ত করা

আপনার ডিসপ্লে সংযুক্ত করা হচ্ছে
আপনার ডিসপ্লে সংযুক্ত করা হচ্ছে

এই প্রদর্শনগুলি 2x4 পিন হেডারের সাথে আসে। পিন নম্বরগুলি স্পষ্টভাবে লেবেলযুক্ত, পিন 7, 5, 3 এবং 1 (বাম থেকে ডানে) উপরের সারির সাথে এবং নীচে 8, 6, 4, 2।

আপনার ডিসপ্লে 8-ওয়ে প্যাচ ক্যাবলের সাথে আসতে পারে, যা সংযোগ সহজ করে তোলে। (আমার প্যাচ ক্যাবলে ২ টি লাল তার এবং ২ টি বাদামী। এগুলো বিনিময়যোগ্য নয়!

নিচের টেবিলে কানেকশন দেওয়া হয়েছে, যা বেশিরভাগ প্রকার Arduino (Uno, Pro Mini, Pro Micro এবং Nano সহ) এর ক্ষেত্রে প্রযোজ্য।

ই-কালি মডিউল আরডুইনো
পিন নাম পিন নাম
1 ভিডিডি Vcc 3.3/5V
2 ভিএসএস Gnd Gnd
3 সিরিয়াল ডেটা ইন 11 মসি
4 সিরিয়াল ক্লক ইন 13 SCK
5 /চিপ নির্বাচন 10
6 তথ্য/Instr 9
7 রিসেট 8
8 ডিভাইস ব্যস্ত 7

ধাপ 2: প্রদত্ত সফটওয়্যারটি ডাউনলোড করুন

আপনি এই ধাপে বর্ণিত প্রদত্ত সফ্টওয়্যার ব্যবহার করতে পারেন, অথবা আপনি পরবর্তী ধাপে আমার উন্নত লাইব্রেরি ব্যবহার করতে পারেন কিন্তু একটি।

BuyDisplay.com এ আপনার ডিভাইস খুঁজুন। পৃষ্ঠার নীচের দিকে আপনি একটি ডাউনলোড জিপ ফাইল "Arduino লাইব্রেরি এবং 4-ওয়্যার SPI এর উদাহরণ" পাবেন। উইন্ডোজ এক্সপ্লোরারে ডাউনলোড করে ওপেন করতে এখানে ক্লিক করুন।

উইন্ডোজ এক্সপ্লোরার এটিকে একটি একক শীর্ষ-স্তরের ফোল্ডার "লাইব্রেরি-উদাহরণ-ইআর-ইপিএম0154-1 আর" হিসাবে দেখাবে। (যদি আপনার 1.54 "মডেল না হয় তবে নামটি কিছুটা আলাদা হবে।)

আপনার Arduino লাইব্রেরি ফোল্ডারে এই শীর্ষ স্তরের ফোল্ডারটি অনুলিপি করুন। ফোল্ডারের নাম পরিবর্তন করতে ডান ক্লিক করুন এবং নাম থেকে "লাইব্রেরি-উদাহরণ_" মুছে দিন।

(আপনার Arduino লাইব্রেরি ফোল্ডারটি খুঁজতে, Arduino IDE- এ, ফাইল… পছন্দসমূহ ক্লিক করুন এবং স্কেচবুকের অবস্থান নোট করুন। এটিতে যান

এই ফোল্ডারটি খুলুন এবং এর মধ্যে "লাইব্রেরি" ফোল্ডারটি খুলুন। এই ফোল্ডারের সমস্ত ফাইল টেনে আনুন এবং প্যারেন্ট ফোল্ডারে এক স্তরের উপরে ("ER-EPM0154-1R") ড্রপ করুন। (এখন খালি) "লাইব্রেরি" ফোল্ডারটি মুছুন।

আপনি এখন একটি Arduino লাইব্রেরি হিসাবে ফাইল এবং একটি পরীক্ষার স্কেচ ইনস্টল করেছেন। মনে রাখবেন যে যদি আপনার ডিসপ্লে 1.54 এক না হয়, তবে পার্থক্যটি ER-ERM*-1.h এ দুটি লাইন বলে মনে হচ্ছে WIDTH এবং HEIGHT।

Arduino IDE- এ, ফাইল… উদাহরণগুলিতে ক্লিক করুন এবং ডেমো স্কেচের জন্য ER-EPM0154-1R এ নিচে স্ক্রোল করুন, যা আপনি আপনার ডিসপ্লেটি আপনার Arduino এর সাথে সংযুক্ত করার সাথে সাথে কম্পাইল এবং চালাতে সক্ষম হবেন।

ধাপ 3: ডেমো চালানো

ডেমো চলছে
ডেমো চলছে
ডেমো চলছে
ডেমো চলছে

Arduino IDE তে, ফাইল… উদাহরণ… ER-EPM0154-1R ক্লিক করুন।

আপনার আরডুইনোকে আপনার কম্পিউটারের সাথে একটি USB তারের সাথে সংযুক্ত করুন, অথবা যাইহোক আপনি সাধারণত করেন।

সরঞ্জামগুলির অধীনে, বোর্ড, প্রসেসর এবং পোর্ট সেট করুন।

স্কেচের অধীনে, আপলোড ক্লিক করুন।

আপলোড শেষ হওয়ার পর কিছুটা বিলম্ব হবে, এবং দশটি বিলম্ব কয়েকবার ফ্ল্যাশ করবে কারণ এটি প্রথম ছবি আঁকবে। ডেমো দিয়ে যাওয়ার সময় দেখুন।

ধাপ 4: উন্নত লাইব্রেরি ব্যবহার করা

আপনি https://github.com/p-leriche/E-ink_ER-EPM এ github থেকে আমার উন্নত লাইব্রেরি ডাউনলোড করতে পারেন

N. B. আমার একটি উচ্চ ডিগ্রী আত্মবিশ্বাস আছে যে আমার লাইব্রেরি যে কোন আকারের সামঞ্জস্যপূর্ণ ডিসপ্লেতে কাজ করবে, কিন্তু আমি আসলে এটিকে 1.54 মডেলের সাথে পরীক্ষা করেছি। যদি আপনি অন্যটি ব্যবহার করেন, তাহলে অনুগ্রহ করে আমাকে কমেন্টে জানাবেন এই নির্দেশাবলীর, এটি নিশ্চিত করে যে এটি কাজ করে।কিন্তু যদি তা না হয়, তাহলে আমি আপনাকে যথাসাধ্য চেষ্টা করব।

জিপ ফাইলটি ডাউনলোড করে সংরক্ষণ করুন। Arduino IDE তে, স্কেচ ক্লিক করুন … লাইব্রেরি অন্তর্ভুক্ত করুন …. ZIP লাইব্রেরি যোগ করুন এবং সংরক্ষিত জিপ ফাইলটি নির্বাচন করুন।

আমার লাইব্রেরিতে বেশ কিছু ছোটখাট উন্নতি রয়েছে:

  • এটি বিভিন্ন Arduino পিন নম্বর ব্যবহার করার অনুমতি দেয় (MOSI ব্যতীত)।
  • একই লাইব্রেরি ব্যবহার করা যেতে পারে ফোরানি সাইজের ডিভাইস।
  • একটি নতুন 50% শেডেড ফিল, এবং একটি দাগযুক্ত ফিল (র্যান্ডম পিক্সেল সেট) প্রদান করা হয়েছে।

লাইব্রেরিটি একটি আদর্শ আরডুইনো সংকুচিত (জিপ) ফাইল হিসাবে আসে। এটি আপনার ডাউনলোড ফোল্ডারে ডাউনলোড করুন (অথবা যেখানে আপনি পছন্দ করেন), এবং Arduino IDE তে, স্কেচ ক্লিক করুন … লাইব্রেরি অন্তর্ভুক্ত করুন … জিপ লাইব্রেরি যোগ করুন।

উদাহরণের অধীনে, আপনি এখন ই-কালি_ইআর-ইপিএম পাবেন। 3 টি উদাহরণ স্কেচ রয়েছে:

  • ER_EPM154-1R- পরীক্ষা: মূল বিক্রেতা প্রদত্ত বিক্ষোভ
  • ই-কালি_ডেমো: পরবর্তী ধাপে স্কেচ তৈরি হয়েছে
  • ই-কালি_রোটেট: চিত্র ঘূর্ণনের একটি প্রদর্শন।

ধাপ 5: এটি নিজে প্রোগ্রামিং করুন

দুর্ভাগ্যবশত বিক্রেতা-প্রদত্ত কোডের সাথে কোন ডকুমেন্টেশন নেই, অথবা উদাহরণ কোডটি পর্যাপ্তভাবে মন্তব্য করা হয়নি। এটি এটি ব্যবহার করার চেয়ে কঠিন করে তোলে, এবং এই নির্দেশের মূল উদ্দেশ্য হল সেই অধিকারটি রাখা।

মৌলিক ধারণা

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

পর্দার এই বিভাগগুলি "পেইন্ট" বস্তু হিসাবে পরিচিত। আপনার কেবল একটি প্রয়োজন, এবং পর্দার প্রতিটি বিভাগের জন্য আপনি এর উচ্চতা, প্রস্থ এবং ঘূর্ণন নির্ধারণ করুন। সম্পূর্ণ হলে, আপনি এটি আপলোড করুন, পর্দায় অবস্থান লোড করার জন্য এবং এটি কালো এবং সাদা বা লাল এবং সাদা হওয়া উচিত কিনা তা নির্ধারণ করে।

স্ক্রিনের উপরের বাম কোণে অনুভূমিক (x) এবং উল্লম্ব (y) স্থানাঙ্ক (0, 0), নীচের বাম দিকটি (0, 151) এবং উপরের ডানদিকে (151, 0) রয়েছে।

সূচনা

Arduino IDE তে te-ink_demo স্কেচ খুলুন এবং লাইব্রেরি কিভাবে ব্যবহার করতে হয় তা বর্ণনা করুন।

স্কেচের শীর্ষে আপনি নিম্নলিখিত লাইনগুলি দেখতে পাবেন, যা সর্বদা প্রয়োজন:

#অন্তর্ভুক্ত <SPI.h #অন্তর্ভুক্ত "ER-ERM0154-1.h" #অন্তর্ভুক্ত "imagedata.h" #অন্তর্ভুক্ত "epdpaint.h" #সংজ্ঞায়িত রঙ 0 #সংজ্ঞায়িত Uncolored 1 Epd

#অন্তর্ভুক্ত লাইনগুলি প্রয়োজনীয় লাইব্রেরিতে টানে। SPI.h হল একটি আদর্শ Arduino লাইব্রেরি কিন্তু অন্যান্যগুলি ই-কালি লাইব্রেরির অংশ।

আমরা UNCOLORED (সাদা) পিক্সেল এবং রঙিন (কালো বা লাল) এর নাম নির্ধারণ করি। (আমার সহকর্মী ইউরোপীয়দের লক্ষ্য করুন: রঙের আমেরিকান বানান ব্যবহার করা হয়েছে।)

এপিডি এপিডি; লাইন ইলেকট্রনিক পেপার ডিভাইস বস্তু তৈরি করে, যার উপর আমরা প্রদর্শন করব। এটি সেটআপ () এবং লুপ () ফাংশনগুলির জন্য এটি উপলব্ধ করার জন্য স্কেচের শুরুতে এখানে থাকতে হবে।

আপনার যদি ভিন্ন আকারের ডিসপ্লে থাকে তাহলে আপনি EPD লাইনটি প্রতিস্থাপন করতে পারেন:

EPD epd (WIDTH, HEIGHT);

(পূর্বে #সংজ্ঞায়িত বিবৃতিতে WIDTH এবং HEIGHT সংজ্ঞায়িত করা হয়েছে।)

একইভাবে আপনি অ-ডিফল্ট পিন নম্বরগুলি নির্দিষ্ট করতে পারেন:

Epd epd (WIDTH, HEIGHT, BUSY_PIN, RESET_PIN, DC_PIN, CS_PIN);

সেটআপ () এর মধ্যে আমাদের ডিভাইসটি নিম্নরূপ শুরু করতে হবে:

Serial.begin (9600)

যদি (epd. Init ()! = 0) {Serial.print ("e-Paper init ব্যর্থ"); প্রত্যাবর্তন; }

(আসলে, epd. Init () কখনও একটি ত্রুটি ফেরত দেয় না, কিন্তু ভবিষ্যতে বর্ধিতকরণ একটি ডিসপ্লের অনুপস্থিতি সনাক্ত করতে পারে, অথবা একটি অ-কার্যকরী।)

ধাপ 6: লেখা লেখা

লেখা লেখা
লেখা লেখা

ই-কালি_ডেমোতে, লুপ () এর দিকে আপনার মনোযোগ দিন। প্রথমে, ডিসপ্লে সাফ করা যাক:

epd. ClearFrame ()

(আপনি যদি আপনার নিজের ছবি প্রদর্শন করতে চলেছেন তবে এটি আসলে প্রয়োজনীয় নয়।)

আমরা কিছু আঁকতে পারার আগে (টেক্সট বা গ্রাফিক্স) আমাদের আঁকার জন্য একটি পেইন্ট অবজেক্ট তৈরি করতে হবে:

স্বাক্ষরবিহীন চার ইমেজ [1024]

পেইন্ট পেইন্ট (ইমেজ, 152, 18); // প্রস্থ 8 এর একাধিক হওয়া উচিত

এটি কিছু স্থান (1024 বাইট) সংরক্ষণ করে এবং এটি পেন্ট বস্তুর জন্য বরাদ্দ করে, যা দ্বিতীয় লাইন দ্বারা সীমাবদ্ধ। এটি অস্থায়ীভাবে 152 পিক্সেল প্রশস্ত এবং 18 পিক্সেল গভীর হিসাবে কনফিগার করা হয়েছে। প্রয়োজনে পুন reব্যবহারের জন্য আমরা পরবর্তীতে এটি পুনরায় কনফিগার করতে পারি, কিন্তু মনে রাখবেন: প্রস্থ 8 এর একটি মাল্টিপল হতে হবে কারণ 8 পিক্সেল প্রতি বাইটে সংরক্ষিত থাকে এবং আমরা বাইট বিভক্ত করতে পারি না। (এটি আসলে প্রয়োজনে এটিকে ঘিরে ফেলবে, কিন্তু এটি তখন বিভ্রান্তিকর হতে পারে যখন আপনার ডিসপ্লেটি কেমন দেখায় না।

এখন আমাদের পেইন্ট অবজেক্টকে সাফ করতে হবে Uncolored (সাদা), তারপর পজিশনে (x, y) = (22, 2) আমরা 16-পিক্সেল হাই ফন্ট ব্যবহার করে "ই-ইঙ্ক ডেমো" লিখি, এবং কালারড (এর বিরুদ্ধে দেখানোর জন্য অসংলগ্ন পটভূমি।

পেইন্ট। পরিষ্কার (অসংলগ্ন)

পেইন্ট।

লক্ষ্য করুন যে কো-অর্ডিনেটস (22, 2) হল স্ট্রিং এর প্রথম অক্ষরের উপরের বাম হাতের কোণ, এবং পেইন্ট অবজেক্টের উপরের বাম হাতের কোণার তুলনায় 22 পিক্সেল এবং 2 পিক্সেল নিচে, পুরো ডিসপ্লে নয় । পেইন্ট অবজেক্টের উপরে থেকে কমপক্ষে একটি পিক্সেল নিচে লেখা সবচেয়ে ভালো দেখায়।

নিম্নলিখিত ফন্ট পাওয়া যায়:

ফন্ট 8 - 5x8 পিক্সেল ফন্ট 12 - 7x12 পিক্সেল ফন্ট 16 - 11x16 পিক্সেল ফন্ট 20 - 14x20 পিক্সেল ফন্ট 24 - 17x24 পিক্সেল

আমাদের এখন শুধু ডিভাইসে পেইন্ট অবজেক্ট ("পেইন্ট") পাঠাতে হবে ("epd"):

epd. SetPartialWindowBlack (paint. GetImage (), 0, 3, paint. GetWidth (), paint. GetHeight ());

SetPartialWindowBlack হল একটি পদ্ধতি যা আমরা ইপিডি অবজেক্টে প্রয়োগ করি, ইমেজ এবং তার প্রস্থ এবং পেইন্ট অবজেক্টের গভীরতা বৈশিষ্ট্য ব্যবহার করে। আমরা বলছি যে এই ছবিটি ডিভাইসে (x, y) = (0, 3) এ লিখতে। এবং আমরা বলছি রঙিন পিক্সেলগুলি কালো হতে হবে।

এটা খুব কঠিন ছিল না, তাই না? আসুন আরেকটি চেষ্টা করি।

পেইন্ট পরিষ্কার করুন (রঙিন);

পেইন্ট। epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

আমরা একই পেইন্ট অবজেক্ট, এবং একই প্রস্থ এবং উচ্চতা পুনরায় ব্যবহার করি, কিন্তু এবার, এটিকে রঙিনে সাফ করি এবং এটিতে একটি অসংলগ্ন স্ট্রিং লিখুন। এবং একটি পরিবর্তনের জন্য, আমরা রঙিন পিক্সেলগুলি লাল করে দেব এবং এটিকে (0, 24) ডিভাইসে লিখব, প্রথমটির ঠিক নিচে।

আমরা ডিভাইসটির মেমরিতে দুটি পেইন্ট অবজেক্ট লিখেছি কিন্তু এখনো সেগুলো প্রদর্শন করতে বলিনি। আমরা নিম্নলিখিত বিবৃতি দিয়ে এটি করি:

epd. DisplayFrame ();

(ই-কালি_ডেমো স্কেচে আমরা আসলে এটি শেষ পর্যন্ত রেখে দিই, আরো কিছু জিনিস আঁকার পর, কিন্তু আপনি চাইলে এখানে ertোকান

ধাপ 7: লাইন এবং আয়তক্ষেত্র অঙ্কন

লাইন এবং আয়তক্ষেত্র অঙ্কন
লাইন এবং আয়তক্ষেত্র অঙ্কন

আসুন দেখি কিভাবে রেখা এবং আয়তক্ষেত্র আঁকা যায়। আমরা একই পেইন্ট বস্তু ব্যবহার করতে যাচ্ছি, কিন্তু আমাদের এটি 40 পিক্সেল চওড়া এবং 36 পিক্সেল উচ্চতা হিসাবে পুনরায় কনফিগার করতে হবে। আমরা এটিকে অসম রঙে সাফ করব।

পেইন্ট সেট প্রস্থ (40);

পেইন্ট সেটহাইট (36); পেইন্ট পরিষ্কার করুন (অসংলগ্ন);

আমরা যথারীতি পেইন্ট অবজেক্টের সাপেক্ষে উপরের বাম কোণে (5, 3) এবং নীচের ডানদিকে (35, 33) একটি (রঙিন) আয়তক্ষেত্র আঁকতে যাচ্ছি। আমরা এর কর্ণগুলিও (5, 3) থেকে (35, 33) এবং (35, 3) থেকে (5, 33) পর্যন্ত রেখা হিসাবে আঁকব। অবশেষে, আমরা (32, 42) স্ক্রিনে পুরো পেইন্ট অবজেক্ট (লাল) লিখব।

//শীর্ষ সারি:

// রেকট্যাঞ্জ পেইন্ট পরিষ্কার (অসংলগ্ন); আঁকা অঙ্কন আয়তক্ষেত্র (5, 3, 35, 33, রঙিন;) পেইন্ট ড্রলাইন (5, 3, 35, 33, রঙ); পেইন্ট ড্রলাইন (35, 3, 5, 33, রঙিন); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

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

// ছায়াযুক্ত আয়তক্ষেত্র পেইন্ট পরিষ্কার (অসংলগ্ন); আঁকা। epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // ভরাট আয়তক্ষেত্র পেইন্ট পরিষ্কার (অসংলগ্ন); আঁকা। epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

ধাপ 8: অঙ্কন বৃত্ত

বৃত্ত অঙ্কন
বৃত্ত অঙ্কন

বৃত্তগুলি আঁকা যেমন সহজ। দুই কোণের স্থানাঙ্কগুলির পরিবর্তে, আমাদের কেন্দ্রের স্থানাঙ্ক এবং ব্যাসার্ধকে প্রশমিত করতে হবে। আমরা পেইন্ট অবজেক্ট সাফ করব তারপর (20, 15) (পেইন্ট অবজেক্টের সাপেক্ষে) এবং ব্যাসার্ধ 15 এ একটি বৃত্ত রাখব।

//দ্বিতীয় সারির

// বৃত্ত পেইন্ট পরিষ্কার (অসংলগ্ন); পেইন্ট DrawCircle (20, 18, 15, রঙ); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // ছায়াময় বৃত্ত পেইন্ট পরিষ্কার (অসংলগ্ন); পেইন্ট। DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // ভরাট বৃত্ত পেইন্ট পরিষ্কার (অসংলগ্ন); পেইন্ট DrawFilledCircle (20, 18, 15, রঙিন); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

ধাপ 9: একটি রঙিন বেকগ্রাউন্ডে রঙহীন

রঙিন বেকগ্রাউন্ডে রঙহীন
রঙিন বেকগ্রাউন্ডে রঙহীন

আমরা এখানে বিখ্যাত হয়ে উঠছি! তাই যখন আমরা একটি রোলে আছি, আসুন নীচে একটি সারিতে আরও 3 টি বৃত্ত করি, এই সময় একটি রঙিন পেইন্ট অবজেক্টে অসংলগ্ন, যেমন আমরা পাঠ্যের দ্বিতীয় লাইনের সাথে করেছি।

// তৃতীয় সারি

// বৃত্ত পেইন্ট পরিষ্কার (রঙিন); আঁকা। epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // ছায়াযুক্ত বৃত্ত পেইন্ট। পরিষ্কার (রঙিন) পেইন্ট। epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // ভরাট বৃত্ত পেইন্ট পরিষ্কার (রঙিন); পেইন্ট DrawFilledCircle (20, 18, 15, Uncolored); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

ছায়াযুক্ত ফিল ছাড়াও, একটি দাগযুক্ত ভরাট রয়েছে, যা এলোমেলো পিক্সেলগুলিকে রঙ করে। তাই উপরের ছায়াময় বৃত্তের পরিবর্তে আমরা রাখতে পারতাম

পেইন্ট। DrawSpeckledCircle (20, 18, 15, 25);

চূড়ান্ত প্যারামিটার (25) হল ঘনত্ব, অর্থাত্ পিক্সেলের শতাংশ যা রঙিন হতে হবে। যদি বাদ দেওয়া হয়, 50% ধরে নেওয়া হয়।

এছাড়াও একটি DrawSpeckledRectangle আছে, optionচ্ছিক অতিরিক্ত প্যারামিটার ঘনত্ব নির্দিষ্ট করে।

ধাপ 10: ঘূর্ণন

ঘূর্ণন
ঘূর্ণন
ঘূর্ণন
ঘূর্ণন

আমরা যা কিছু আঁকতে পারি, আমরা 90, 180 বা 270 ডিগ্রী দিয়ে ঘুরতে পারি। (আমরা ঘড়ির কাঁটার ঘূর্ণন গণনা করি।)

আমরা একটি পেইন্ট অবজেক্টে একটি ROTATE প্রপার্টি প্রয়োগ করতে পারি, কিন্তু এটা বোঝা জরুরী যে এটি যে পেইন্ট অবজেক্টটি ঘোরানো হয়েছে তা নয় বরং আপনি এটিতে যা লিখেছেন তা। তাই যদি আপনি উল্লম্ব পাঠ্য চান তবে আপনার পেইন্ট বস্তুটি অনুভূমিকভাবে পরিবর্তে উল্লম্ব দিকের মতো দীর্ঘ এবং পাতলা কনফিগার করতে হবে।

সুতরাং আপনি যদি চান যে আপনার পাঠ্য ঘড়ির কাঁটার দিকে 90 ডিগ্রী ঘোরানো হোক যাতে এটি উপরে থেকে নীচে (বাম থেকে ডানে পরিবর্তে) পড়ে, পেইন্ট অবজেক্টের উপরের ডান দিকের কোণটি আপনার লিখিত যেকোনো কাজের জন্য (0, 0) হবে অথবা এর মধ্যে আঁকুন, x কোণ থেকে নিচের দিকে, এবং y সেই কোণ থেকে বাম দিকে।

আপনি সম্ভবত লক্ষ্য করেছেন যে আমরা ডিসপ্লের বাম দিকে একটি জায়গা রেখেছি। সুতরাং আসুন সেখানে কিছু লেখা লিখি 270 ডিগ্রী ঘোরানো, যেমন নীচে থেকে উপরে পড়া। এটি নিচের বাম কোণে (0, 0) রাখবে।

উল্লেখ্য যে যাইহোক আপনি একটি পেইন্ট বস্তু ঘোরান ঘূর্ণন শুধুমাত্র প্রযোজ্য হিসাবে আপনি এটিতে পিক্সেল আঁকা। যখন আপনি এটি ডিভাইসে লিখতে আসেন তখনও এটি উপরের বাম হাতের কো -অর্ডিনেট যা আপনাকে SetPartialWindow- এ দিতে হবে।

সুতরাং পুনরাবৃত্তি করার জন্য, আসুন আমাদের পেইন্ট অবজেক্টটি প্রস্থ 32 এবং উচ্চতা 110 এর জন্য কনফিগার করি এবং আমরা এটিকে ROTATE_270 সম্পত্তি দেব। এমন কিছু নয় যে এটি লিখতে বা আঁকার আগে আমাদের এই সব করতে হবে।

পেইন্ট সেট প্রস্থ (32);

পেইন্ট সেটহাইট (110); পেইন্ট সেট রোটেট (ROTATE_270);

আমরা এটিকে রঙিনে সাফ করব এবং এটিতে একটি অসংলগ্ন স্ট্রিং লিখব, তারপর এটিকে (0, 42) এ রাখুন। (এটি উপরের বাম হাতের কোণ, মনে রাখবেন। এতে থাকা পিক্সেলের যে কোন ঘূর্ণন সম্পর্কে ভুলে যান।)

পেইন্ট পরিষ্কার করুন (রঙিন); পেইন্ট। DrawStringAt (8, 8, "Sideways!", & Font16, Uncolored); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

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

epd. DisplayFrame ();

epd. Sleep ();

একটি দ্বিতীয় উদাহরণ স্কেচ 90, 180 এবং 270 ডিগ্রির মাধ্যমে ঘূর্ণন দেখায়। এখন পর্যন্ত আপনার নিজের দ্বারা এটি অনুসরণ করতে সক্ষম হওয়া উচিত।

ধাপ 11: বিটম্যাপ আঁকা

বিটম্যাপ আঁকা
বিটম্যাপ আঁকা

বিক্রেতার ডেমোতে কয়েকটি বিটম্যাপ চিত্রের প্রদর্শন অন্তর্ভুক্ত রয়েছে। এগুলি একটি টুল ব্যবহার করে তৈরি করা সহজ যা থেকে ডাউনলোড করা যায়

www.buydisplay.com/image2lcd

এটি একটি.exe ইনস্টল ফাইল এবং একটি লাইসেন্স কী সহ একটি টেক্সট ফাইল ধারণকারী একটি জিপ ফাইল হিসাবে আসে। এটি প্রসারিত করুন।

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

আপনার পরিচিত যেকোনো অঙ্কন সফটওয়্যার দিয়ে আপনি আপনার ছবি তৈরি করতে পারেন, অথবা আপনি একটি স্কেচ বা অঙ্কনে স্ক্যান করতে পারেন, কিন্তু উভয় ক্ষেত্রেই আপনাকে এটিকে মাত্র 2 স্তরে কমাতে সক্ষম হতে হবে। এটি.gif,-j.webp

Image2Lcd চালু করুন। নীচে, আপনি একটি নিবন্ধন ট্যাব দেখতে পাবেন। এটিতে ক্লিক করুন এবং আপনার ডাউনলোড করা জিপ ফাইলে একটি পাঠ্য ফাইলে আসা নিবন্ধন কোডটি প্রবেশ করুন। এটি ছবির ওভারলে অপসারণ করবে।

Image2Lcd তে, আপনার ইমেজ ফাইলটি খুলুন। বাম হাতের ফলকে, নিশ্চিত করুন যে আপনার আছে

  • আউটপুট ফাইল টাইপ: সি অ্যারে
  • স্ক্যান মোড: অনুভূমিক স্ক্যান
  • BitsPixel: একরঙা
  • সর্বোচ্চ প্রস্থ এবং উচ্চতা: আপনার প্রদর্শন আকার, এবং
  • অন্তর্ভুক্ত হেড ডেটা আনচেক করা আবশ্যক।

প্রক্রিয়া করার জন্য সর্বোচ্চ প্রস্থ এবং উচ্চতার পাশের বোতামে ক্লিক করুন। প্রক্রিয়াকরণের ফলাফল দেখানো হবে। সেরা ফলাফল পেতে আপনাকে উজ্জ্বলতা এবং বৈপরীত্য স্লাইডার সামঞ্জস্য করতে হতে পারে।

উজ্জ্বলতা স্লাইডারের উপরে বিপরীত রঙের চেকবক্সে ক্লিক করুন, এটি একটি নেতিবাচক চিত্র তৈরি করে, যা কিছু কারণে প্রয়োজনীয়, তারপর আপনার Arduino স্কেচ ধারণকারী ফোল্ডারে imagedata.cpp হিসাবে সংরক্ষণ করতে সংরক্ষণ করুন ক্লিক করুন। পরের বার যখন আপনি Arduino IDE দিয়ে স্কেচ খুলবেন তখন আপনাকে এটি একটি নতুন ট্যাব হিসাবে দেখতে হবে।

ধাপ 12: আপনার বিটম্যাপ প্রদর্শন

আপনার বিটম্যাপ প্রদর্শন করা হচ্ছে
আপনার বিটম্যাপ প্রদর্শন করা হচ্ছে

আপনার Arduino স্কেচের মূল ফাইলে, অবিলম্বে উপরের #অন্তর্ভুক্ত লাইনগুলি অনুসরণ করে, সন্নিবেশ করান:

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

একটি নতুন ট্যাব তৈরি করুন (ট্যাব লাইনের শেষে নীচের তীরটি ক্লিক করুন) এবং এটিকে imagedata.h কল করুন। এটিতে নিম্নলিখিত 2 লাইন সন্নিবেশ করান:

বাহ্যিক const স্বাক্ষরবিহীন গৃহ IMAGE_BLACK ;

বহিরাগত const স্বাক্ষরবিহীন গৃহ IMAGE_RED ;

আপনার imagedata.cpp ফাইলে, প্রথম লাইন দিয়ে শুরু হবে

const স্বাক্ষরবিহীন চার gImage_image [2888] = {

(যদি আপনি 1.54”ডিসপ্লে ব্যবহার না করেন তবে বর্গাকার বন্ধনীগুলির সংখ্যা ভিন্ন হবে।) এটি দ্বারা প্রতিস্থাপন করুন

const স্বাক্ষরহীন চার IMAGE_BLACK প্রোগ্রাম = {

এটি একটি কালো এবং সাদা চিত্রের জন্য। আপনি যদি এটি লাল এবং সাদা চান তবে এটিতে পরিবর্তন করুন

const স্বাক্ষরহীন চার IMAGE_RED প্রোগ্রাম = {

এই লাইনের ঠিক আগে, যোগ করুন

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

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

আপনি এখন আপনার ছবি প্রদর্শনের জন্য প্রস্তুত। আপনার প্রধান ফাইলে লুপে () যোগ করুন

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

অথবা, যদি এটি একটি লাল ছবি যা আপনি তৈরি করতেন, দ্বিতীয় লাইনটি হওয়া উচিত

epd. DisplayFrame (NULL, IMAGE_RED);

প্রকৃতপক্ষে আপনি Image2Lcd দিয়ে লাল এবং কালো অংশগুলিকে আলাদাভাবে রূপান্তর করে এবং সেগুলি উভয় দিয়ে প্রদর্শন করে একটি মিলিত লাল এবং কালো ছবি তৈরি করতে পারেন

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

যাইহোক, যে কোনও পিক্সেল যা কালো এবং সাদা ছবিতে কালো এবং লাল এবং সাদা রঙে উভয়ই নির্দিষ্ট, লাল বেরিয়ে আসবে।

পরিশেষে, আপনি যে টেক্সট বা গ্রাফিক্স ফাংশনগুলি সম্পর্কে আমরা আগে শিখেছি তার সাথে আপনি আপনার ছবিটি ওভারলে করতে পারেন। আমি আমার টুইটার হ্যান্ডেল যোগ করতে চেয়েছিলাম, তাই আমি যোগ করেছি

পেইন্ট পেইন্ট (ইমেজ, 20, 152); // প্রস্থ 8 এর একাধিক হওয়া উচিত

পেইন্ট সেট রোটেট (ROTATE_270); পেইন্ট পরিষ্কার করুন (অসংলগ্ন); DrawStringAt (20, 2, "ricpleriche", & Font16, রঙিন); epd. SetPartialWindowRed (paint. GetImage (), 0, 0, paint. GetWidth (), paint. GetHeight ()); epd. SetPartialWindowRed (paint. GetImage (), 0, 0, paint. GetWidth (), paint. GetHeight ()); epd. DisplayFrame ();

প্রস্তাবিত: