LCD ডিসপ্লের জন্য UM3236 LVGL লাইব্রেরি
ব্যবহারকারীর ম্যানুয়াল
ভূমিকা
স্বয়ংচালিত শিল্পের আধুনিক প্রেক্ষাপটে, ছোট এলসিডি ডিসপ্লেগুলির জন্যও আরও জটিল GUI বিকাশ করা সাধারণ। এই প্রয়োজন মেটাতে, একটি নতুন উপাদান, AEK-LCD-LVGL, তৈরি করা হয়েছে এবং AutoDevKit ইকোসিস্টেমে যুক্ত করা হয়েছে।
এই নতুন উপাদানটি LVGL গ্রাফিক্স লাইব্রেরি আমদানি করে, এবং এটি AEK-LCD-DT028V1 উপাদানের সাথে জটিল GUI দ্রুত বিকাশ করতে ব্যবহৃত হয়।
LVGL (হালকা এবং বহুমুখী গ্রাফিক্স লাইব্রেরি) হল একটি বিনামূল্যের, ওপেন-সোর্স গ্রাফিক্স লাইব্রেরি, যা C ভাষায় লেখা, সহজে ব্যবহারযোগ্য গ্রাফিক্স, চমৎকার ভিজ্যুয়াল ইফেক্ট এবং কম মেমরি দখল সহ GUI তৈরি করার জন্য টুল প্রদান করে।
LVGL খুবই শক্তিশালী কারণ এতে পূর্বনির্ধারিত উপাদান রয়েছে, যেমন বোতাম, চার্ট, তালিকা, স্লাইডার এবং ছবি। অ্যানিমেশন, অ্যান্টি-আলিয়াসিং, অস্বচ্ছতা এবং মসৃণ স্ক্রোলিং সহ গ্রাফিক্স তৈরি করা LVGL-এর মাধ্যমে সরল করা হয়েছে। লাইব্রেরি অনেক ধরনের ইনপুট ডিভাইসের সাথে সামঞ্জস্যপূর্ণ, যেমন টাচপ্যাড, মাউস, কীবোর্ড এবং এনকোডার। এই ব্যবহারকারীর ম্যানুয়ালটির উদ্দেশ্য হল AutoDevKit ব্যবহার করে কিভাবে সহজে একটি LCD GUI তৈরি করা যায় তা দেখানো।
দ্রষ্টব্য: LVGL সম্পর্কে আরো বিস্তারিত জানার জন্য, অফিসিয়াল ডকুমেন্টেশন পড়ুন। সোর্স কোড GitHub থেকে ডাউনলোডের জন্য উপলব্ধ।
AEK-LVGL আর্কিটেকচার
উপরের চিত্রটি LVGL সফ্টওয়্যার আর্কিটেকচারটি AutoDevKit-এ সংহত দেখায়।
সফ্টওয়্যার আর্কিটেকচার দ্বারা চিহ্নিত করা হয়:
- একটি LVGL লাইব্রেরি: এটি AEK-LCD-DT028V1 মৌলিক গ্রাফিক লাইব্রেরির উপর ভিত্তি করে উন্নত গ্রাফিকাল ফাংশন প্রয়োগ করে:
– aek_ili9341_drawPixel: এটি AEK-LCD-DT028V1 LCD-তে পিক্সেল প্রিন্ট করে;
- aek_lcd_get_touchফিডব্যাক: এটি AEK-LCD-DT028V1 LCD টাচ স্ক্রিনে স্পর্শ সনাক্ত করে;
- aek_lcd_read_touchPos: এটি স্পর্শ করা বিন্দুর স্থানাঙ্ক পায়;
– aek_lcd_set_touch প্রতিক্রিয়া: এটি ফ্ল্যাগ করে যে টাচ অ্যাকশন সম্পন্ন হয়েছে। - একটি মৌলিক গ্রাফিক লাইব্রেরি: এটি মৌলিক গ্রাফিক ফাংশন প্রয়োগ করে এবং নিম্ন-স্তরের ড্রাইভার আদিম কল করে।
- একটি নিম্ন-স্তরের ড্রাইভার: এটি MCU পেরিফেরালগুলি প্রয়োগ করে। এই ক্ষেত্রে, SPI প্রোটোকল ব্যবহার করা হয়।
- একটি AEK-LCD-DT028V1: LCD মূল্যায়ন বোর্ড।
LVGL বেসিক
LVGL লাইব্রেরি AEK-LCD-DT028V1 কম্পোনেন্টের সাথে দুটি ড্রাইভার Disprove এবং IndevDriver এর মাধ্যমে যোগাযোগ করে, যেমনটি নীচের ছবিতে দেখানো হয়েছে।
ডিসপ্রোভ বাফার ইমেজ প্রস্তুত করার এবং এটিকে এলসিডিতে প্রদর্শনের জন্য নীচের স্তরে পাঠানোর দায়িত্বে রয়েছে। এটি নিম্নলিখিত lv_disp_drv_t টাইপ করা কাঠামো ব্যবহার করে:
- draw_buf: এটি একটি মেমরি বাফার কাঠামোর দিকে নির্দেশ করে যেখানে LVGL আঁকে।
- hirers: পিক্সেলে প্রদর্শনের অনুভূমিক রেজোলিউশন।
- ভেরেস: পিক্সেলে প্রদর্শনের উল্লম্ব রেজোলিউশন।
- flush_cb: এটি LCD ডিসপ্লেতে মেমরি বাফার প্রিন্ট করতে ব্যবহৃত ফাংশনের দিকে নির্দেশ করে।
- मॉनिटर_সিবি: এটি পিক্সেলের সংখ্যা এবং ডেটা প্রদর্শনের জন্য প্রয়োজনীয় সময় নিরীক্ষণ করে।
অন্য দিকে, IndevDriver নিম্ন স্তর থেকে এলসিডি স্পর্শ তথ্য পুনরুদ্ধার করে। এটি নিম্নলিখিত lv_indev_drv_t টাইপ করা কাঠামো ব্যবহার করে:
প্রকার: এই ক্ষেত্রটিতে ইনপুট ডিভাইসের প্রকার রয়েছে। পূর্বনির্ধারিত উপলব্ধ ম্যাক্রো অন্তর্ভুক্ত:
– LV_INDEV_TYPE_POINTER (আমাদের ক্ষেত্রে ব্যবহৃত)
– LV_INDEV_TYPE_KEYPAD
– LV_INDEV_TYPE_ENCODER
– LV_INDEV_TYPE_BUTTON
redact: এটি স্পর্শ তথ্য পুনরুদ্ধার করতে ব্যবহৃত ফাংশন নির্দেশ করে।
flush_cb এবং redact: ব্যবহারকারী-সংজ্ঞায়িত স্ক্রীন রিফ্রেশ সময়কাল এবং টাচ রিফ্রেশ ইনপুটে যথাক্রমে পর্যায়ক্রমে ভিত্তিক বলা হয়। LVGL লাইব্রেরি একটি অভ্যন্তরীণ ঘড়ির মাধ্যমে রিফ্রেশ সময় পরিচালনা করে। দুটি মৌলিক LVGL ফাংশন সময় ব্যবস্থাপনার জন্য ব্যবহৃত হয়: - lv_tick_inc(uint32_t x): এই ফাংশনের লক্ষ্য হল LVGL সময়কে MCU এর শারীরিক সময়ের সাথে সিঙ্ক্রোনাইজ করা। LVGL স্পেসিফিকেশন অনুযায়ী টিক আপডেট 1 থেকে 10 মিলিসেকেন্ডের মধ্যে সেট করতে হবে। ভিতরে
আমাদের ক্ষেত্রে, আমরা এটি 5 মিলিসেকেন্ডে সেট করেছি। - lv_timer_handler (void): এটি অতিবাহিত সময়ের উপর ভিত্তি করে অভ্যন্তরীণ LVGL অবজেক্ট আপডেট করে। MCU এর প্রোগ্রামেবল ইন্টারাপ্ট টাইমার (PIT) পেরিফেরালের মাধ্যমে শারীরিক সময় পর্যবেক্ষণ করা হয়।
LVGL এবং AEK-LCD-DT028V1 উপাদানের মধ্যে ইন্টারফেস
AEK-LCD-LVGL এবং AEK-LCD-DT028V1 উপাদানের মধ্যে ইন্টারফেস একটি দ্বারা বাস্তবায়িত হয় file "aek_lcd_lvgl_component_rla" ফোল্ডারের অধীনে অবস্থিত lcd_lvgl.c নামক। এই file ফাংশন রয়েছে:
- LVGL লাইব্রেরি আরম্ভ করুন,
- LVGL অভ্যন্তরীণ টাইমার পরিচালনা করুন,
- AEK-LCD-DT028V1 উপাদান দ্বারা বাস্তবায়িত মৌলিক গ্রাফিক লাইব্রেরির সাথে LVGL লাইব্রেরি ইন্টারফেস করুন।
পাঁচটি মূল ফাংশন নিম্নলিখিত অনুচ্ছেদে ব্যাখ্যা করা হয়েছে।
3.1 ইনিট প্রদর্শন
aek_lcd_lvgl_display_init ফাংশন দুটি LVGL কী কাঠামো, Disprove এবং IndevDriver শুরু করে।
3.1.1 অস্বীকার করুন
ডিসপ্রুভ স্ট্রাকচারের মূল লক্ষ্য হল LVGL-এর জন্য অঙ্কন বাফার ধরে রাখা। ডিসপ্রুভ draw_buf ফিল্ড পয়েন্ট মেমরি বাফার কাঠামোতে দুটি ভিন্ন মেমরি বাফার ধারণ করতে সক্ষম। draw_buf ক্ষেত্রটি lv_disp_draw_buf_init() ফাংশন দিয়ে আরম্ভ করা হয়।
উপরের কোডে, DISP_HOR_RES এবং DISP_VER_RES প্যারামিটারগুলি LCD মাত্রার প্রতিনিধিত্ব করে৷
দ্রষ্টব্য:
সিস্টেম উপলব্ধ মেমরি অনুযায়ী বাফার আকার কাস্টমাইজ করা আবশ্যক. অফিসিয়াল LVGL গাইড স্ক্রিন সাইজের অন্তত 1/10 অঙ্কন বাফারের আকার বেছে নেওয়ার সুপারিশ করে। যদি একটি দ্বিতীয় ঐচ্ছিক বাফার ব্যবহার করা হয়, LVGL একটি বাফারে ট্যাপ করতে পারে যখন অন্য বাফারের ডেটা পটভূমিতে প্রদর্শনের জন্য পাঠানো হয়।
কাঠামোর অন্যান্য পরামিতি হল পর্দার মাত্রা, দুটি ফাংশন, ফ্লাশ এবং মনিটর_সিবি, যা আমরা পরে বিশ্লেষণ করব। একবার পূরণ হয়ে গেলে, একটি সক্রিয় ডিসপ্লে সেট করতে ডেডিকেটেড lv_disp_drv_register() ফাংশনের সাথে কাঠামোটিকে নিবন্ধিত করতে হবে।
3.1.2 IndevDriver
IndevDriver নিম্নলিখিত হিসাবে আরম্ভ করা হয়:
মূল সংজ্ঞায়িত ক্ষেত্রগুলি হল ব্যবহৃত ডিভাইসের ধরন এবং এটি পরিচালনা করার ফাংশন। এছাড়াও এই ক্ষেত্রে, ডিভাইসটিকে সক্রিয় করতে প্রাথমিক কাঠামোটি নিবন্ধিত করতে হবে।
3.2 ফ্লাশ
ফ্লাশ ফাংশনটি AEK-LCD-DT028V1 কম্পোনেন্ট বেসিক গ্রাফিক লাইব্রেরি ব্যবহার করে, LCD-এ, মেমরি বাফারে উপস্থিত ইমেজটি আগের অনুচ্ছেদ অনুযায়ী শুরু করা হয়েছে।
ফ্লাশ ফাংশন কঙ্কাল LVGL ফাংশন দ্বারা সরবরাহ করা হয়েছে এবং ব্যবহার করা LCD স্ক্রিন ড্রাইভারের জন্য কাস্টমাইজ করা হয়েছে (যেমন, aek_ili9341_drawPixel – পিক্সেল অঙ্কন)। ইনপুট পরামিতি হল:
- শুষ্ক: ডিসপ্রুভ করার নির্দেশক
- এলাকা: বাফার যাতে নির্দিষ্ট এলাকা আপডেট করা প্রয়োজন
- রঙ: বাফার যা প্রিন্ট করা রং ধারণ করে।
3.3 মনিটর_সিবি
মনিটর_সিবি ফাংশনটি অফিসিয়াল LVGL গাইডে সংজ্ঞায়িত করা হয়েছে এবং কাস্টমাইজেশনের প্রয়োজন নেই।
3.4 my_input_read
my_input_read ফাংশন উচ্চ স্তরে LCD স্ক্রীন থেকে আসা ইনপুট পরিচালনার দায়িত্বে রয়েছে।
ফাংশন কঙ্কাল LVGL লাইব্রেরি দ্বারা সংজ্ঞায়িত করা হয়। ইনপুট পরামিতি হল:
- drv: প্রাথমিক ইনপুট ড্রাইভারের পয়েন্টার
- ডেটা: স্পর্শ করা পয়েন্টগুলির পিক্সেল-রূপান্তরিত x,y স্থানাঙ্ক রয়েছে নীচের চিত্রটি my_input_read ফাংশনের বাস্তবায়ন দেখায়:
3.5 রিফ্রেশ স্ক্রীন
aek_lcd_lvgl_refresh_screen ফাংশন LVGL অভ্যন্তরীণ টাইমার আপডেট করে।
দ্রষ্টব্য: LVGL সময় সীমাবদ্ধতা পূরণ করতে এই ফাংশনটি সঠিকভাবে অ্যাপ্লিকেশন কোডে স্থাপন করতে হবে।
AutoDevKit ইকোসিস্টেম
AEK-LCD-LVGL ব্যবহার করে অ্যাপ্লিকেশন ডেভেলপমেন্ট সম্পূর্ণ অ্যাডভান লাগেtage এর AutoDevKit ইকোসিস্টেম, যার মৌলিক উপাদানগুলি হল:
- AutoDevKit Studio IDE থেকে ইনস্টল করা যাবে www.st.com/autodevkitsw
- উইন্ডোজ বা খোলা ডিবাগারের জন্য SPC5-UDESTK ডিবাগিং সফ্টওয়্যার
- AEK-LCD-LVGL ড্রাইভ
4.1AutoDevKit স্টুডিও
AutoDevKit স্টুডিও (STSW-অটোডেভকিট) হল একটি ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) যা Eclipse-এর উপর ভিত্তি করে SPC5 পাওয়ার আর্কিটেকচার 32-বিট মাইক্রোকন্ট্রোলারের উপর ভিত্তি করে এমবেডেড অ্যাপ্লিকেশনগুলির বিকাশে সহায়তা করার জন্য ডিজাইন করা হয়েছে।
প্যাকেজটিতে সমস্ত প্রাসঙ্গিক উপাদান এবং চূড়ান্ত অ্যাপ্লিকেশন উত্স কোড তৈরি করার জন্য প্রয়োজনীয় মূল উপাদানগুলির সাথে প্রকল্পগুলি শুরু করার জন্য একটি অ্যাপ্লিকেশন উইজার্ড অন্তর্ভুক্ত রয়েছে। AutoDevKit স্টুডিওতে আরও বৈশিষ্ট্য রয়েছে:
- স্ট্যান্ডার্ড Eclipse মার্কেটপ্লেস থেকে অন্যান্য সফ্টওয়্যার পণ্য একীভূত করার সম্ভাবনা
- বিনামূল্যে লাইসেন্স GCC GNU C কম্পাইলার উপাদান
- শিল্প-মান কম্পাইলারদের জন্য সমর্থন
- মাল্টি-কোর মাইক্রোকন্ট্রোলারের জন্য সমর্থন
- MCU পিন কনফিগারেশনের সুবিধার্থে PinMap সম্পাদক
- ইন্টিগ্রেটেড হার্ডওয়্যার এবং সফ্টওয়্যার উপাদান, উপাদান সামঞ্জস্য পরীক্ষা, এবং MCU এবং পেরিফেরাল কনফিগারেশন সরঞ্জাম
- সামঞ্জস্যপূর্ণ ফাংশন বোর্ড যোগ বা অপসারণ করে বিদ্যমান থেকে নতুন সিস্টেম সমাধান তৈরি করার সম্ভাবনা
- যেকোনো সামঞ্জস্যপূর্ণ MCU-এর জন্য নতুন কোড অবিলম্বে তৈরি করা যেতে পারে
- AEK-LCDLVGL কম্পোনেন্ট সহ প্রতিটি কার্যকরী উপাদান নিয়ন্ত্রণ করার জন্য উচ্চ-স্তরের অ্যাপ্লিকেশন APIs।
আরও তথ্যের জন্য পড়ুন ইউএম 2623 (বিশেষ করে, বিভাগ 6 এবং 7 ধারা) অথবা ভিডিও টিউটোরিয়াল দেখুন।
4.2 AEK_LCD_LVGL উপাদান
প্রোগ্রামিং পর্বের সুবিধার্থে AEK-LVGL ড্রাইভারগুলিকে STSW-AUTODEVKIT (সংস্করণ 2.0.0 থেকে) ইনস্টলেশন প্রদান করা হয়।
সর্বশেষ সংস্করণ পেতে আপনার AutoDevKit ইনস্টলেশন আপডেট করুন। একবার সঠিকভাবে ইনস্টল করার পরে, AEK_LVGL কম্পোনেন্ট RLA নামক উপাদানটি নির্বাচন করুন।
4.2.1 AEK_LCD_LVGL কম্পোনেন্ট কনফিগারেশন
কম্পোনেন্ট কনফিগার করতে, নিচের পদ্ধতি অনুসরণ করুন।
ধাপ 1. Refr_Period সময় সেট করুন। এটি রিফ্রেশ স্ক্রীন পিরিয়ড (প্রস্তাবিত মান 30)।
ধাপ 2. Read_Period সময় সেট করুন। নিম্নলিখিত দুটি স্পর্শ সনাক্তকরণের মধ্যে এটি সর্বনিম্ন সময় (প্রস্তাবিত মান 30)।
ধাপ 3. ছায়া, গ্রেডিয়েন্ট, গোলাকার কোণ, বৃত্ত, আর্কস, স্কু লাইন এবং চিত্র রূপান্তরের মতো উন্নত উইজেট সক্ষম করতে ড্র কমপ্লেক্স বাক্সে টিক দিন।
ধাপ 4. আপনি যে ফন্ট ব্যবহার করতে চান তা নির্বাচন করুন। বিবেচনা করুন যে প্রতিটি ফন্টের জন্য উত্পন্ন অ্যাপ্লিকেশন কোডের জন্য অতিরিক্ত ফ্ল্যাশ মেমরি প্রয়োজন।
SPC58EC এর উপর ভিত্তি করে AEK-LCD-LVGL কম্পোনেন্ট দিয়ে কিভাবে একটি AutoDevKit প্রকল্প তৈরি করবেন
ধাপগুলো হল:
ধাপ 1. SPC58EC সিরিজ মাইক্রোকন্ট্রোলারের জন্য একটি নতুন AutoDevKit স্টুডিও অ্যাপ্লিকেশন তৈরি করুন এবং নিম্নলিখিত উপাদানগুলি যোগ করুন:
– SPC58ECxx Init প্যাকেজ কম্পোনেন্ট RLA
- SPC58ECxx নিম্ন স্তরের ড্রাইভার উপাদান RLA
দ্রষ্টব্য:
শুরুতে এই উপাদানগুলি যোগ করুন, অন্যথায় অবশিষ্ট উপাদানগুলি দৃশ্যমান হবে না।
ধাপ 2. নিম্নলিখিত অতিরিক্ত উপাদান যোগ করুন:
ধাপ 2a। AutoDevKit Init প্যাকেজ উপাদান
ধাপ 2 খ. SPC58ECxx প্ল্যাটফর্ম উপাদান RLA
ধাপ 2 গ। AEK-LCD-DT028V1 কম্পোনেন্ট RLA (দেখুন ইউএম 2939 কনফিগারেশনের জন্য)
ধাপ 2d. AEK-LCD-LVGL কম্পোনেন্ট RLA
ধাপ 3. AEK-LCD-LVGL কনফিগারেশন উইন্ডোতে [অ্যালোকেশন] বোতামে ক্লিক করুন। এই অপারেশনটি AEK-LCD-LVGL কনফিগারেশন AutoDevKit-এ অর্পণ করে।
ধাপ 4. বরাদ্দ PIT টাইমার পেরিফেরাল সক্রিয় করেছে। আপনি নিম্ন-স্তরের ড্রাইভার উপাদানে এটি যাচাই করতে পারেন।
ধাপ 5. AutoDevKit স্টুডিওতে উপযুক্ত আইকন ব্যবহার করে অ্যাপ্লিকেশন তৈরি এবং তৈরি করুন। প্রোজেক্ট ফোল্ডারটি তারপর নতুন দিয়ে পপুলেট করা হয়েছে files, main.c সহ কম্পোনেন্ট ফোল্ডারটি তখন AEKLCD-DT028V1 এবং দিয়ে পপুলেট করা হয়
AEK-LCD-LVGL ড্রাইভার।
ধাপ 6. ম্যানিক খুলুন file এবং AEK-LCD-DT028V1.h এবং AEK_LCD_LVGL.h অন্তর্ভুক্ত files.
ধাপ 7. ম্যানিক মধ্যে file, irqIsrEnable() ফাংশনের পরে, নিম্নলিখিত বাধ্যতামূলক ফাংশন সন্নিবেশ করান:
ধাপ 8. main.c-এ, একটি প্রাক্তন কপি এবং পেস্ট করুনampLVGL লাইব্রেরি থেকে অফিসিয়াল গাইড থেকে নেওয়া এবং এটি main() এ সন্নিবেশ করান।
ধাপ 9. অ্যাপ্লিকেশনটি সংরক্ষণ করুন, তৈরি করুন এবং কম্পাইল করুন।
ধাপ 10. বোর্ড খুলুন view AutoDevKit দ্বারা প্রদত্ত সম্পাদক এটি বোর্ডগুলিকে কীভাবে তারের করতে হয় তার একটি গ্রাফিকাল পয়েন্ট-টু-পয়েন্ট গাইড প্রদান করে।
ধাপ 11. একটি মিনি-ইউএসবি থেকে ইউএসবি কেবল ব্যবহার করে AEK-LCD-DT028V1 আপনার পিসিতে একটি USB পোর্টের সাথে সংযুক্ত করুন৷
ধাপ 12. SPC5-UDESTK-SW চালু করুন এবং ডিবাগ খুলুন file AEK-LCD-LVGL- অ্যাপ্লিকেশন /UDE ফোল্ডারে।
ধাপ 13. আপনার কোড চালান এবং ডিবাগ করুন।
AEK-LVGL এর জন্য উপলভ্য ডেমো
AEK-LCD-LVGL কম্পোনেন্ট সহ বেশ কিছু ডেমো দেওয়া আছে:
- SPC582Bxx_RLA AEK_LCD_LVGL পরীক্ষার আবেদন
- SPC58ECxx_RLA AEK-LCD_LVGL পরীক্ষার আবেদন
- ডুয়াল স্ক্রীন AVAS ডেমো - SPC58ECxx_RLA_MainEcuForIntegratAVASControl - পরীক্ষার আবেদন
দ্রষ্টব্য: নতুন AutoDevKit রিলিজের সাথে আরও ডেমো উপলব্ধ হতে পারে।
উন্নত অ্যাপ্লিকেশন প্রাক্তনample - ডুয়াল স্ক্রীন AVAS ডেমো
LVGL ব্যবহার করে একটি উন্নত অ্যাপ্লিকেশন প্রয়োগ করা হয়েছে। এই অ্যাপ্লিকেশনটি একটি ডিসপ্লেতে ইঞ্জিন rpms এর জন্য একটি গাড়ী গেজ আঁকে এবং সম্পর্কিত গেজ অ্যানিমেশন পরিচালনা করে।
বাস্তবায়িত AVAS অ্যাপ্লিকেশনটি AEK-AUD-C1D9031 বোর্ডের উপর ভিত্তি করে এবং একটি বৈদ্যুতিক গাড়ির কাছে আসার পথচারীদের সতর্ক করতে কম গতিতে গাড়ির ইঞ্জিনের শব্দ অনুকরণ করে।
ডেমোতে, আমরা AEK-LCD-DT028V1-এর LCD স্ক্রিনে প্রয়োগ করা একটি কন্ট্রোল প্যানেলের মাধ্যমে একটি গাড়ির ইঞ্জিনের ত্বরণ এবং হ্রাস (অর্থাৎ, rpms-এর বৃদ্ধি/হ্রাস) এবং এর ভলিউম অনুকরণ করি।
আমরা একটি দ্বিতীয় AEK-LCD-DT028V1 LCD যোগ করে এবং ইঞ্জিন rpm মান পরিমাপ করার জন্য একটি স্পিডোমিটার তৈরি করতে LVGL লাইব্রেরি ব্যবহার করে ডেমোটি প্রসারিত করেছি।
7.1 LVGL উইজেট ব্যবহার করা হয়েছে
ডুয়াল স্ক্রীন AVAS ডেমো বিকাশ করতে, আমরা নিম্নলিখিত LVGL উইজেটগুলি ব্যবহার করেছি:
- ট্যাকোমিটার ব্যাকগ্রাউন্ড হিসাবে ব্যবহৃত একটি ছবি
- ট্যাকোমিটার নির্দেশক হিসাবে ব্যবহৃত একটি চাপ
- একটি অ্যানিমেশন যা ইঞ্জিনের আরপিএম অনুযায়ী আর্ক মান আপডেট করে
7.1.1 একটি LVGL ইমেজ উইজেট
LVGL লাইব্রেরির সাথে একটি চিত্র ব্যবহার করতে, একটি বিনামূল্যে অনলাইন ব্যবহার করে এটিকে একটি C অ্যারেতে রূপান্তর করুন৷ রূপান্তরকারী
দ্রষ্টব্য:
ছবি রূপান্তর করার সময় বিগ-এন্ডিয়ান ফরম্যাটের বক্সে টিক দিতে ভুলবেন না।
ডুয়াল স্ক্রীন AVAS ডেমোতে, টেকোমিটার ইমেজ প্রতিনিধিত্বকারী C অ্যারেটির নাম দেওয়া হয়েছে গেজ। ইমেজ উইজেট হিসাবে কাস্টমাইজ করা হয়েছে অনুসরণ করে:
কোথায়:
- lv_img_declare: গেজ নামক একটি চিত্র ঘোষণা করতে ব্যবহৃত হয়।
- lv_img_create: একটি ইমেজ অবজেক্ট তৈরি করতে এবং বর্তমান স্ক্রিনে সংযুক্ত করতে ব্যবহৃত হয়।
- lv_img_set_src: এটি পূর্বে দেখানো LVGL কনভার্টার থেকে প্রাপ্ত চিত্র (এটি jpg বিন্যাস ব্যবহার করার পরামর্শ দেওয়া হয়)।
- lv_obj_align: একটি প্রদত্ত অফসেট দিয়ে ছবিটিকে কেন্দ্রে সারিবদ্ধ করতে ব্যবহৃত হয়।
- lv_obj_set_size: ছবির আকার সেট করতে ব্যবহৃত হয়।
দ্রষ্টব্য:
LVGL লাইব্রেরির মাধ্যমে একটি ছবি কীভাবে পরিচালনা করবেন সে সম্পর্কে আরও বিশদ বিবরণের জন্য, অফিসিয়াল ডকুমেন্টেশন দেখুন।
7.1.2 একটি LVGL আর্ক উইজেট
ইঞ্জিন তাৎক্ষণিক rpms দেখানোর জন্য একটি বহুবর্ণের চাপ তৈরি করা হয়েছে। বহুবর্ণের চাপে যথাক্রমে লাল এবং নীল দুটি সংলগ্ন রং থাকে।
নিচের কোডটি দেখায় কিভাবে একটি তৈরি করতে হয় চাপ:
কোথায়:
- lv_arc_create: একটি চাপ বস্তু তৈরি করে।
- lv_arc_set_rotation: চাপের ঘূর্ণন সেট করে।
- lv_arc_set_bg_angles: সর্বোচ্চ এবং সর্বনিম্ন আর্ক মান ডিগ্রীতে সেট করে।
- lv_arc_set_value: আর্ক প্রাথমিক মান শূন্যে সেট করে।
- lv_obj_set_size: চাপের মাত্রা সেট করে।
- lv_obj_remove_style: আর্ক ফাইনাল পয়েন্টার সরিয়ে দেয়।
- lv_obj_clear_flag: চাপকে ক্লিকযোগ্য নয় বলে সেট করে।
- lv_obj_align: একটি নির্দিষ্ট অফসেট দিয়ে আর্কটিকে কেন্দ্রে সারিবদ্ধ করে।
7.1.3 উইজেট সম্পর্কিত অ্যানিমেশন
একটি নির্দিষ্ট আর্ক অ্যানিমেশন ফাংশন তৈরি করা হয় এবং rpm পরিবর্তনগুলি প্রদর্শন করতে LVGL ইঞ্জিনে প্রেরণ করা হয়। ফাংশন কোড হল নিম্নলিখিত:
কোথায়:
- arc: বর্তমান আর্ক উইজেটের পয়েন্টার
- বিলম্ব: অ্যানিমেশন শুরু হওয়ার আগে বিলম্বের সময়
- start: প্রাথমিক চাপ অবস্থান
- শেষ: চূড়ান্ত চাপ অবস্থান
- গতি: ইউনিট/সেকেন্ডে অ্যানিমেশন গতি।
দ্রষ্টব্য: ব্যবহৃত অ্যানিমেশন ফাংশন সম্পর্কে আরো বিস্তারিত জানার জন্য, LVGL ডকুমেন্টেশন পড়ুন। বিবেচনা করে যে সম্পূর্ণ চাপটি দুটি সংলগ্ন খিলান নিয়ে গঠিত, আমাদের অ্যানিমেশন ফাংশনটি সঠিকভাবে পরিচালনা করতে হয়েছিল। এই উদ্দেশ্যে, আসুন দুটি ভিন্ন পরিস্থিতি বিশ্লেষণ করি:
- কেস: অ্যানিমেশনে একটি আর্ক জড়িত থাকে এই সাধারণ ক্ষেত্রে, আমরা আর্কে একটি একক অ্যানিমেশন বরাদ্দ করি।

- কেস: অ্যানিমেশন দুটি খিলান জড়িত এই ক্ষেত্রে, দ্বিতীয় আর্কের অ্যানিমেশন প্রথমটির অ্যানিমেশনের শেষে শুরু হয়।

একটি নির্দিষ্ট LVGL ফাংশন (lv_anim_speed_to_time) অ্যানিমেশন সময় গণনা করে। এই নির্বাহের সময়টি দ্বিতীয় আর্ক অ্যানিমেশনের বিলম্ব গণনা করতে ব্যবহৃত হয়।
7.2 ডুয়াল কোর বাস্তবায়ন
ডুয়াল স্ক্রীন AVAS ডেমোতে, ডিসপ্লে এবং অডিও প্লেব্যাক কাজগুলি একযোগে একটি রিয়েল-টাইম এমবেডেড সিস্টেমে সম্পাদিত হয়। সিস্টেমের প্রতিক্রিয়াশীলতার সম্ভাব্য ক্ষতি কাটিয়ে উঠতে, আমরা দুটি ভিন্ন কোর ব্যবহার করার সিদ্ধান্ত নিয়েছি: একটি ডিসপ্লেতে উত্সর্গীকৃত এবং একটি অডিও প্লেব্যাকের জন্য।
AEK-MCU-C4MLIT1 বোর্ড একটি SPC58EC80E5 মাইক্রোকন্ট্রোলার একটি ডুয়াল কোর প্রসেসর সহ হোস্ট করে, যা উপরে বর্ণিত ক্ষেত্রে সবচেয়ে উপযুক্ত।
বিস্তারিতভাবে:
- কোর 2: এটি শুরু করা প্রথম, এটি লাইব্রেরি শুরু করে এবং তারপরে অ্যাপ্লিকেশন কোডটি কার্যকর করে।
- কোর 0: এটি প্রধান লুপের মধ্যে aek_lcd_lvgl_refresh_screen() ফাংশনকে কল করে, যাতে ক্রমাগত ডিসপ্লে আপডেট করা যায় এবং টাচ ইনপুট পড়ার জন্য।
PIT ফাংশন এবং aek_lcd_lvgl_refresh_screen() একই কোরে স্থাপন করা আবশ্যক।
পুনর্বিবেচনার ইতিহাস
সারণি 1. নথি সংশোধনের ইতিহাস
| তারিখ | রিভিশন | পরিবর্তন |
| ২৫-অক্টোবর-২০০৭ | 1 | প্রাথমিক মুক্তি। |
গুরুত্বপূর্ণ নোটিশ - সাবধানে পড়ুন
STMicroelectronics NV এবং এর অধীনস্থ সংস্থাগুলি ("ST") ST পণ্য এবং/অথবা এই নথিতে কোনো নোটিশ ছাড়াই পরিবর্তন, সংশোধন, পরিবর্ধন, পরিবর্তন এবং উন্নতি করার অধিকার সংরক্ষণ করে৷ অর্ডার দেওয়ার আগে ক্রেতাদের ST পণ্যের সাম্প্রতিক প্রাসঙ্গিক তথ্য প্রাপ্ত করা উচিত। ST পণ্যগুলি অর্ডার প্রাপ্তির সময় ST-এর শর্তাবলী অনুসারে বিক্রি করা হয়। ক্রেতারা ST পণ্যের পছন্দ, নির্বাচন এবং ব্যবহারের জন্য সম্পূর্ণরূপে দায়ী এবং ST আবেদন সহায়তা বা ক্রেতাদের পণ্যের নকশার জন্য কোনো দায়বদ্ধতা গ্রহণ করে না।
এখানে ST দ্বারা কোনও বৌদ্ধিক সম্পত্তির অধিকারের কোনও লাইসেন্স, প্রকাশ বা উহ্য নেই।
এখানে উল্লিখিত তথ্য থেকে ভিন্ন বিধান সহ ST পণ্যের পুনঃবিক্রয় এই জাতীয় পণ্যের জন্য ST দ্বারা প্রদত্ত যে কোনও ওয়ারেন্টি বাতিল করবে।
ST এবং ST লোগো হল ST-এর ট্রেডমার্ক৷ ST ট্রেডমার্ক সম্পর্কে অতিরিক্ত তথ্যের জন্য, পড়ুন www.st.com/trademarks. অন্যান্য সমস্ত পণ্য বা পরিষেবার নাম তাদের নিজ নিজ মালিকদের সম্পত্তি.
এই নথির তথ্য এই নথির পূর্ববর্তী সংস্করণে পূর্বে সরবরাহ করা তথ্যের স্থলাভিষিক্ত এবং প্রতিস্থাপন করে। © 2023 STMicroelectronics – সর্বস্বত্ব সংরক্ষিত
UM3236 - রেভ 1 - অক্টোবর 2023
আরও তথ্যের জন্য আপনার স্থানীয় STMicroelectronics বিক্রয়ের সাথে যোগাযোগ করুন
দলিল/সম্পদ
![]() |
LCD ডিসপ্লের জন্য STMicroelectronics UM3236 LVGL লাইব্রেরি [পিডিএফ] ব্যবহারকারী ম্যানুয়াল AEK-LCD-DT028V1, UM3236, UM3236 LCD ডিসপ্লের জন্য LVGL লাইব্রেরি, LCD ডিসপ্লের জন্য LVGL লাইব্রেরি, LCD ডিসপ্লের জন্য লাইব্রেরি, LCD ডিসপ্লে |
