en
Feedback
برق و الکترونیک *دانلود پروژه رایگان

برق و الکترونیک *دانلود پروژه رایگان

Open in Telegram

بسمه تعالی دانلود پروژه و پی سی بی رایگان

Show more
2 293
Subscribers
No data24 hours
No data7 days
+330 days
Posts Archive
امروز می‌خوام یه نکته خیلی مهم و کاربردی رو براتون بگم درباره این‌که چطور چیپ حافظه eMMC به پردازنده T113-S3 وصل می‌شه و اصلاً داستانش چیه! 📦 eMMC چیه؟ eMMC یه چیپ حافظه فلش پرسرعته که مستقیماً روی بورد لحیم می‌شه و برای ذخیره سیستم‌عامل، دیتای مهم و بوت لینوکس یا اندروید استفاده می‌شه. ✅ سرعت بالا ✅ پایداری عالی ✅ بدون نیاز به اسلات 📦 T113-S3 چیه؟ T113-S3 یه پردازنده ARM Cortex-A7 از شرکت Allwinner هست که مخصوص سیستم‌های لینوکسی، مالتی‌مدیا، HMI و دستگاه‌های صنعتی طراحی شده. ✔️ کنترلر eMMC داخلی داره ✔️ قابلیت بوت از eMMC 📌 چرا eMMC روی T113-S3؟ ✅ چون سرعتش از SD Card خیلی بالاتره ✅ پایداری بیشتر ✅ حذف اسلات SD و جابجا نشدن حافظه ✅ مناسب نصب سیستم‌عامل (Tina Linux) 📌 نحوه اتصال eMMC به T113-S3: چیپ eMMC از طریق پایه‌های MMC0 یا MMC2 به T113 وصل می‌شه: MMC0_CLK → پایه کلاک MMC0_CMD → خط فرمان MMC0_D0 ~ D7 → دیتا ۸ بیتی VCC → تغذیه VCCQ → تغذیه I/O RSTN → ریست 📌 راه‌اندازی در لینوکس: داخل Device Tree باید eMMC رو تعریف کنی: &mmc0 { bus-width = <8>; non-removable; status = "okay"; }; بعد سیستم‌عامل (مثلاً Tina Linux) موقع بوت، eMMC رو شناسایی و ازش سیستم رو لود می‌کنه. 📌 مزایای این روش: ✅ سرعت خیلی بیشتر از SD Card ✅ امنیت دیتا ✅ امکان بوت مستقیم از eMMC ✅ حذف اسلات SD و فضای کمتر روی برد 📣 نتیجه: اگه داری با T113-S3 یا SoCهای مشابه کار می‌کنی و می‌خوای یه سیستم پایدار و سریع بسازی، حتماً eMMC رو به جای SD Card استفاده کن. هم حرفه‌ای‌تره هم عمر و سرعتش بیشتره 👌

امروز می‌خوام براتون خیلی ساده و شفاف تفاوت eMMC و SD Card رو از نظر اتصال به میکروکنترلر و سرعت و کاربرد توضیح بدم. 📦 eMMC چیه؟ eMMC یک چیپ حافظه فلش داخلیه که مستقیم روی برد لحیم می‌شه و از طریق رابط SDMMC (یا eMMC interface) به میکروکنترلر یا پردازنده وصل می‌شه. ✔️ کنترلر داخلی داره ✔️ باس دیتا ۸ بیتی داره ✔️ سرعت بالا و تاخیر پایین ✔️ مخصوص ذخیره سیستم عامل و دیتاهای حیاتی 📦 SD Card چیه؟ SD Card حافظه‌ایه که همه می‌شناسیم. ✔️ از طریق اسلات SD Card و باس SDMMC به میکرو وصل می‌شه ✔️ معمولاً ۱ یا ۴ خط دیتا داره ✔️ سرعت پایین‌تر ✔️ قابل جابجایی 📌 نحوه اتصال به میکروکنترلر: eMMC → به پایه‌های CMD CLK DAT0-DAT7 VCC VCCQ GND RST_N SD Card → به پایه‌های CMD CLK DAT0-DAT3 VCC GND در هر دو، از Peripheral SDMMC یا SDIO میکرو استفاده می‌شه (مثل STM32H743) 📊 مقایسه سرعت: سرعت خواندن eMMC: حدود 200MB/s سرعت نوشتن eMMC: حدود 100MB/s سرعت خواندن SD Card (UHS-I): حدود 100MB/s سرعت نوشتن SD Card: حدود 30MB/s تاخیر در eMMC کمتره چون روی بورد لحیم شده و باس اختصاصی داره. 📌 پایداری و طول عمر: eMMC: بسیار بالا (مخصوص سیستم‌های صنعتی و سیستم‌عامل) SD Card: متوسط (مناسب دیتاهای غیرحیاتی) 📌 کجا از کدوم استفاده کنیم؟ eMMC: برای بوت سیستم‌عامل برای ذخیره دیتای حیاتی برای دیتالاگرهای صنعتی SD Card: برای ذخیره عکس و فیلم برای ذخیره دیتاهای موقت برای دستگاه‌های ساده و ارزان 📣 نکته مهم eMMC توی میکروکنترلرهایی که SDMMC دارند خیلی راحت راه‌اندازی می‌شه. همون دستوراتی که برای SD Card می‌فرستی (مثل CMD0 و CMD1) می‌تونی به eMMC هم بفرستی. فقط باید پایه‌های DAT0-DAT7 رو هم آماده کنی. در SD Card معمولاً فقط تا ۴ خط دیتا (DAT0-DAT3) استفاده می‌شه. ✅ نتیجه اگه سرعت و پایداری برات مهمه و سیستم‌عامل یا دیتای حیاتی داری → eMMC اگه ارزونی و قابلیت جابجایی می‌خوای → SD Card

🔴 قالَ: کَانَ رَجُلٌ مِنْ أَبَانِ بْنِ دَارِمٍ یُقَالُ لَهُ زُرْعَةُ شَهِدَ قَتْلَ الْحُسَیْنِ علیه السلام فَرَمَی الْحُسَیْنَ بِسَهْمٍ فَأَصَابَ حَنَکَهُ فَجَعَلَ یَتَلَقَّی الدَّمَ ثُمَّ یَقُولُ هَکَذَا إِلَی السَّمَاءِ فَیَرْمِی بِهِ وَ ذَلِکَ أَنَّ الْحُسَیْنَ علیه السلام دَعَا بِمَاءٍ لِیَشْرَبَ فَلَمَّا رَمَاهُ حَالَ بَیْنَهُ وَ بَیْنَ الْمَاءِ فَقَالَ اللَّهُمَّ ظَمِّئْهُ اللَّهُمَّ ظَمِّئْهُ قَالَ فَحَدَّثَنِی مَنْ شَهِدَهُ وَ هُوَ یَمُوتُ وَ هُوَ یَصِیحُ مِنَ الْحَرِّ فِی بَطْنِهِ وَ الْبَرْدِ فِی ظَهْرِهِ وَ بَیْنَ یَدَیْهِ الْمَرَاوِحُ وَ الثَّلْجُ وَ خَلْفَهُ الْکَانُونُ وَ هُوَ یَقُولُ اسْقُونِی أَهْلَکَنِی الْعَطَشُ فَیُؤْتَی بِعُسٍّ عَظِیمٍ فِیهِ السَّوِیقُ وَ الْمَاءُ وَ اللَّبَنُ لَوْ شَرِبَهُ خَمْسَةٌ لَکَفَاهُمْ قَالَ فَیَشْرَبُهُ ثُمَّ یَعُودُ فَیَقُولُ اسْقُونِی أَهْلَکَنِی الْعَطَشُ قَالَ فَانْقَدَّ بَطْنُهُ کَانْقِدَادِ الْبَعِیرِ. وَ ذَکَرَ أَعْثَمُ الْکُوفِیُّ هَذَا الْحَدِیثَ مُخْتَصَراً قَالَ: اسْمُ الرَّامِی لَعَنَهُ اللَّهُ عَبْدُ الرَّحْمَنِ الْأَزْدِیُّ فَقَالَ لَهُ الْحُسَیْنُ علیه السلام اللَّهُمَّ اقْتُلْهُ عَطَشاً وَ لَا تَغْفِرْ لَهُ أَبَداً قَالَ الْقَاسِمُ بْنُ أَصْبَغَ لَقَدْ رَأَیْتُنِی عِنْدَ ذَلِکَ الرَّجُلِ وَ هُوَ یَصِیحُ وَ الْمَاءُ یُبَرَّدُ لَهُ فِیهِ السُّکَّرُ وَ الْأَعْسَاسُ فِیهَا اللَّبَنُ وَ هُوَ یَقُولُ وَیْلَکُمْ اسْقُونِی فَقَدْ قَتَلَنِیَ الْعَطَشُ فَیُعْطَی الْقُلَّةَ أَوِ الْعُسَّ فَإِذَا نَزَعَهُ مِنْ فِیهِ یَصِیحُ حَتَّی انْقَدَّ بَطْنُهُ وَ مَاتَ شَرَّ مِیتَةٍ لَعَنَهُ اللَّهُ. ⚫️محمد کوفی می‌گوید: مردی از قبیله ابان بن دارم که به او زرعه گفته می‌شد، در قتل حسین علیه السّلام شرکت کرده بود و تیری به سمت امام انداخته بود که به گلوی حضرت اصابت کرده بود! این مرد خون بالا می‌آورد و سپس می‌گفت: این چنین به آسمان می‌رود، پس او را با آن رمی می‌کنند! و علت آن بود که امام حسین علیه السّلام آب طلب کرد تا بنوشد، وقتی به حضرت تیر زد، بین امام و آب جدایی انداخت. پس حضرت عرض کرد: خدایا او را تشنه فرما! خدایا او را تشنه فرما! راوی می‌گوید: کسی که این مرد را در حال مرگ دیده بود، برای من حدیث کرد که از حرارت در شکمش فریاد می‌زد و در مقابلش بادبزن و یخ بود و پشت سرش حرارت بود و می‌گفت: آبم دهید که عطش مرا کشت! برایش قدح عظیمی که آب گوشت و آب و شیر بود می‌آوردند که اگر پنج نفر آن را می‌خوردند برایشان کافی بود! آن مرد این طعام را می‌خورد و سپس می‌گفت: آبم دهید که عطش مرا کشت. راوی می‌گوید: شکمش مثل شکافتن شکم شتر شکافته شد. اعثم کوفی این حدیث را به اختصار نقل نموده و گفته: اسم پرتاب کننده تیر عبدالرحمان ازدی لعنه الله بود. پس امام حسین علیه السّلام در حق او چنین دعا کرد: خدایا او را به عطش بکش و ابدا او را نیامرز! قاسم بن اصبغ می‌گوید: من خویش را نزد آن مرد دیدم که فریاد می‌زد و آب برایش خنک می‌کردند و در آن شکر و ظرفی که شیر داشت می‌آوردند، اما او می‌گفت: وای بر شما! مرا آب دهید که عطش مرا کشت! پس به او کوزه و قدح داده می‌شد. وقتی این ظروف را از دهانش جدا می‌کرد، فریاد می‌زد تا شکمش می‌شکافت و به بدترین مردن جان داد! لعنت خدا بر او باد! 📚مناقب ابن شهر آشوب ۴: ۵۷

📊 تعداد سیم‌های LVDS موردنیاز بر اساس رزولوشن و عمق رنگ برای اتصال LCDهای LVDS به سیستم‌های پردازشی، تعداد جفت سیم‌های LVDS (Data و Clock) به رزولوشن و عمق رنگ پنل بستگی داره. در ادامه جدول استاندارد اون رو می‌بینید: 📌 رزولوشن و تعداد سیم‌های LVDS: 📌 800×480 🌈 عمق رنگ: 16 یا 18 بیت 🔌 Single Channel 🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم 📌 1024×600 🌈 عمق رنگ: 18 بیت 🔌 Single Channel 🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم 📌 1280×800 🌈 عمق رنگ: 16 بیت 🔌 Single Channel 🔸 3 جفت سیم دیتا + 1 جفت کلاک = 8 سیم 📌 1280×800 🌈 عمق رنگ: 24 بیت 🔌 Single Channel 🔸 4 جفت سیم دیتا + 1 جفت کلاک = 10 سیم 📌 1366×768 🌈 عمق رنگ: 24 بیت 🔌 Single Channel 🔸 4 جفت سیم دیتا + 1 جفت کلاک = 10 سیم 📌 1600×900 🌈 عمق رنگ: 24 بیت 🔌 Single Channel 🔸 5 جفت سیم دیتا + 1 جفت کلاک = 12 سیم 📌 1920×1080 (Full HD) 🌈 عمق رنگ: 24 بیت 🔌 Dual Channel 🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم 📌 1920×1200 🌈 عمق رنگ: 24 بیت 🔌 Dual Channel 🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم 📌 2560×1440 (QHD) 🌈 عمق رنگ: 24 بیت 🔌 Dual Channel 🔸 8 جفت سیم دیتا + 2 جفت کلاک = 20 سیم 📌 3840×2160 (4K) 🌈 عمق رنگ: 24 یا 30 بیت 🔌 Quad Channel LVDS 🔸 16 جفت سیم دیتا + 4 جفت کلاک = 40 سیم 📌 نکته: به این سیم‌ها باید چند سیم تغذیه (۳.۳V / ۵V)، Ground و سیگنال‌های کنترلی مثل BL_ON و PWM_DIM رو هم اضافه کنید.

🔴 قالَ لَهُ الرَّشيدُ حينَ رَآهُ جالساً عِنْدَ الْكَعْبَة ، أنتَ الَّذی تُبايِعُكَ النّاسُ سِرًّا؟ فَقالَ ؛ أنا إمامُ القلوبِ و أنتَ إمامُ الجُسُوم . 🟠 روزی هارون الرشيد لعنة الله علیه وقتی امام موسی کاظم سلام الله علیه را ديد که در کنار کعبه نشسته اند ، به او گفت تو هستی که مردم با تو در پنهان بيعت می‌کنند؟ حضرت در پاسخ فرمودند: من امام قلب ها هستم و تو امام جسم ها . 📚الصواعق المحرقة ج۲ ص۵۹۰

🔴 عَنِ الْمُفَضَّلِ قَالَ: قَالَ أَبُو عَبْدِ اللهِ علیه السلام:‏ يَا مُفَضَّلُ، إِيَّاكَ وَ الذُّنُوبَ، وَ حَذِّرْهَا شِيعَتَنَا. فَوَ اللهِ مَا هِيَ إِلَى أَحَدٍ أَسْرَعَ مِنْهَا إِلَيْكُمْ، إِنَّ أَحَدَكُمْ لَتُصِيبُهُ الْمَعَرَّةُ مِنَ السُّلْطَانِ، وَ مَا ذَاكَ إِلَّا بِذُنُوبِهِ، وَ إِنَّهُ لَيُصِيبُهُ السُّقْمُ، وَ مَا ذَاكَ إِلَّا بِذُنُوبِهِ، وَ إِنَّهُ لَيُحْبَسُ عَنْهُ الرِّزْقُ، وَ مَا هُوَ إِلَّا بِذُنُوبِهِ، وَ إِنَّهُ لَيُشَدَّدُ عَلَيْهِ عِنْدَ الْمَوْتِ، وَ مَا هُوَ إِلَّا بِذُنُوبِهِ. 🟠 مفضّل بن عمر از امام صادق علیه السّلام نقل می کند که فرمودند : اى مفضّل! تو را از تمام گناهان برحذر می دارم، و تو نیز شيعيان ما را از آن بر حذر بدار. به خدا سوگند! اثر هیچ چیزی سریع تر از اثر گناه به شما نمی رسد. اگر آزار و اذیّتی از سلطان به يكى از شما رسيد، قطعاً به خاطر گناهی است كه انجام داده است. اگر یکی از شما بيمار شد، حتماً به جهت گناهى است كه انجام داده است. اگر رزق و روزى از کسی حبس شد، صرفاً به خاطر گناهى است كه از او صادر گرديده است. اگر هنگام مرگ، کسی به سختی جان داد، فقط به خاطر گناهی است که مرتکب شده است. 📚علل الشرائع ج1، ص297

## ✅ تحلیل ساختار جدید تولید کد در SquareLine Studio 1.5.2 ### 1. جداسازی واضح صفحات (Screens) هر اسکرین فایل مخصوص خودش را دارد: * .c برای پیاده‌سازی اجزا * .h برای اعلام توابع و اشیاء این باعث می‌شه کد: * ماژولارتر (Modular) * قابل نگهداری‌تر * و مناسب‌تر برای مدیریت رم و حافظه باشه ### 2. توابع مدیریت حافظه برای هر صفحه در هر فایل .c توابع زیر دیده می‌شن: * screen_init() → ساخت کامل اجزا * screen_destroy() → حذف تمام ویجت‌ها و آزادسازی حافظه با lv_obj_del() ### 3. متغیرهای global فقط برای صفحه مربوطه مثلاً در ui_Screen1.h فقط اجزای مربوط به همان صفحه تعریف شده‌اند:
extern lv_obj_t * ui_Screen1;
extern lv_obj_t * ui_Button1;
و نه هیچ عنصر از صفحات دیگر. ### 4. ساختار رویدادها (Events) هم منظم شده برای هر رویداد، تابع خاصی در فایل صفحه تعریف می‌شه:
extern void ui_event_Button1(lv_event_t * e);
که یعنی دیگر نیازی به یک فایل ui_events.c برای همه‌ی رویدادها نیست و همین باعث تفکیک بهتر پروژه شده. ### 5. ورود و خروج صفحه بهینه شده در فایل ui.c:
_ui_screen_change(&ui_Screen2, ..., &ui_Screen2_screen_init);
با تغییر صفحه: * صفحه جدید ساخته می‌شه (init) * صفحه قبلی حذف می‌شه (destroy) در نتیجه در لحظه فقط یک صفحه در حافظه هست! 💡 --- ## ✅ نتیجه‌گیری کلی 🔹 SquareLine Studio 1.5.2 واقعاً بهینه‌تر و حرفه‌ای‌تر شده برای پروژه‌های روی بردهای با RAM پایین (مثل V3s یا STM32)، این ساختار باعث می‌شه رم هدر نره. 🔹 این نسخه به‌شدت برای پروژه‌هایی با چند صفحه توصیه می‌شه، چون: * ساختار تمیز و جداگانه برای هر صفحه داره * حافظه به‌درستی آزاد می‌شه * کد راحت‌تر قابل توسعه و دیباگ هست

## 📘 آموزش کامل و کاربردی تابع lv_obj_align() در LVGL ### 📌 تعریف: تابع lv_obj_align() در کتابخانه LVGL برای تراز (Alignment) یک شیء گرافیکی (آبجکت) نسبت به والدش استفاده می‌شه. --- ### ✅ سینتکس:
lv_obj_align(obj, align_type, x_offset, y_offset);
| پارامتر | توضیح | | ------------ | ------------------------------------------ | | obj | شیء موردنظر (مثلاً کانتینر، دکمه، لیبل...) | | align_type | نوع تراز دلخواه (مثل وسط، راست، بالا...) | | x_offset | جابه‌جایی افقی نسبت به محل تراز | | y_offset | جابه‌جایی عمودی نسبت به محل تراز | --- ### 🎯 مثال ساده:
lv_obj_align(my_label, LV_ALIGN_CENTER, 0, 0);
→ لیبل دقیقاً وسط والد خودش قرار می‌گیره. --- ## 📐 لیست کامل LV_ALIGN_... ها با توضیح تصویری: | نام | توضیح | شکل قرارگیری | | --------------------------- | -------------------- | --------------------------- | | LV_ALIGN_CENTER | مرکز کامل | 🔲 وسط والد | | LV_ALIGN_TOP_LEFT | گوشه بالا چپ | ⬉ | | LV_ALIGN_TOP_MID | بالا وسط | ⬆️ | | LV_ALIGN_TOP_RIGHT | گوشه بالا راست | ⬈ | | LV_ALIGN_BOTTOM_LEFT | پایین چپ | ⬋ | | LV_ALIGN_BOTTOM_MID | پایین وسط | ⬇️ | | LV_ALIGN_BOTTOM_RIGHT | پایین راست | ⬊ | | LV_ALIGN_LEFT_MID | وسط سمت چپ | ⬅️ | | LV_ALIGN_RIGHT_MID | وسط سمت راست | ➡️ | | LV_ALIGN_OUT_TOP_LEFT | بیرون بالا چپ | بالاتر از گوشه بالا چپ | | LV_ALIGN_OUT_TOP_MID | بیرون بالا وسط | بالاتر از وسط بالا | | LV_ALIGN_OUT_TOP_RIGHT | بیرون بالا راست | بالاتر از گوشه بالا راست | | LV_ALIGN_OUT_BOTTOM_LEFT | بیرون پایین چپ | پایین‌تر از گوشه پایین چپ | | LV_ALIGN_OUT_BOTTOM_MID | بیرون پایین وسط | پایین‌تر از وسط پایین | | LV_ALIGN_OUT_BOTTOM_RIGHT | بیرون پایین راست | پایین‌تر از گوشه پایین راست | | LV_ALIGN_OUT_LEFT_TOP | بیرون سمت چپ بالا | سمت چپ و بالا | | LV_ALIGN_OUT_LEFT_MID | بیرون سمت چپ وسط | سمت چپ کامل | | LV_ALIGN_OUT_LEFT_BOTTOM | بیرون سمت چپ پایین | سمت چپ و پایین | | LV_ALIGN_OUT_RIGHT_TOP | بیرون سمت راست بالا | سمت راست و بالا | | LV_ALIGN_OUT_RIGHT_MID | بیرون سمت راست وسط | سمت راست کامل | | LV_ALIGN_OUT_RIGHT_BOTTOM | بیرون سمت راست پایین | سمت راست و پایین | --- ## 🔧 نکته مهم درباره Offset‌ها مقدار x_offset و y_offset تعیین می‌کنن که چقدر آبجکت از محل تراز اصلی جابه‌جا بشه. مثلاً:
lv_obj_align(obj, LV_ALIGN_TOP_RIGHT, -10, 5);
یعنی: * آبجکت رو به گوشه بالا-راست والد بچسبون * بعدش ۱۰ پیکسل به چپ (منفی) و ۵ پیکسل به پایین (مثبت) جابه‌جا کن. --- ## 🎯 مقایسه با lv_obj_set_pos() | تابع | ویژگی | | ------------------ | ----------------------------------------------------- | | lv_obj_align() | تراز خودکار بر اساس والد، راحت‌تر ولی کمتر کنترل‌پذیر | | lv_obj_set_pos() | موقعیت دقیق دستی، کنترل کامل روی X/Y | --- ## 📝 نتیجه‌گیری: * lv_obj_align() ابزاری عالی برای جای‌گذاری سریع و مرتب آبجکت‌هاست * برای UI منظم و responsive عالیه * اگه نیاز به دقت پیکسلی داری، از lv_obj_set_pos() استفاده کن --- ## 📢 مناسب برای: ✅ مبتدی‌ها برای شروع راحت ✅ طراحان UI برای ایجاد رابط ریسپانسیو ✅ پروژه‌هایی با زبان RTL مثل فارسی

🟡 پروردگار آنان را از هر فتنه تیره و تاری نجات می‌دهد 🔴 قَالَ آيَةُ اَللهِ اَلْعُظْمَى اَلْإِمَامُ اَلرَّحْمَة سَيِّدُ اَلْمُرْسَلِين رَسُولُ اَللهِ صَلَّى اَلله عَلَيْهِ وَ آلِهِ وَ سَلَّمَ : لَاَحَدُهُمْ اَشَدُّ بَقِیَّةً عَلَی دِینِهِ مِنْ خَرْطِ الْقَتَادِ فِی اللَّیْلَةِ الظَّلْمَاءِ اَوْ کَالْقَابِضِ عَلَی جَمْرِ الْغَضَا اُولَئِکَ مَصَابِیحُ الدُّجَی یُنْجِیهِمُ اللَّهُ مِنْ کُلِّ فِتْنَةٍ غَبْرَاءَ مُظْلِمَة 🟠 حضرت آیت الله العظمی امامِ رحمت رسول الله صلی الله علیه و آله و سلم می فرمایند : ثابت ماندن یکی از آنها [مردم آخر الزمان] بر دین خود، از صاف کردن درخت خاردار (قتاد) با دست در شب ظلمانی، دشوارتر است. و یا مانند کسی است که پاره‌ای از آتش چوب درخت «غضا» را در دست نگاه دارد. آنها چراغ‌های شب تار می‌باشند، پروردگار آنان را از هر فتنه تیره و تاری نجات می‌دهد. 📚بحارالأنوار ج۵۲ ص۱۲۴

📘 آموزش LVGL: کنترل حرفه‌ای TextArea در این پست لیستی از دستورات کاربردی برای کنترل TextArea در کتابخانه‌ی LVGL رو می‌تونید ببینید. با این دستورات می‌تونید ورودی‌های کاربر رو به‌شکل حرفه‌ای کنترل و زیبا کنید. 👇 🔹 فرمان‌های مفید برای `lv_textarea`:
lv_textarea_set_text(ta, "متن")  
➤ تعیین متن اولیه داخل TextArea

lv_textarea_set_placeholder_text(ta, "لطفاً وارد کنید...")  
➤ نمایش متن راهنما به صورت کم‌رنگ

lv_textarea_set_one_line(ta, true)  
➤ تبدیل به حالت تک‌خطی

lv_textarea_set_cursor_pos(ta, n)  
➤ تعیین موقعیت مکان‌نما

lv_textarea_add_text(ta, "abc")  
➤ اضافه کردن متن در موقعیت فعلی مکان‌نما

lv_textarea_del_char(ta)  
➤ حذف یک کاراکتر قبل از مکان‌نما

lv_textarea_set_max_length(ta, n)  
➤ تعیین حداکثر طول متن مجاز

lv_textarea_set_accepted_chars(ta, "0123456789")  
➤ محدودسازی ورودی فقط به کاراکترهای خاص

lv_textarea_set_password_mode(ta, true)  
➤ فعال‌سازی حالت رمز (نمایش کاراکترها به صورت ●)

lv_textarea_set_password_show_time(ta, 1500)  
➤ نمایش موقت آخرین کاراکتر برای ۱.۵ ثانیه

lv_textarea_set_align(ta, LV_TEXT_ALIGN_CENTER)  
➤ ترازبندی متن (راست، چپ، وسط)

lv_textarea_set_text_selection(ta, true)  
➤ فعال کردن قابلیت انتخاب (highlight) متن

lv_textarea_set_scrollbar_mode(ta, LV_SCROLLBAR_MODE_AUTO)  
➤ تنظیم نحوه‌ی نمایش scrollbar (مثلاً فقط وقتی نیاز هست)
📌 این توابع کمک می‌کنن TextAreaها در برنامه‌هاتون حرفه‌ای، زیبا و دقیق کار کنن. ترکیب lv_textarea با lv_keyboard باعث ساخت فرم‌های حرفه‌ای مثل فرم ورود، رمز، شماره‌گیری و ... می‌شه.

📘 آموزش دستورات مهم LVGL برای مدیریت ویجت‌ها 🛠 در این راهنما، با مهم‌ترین توابع LVGL برای ساخت، حذف، و مدیریت ویجت‌ها آشنا می‌شوید: ━━━━━━━━━━━━━━━ 🔹 دستورات ساخت و حذف اشیاء
lv_obj_create(parent)
➤ ساخت یک ویجت جدید با والد مشخص

lv_obj_del(obj)
➤ حذف کامل یک ویجت همراه با فرزندانش

lv_obj_clean(obj)
➤ حذف همه فرزندان یک ویجت، خود ویجت باقی می‌ماند
━━━━━━━━━━━━━━━ 🔹 دستورات تنظیم ظاهر و موقعیت
lv_obj_set_size(obj, w, h)
➤ تعیین اندازه ویجت

lv_obj_set_pos(obj, x, y)
➤ تعیین موقعیت ویجت

lv_obj_align(obj, align, x_ofs, y_ofs)
➤ تراز کردن ویجت نسبت به والد

lv_obj_set_style_bg_color(obj, color, part)
➤ تنظیم رنگ پس‌زمینه

lv_obj_set_style_radius(obj, radius, part)
➤ تنظیم گردی گوشه‌ها (Radius)
━━━━━━━━━━━━━━━ 🔹 دستورات تغییر وضعیت و ویژگی‌ها
lv_obj_add_flag(obj, flag)
➤ اضافه کردن ویژگی (مثلاً مخفی بودن)

lv_obj_clear_flag(obj, flag)
➤ حذف ویژگی

lv_obj_add_state(obj, state)
➤ اعمال حالت خاص (مثل Checked)

lv_obj_clear_state(obj, state)
➤ حذف حالت خاص
━━━━━━━━━━━━━━━ 🔹 توابع بررسی یا دریافت اطلاعات
lv_obj_get_parent(obj)
➤ دریافت والد ویجت

lv_obj_get_width(obj), lv_obj_get_height(obj)
➤ دریافت اندازه ویجت

lv_obj_has_flag(obj, flag)
➤ بررسی وجود ویژگی خاص

lv_obj_has_state(obj, state)
➤ بررسی وجود حالت خاص

lv_obj_get_child_cnt(obj)
➤ تعداد فرزندان ویجت
━━━━━━━━━━━━━━━ 🔹 کنترل رویدادها
lv_obj_add_event_cb(obj, cb, event, user_data)
➤ افزودن تابع واکنش به رویداد

lv_event_get_target(e)
➤ دریافت ویجتی که رویداد روی آن اتفاق افتاده

lv_event_get_code(e)
➤ نوع رویداد (مثل LV_EVENT_CLICKED)

✅ مسیرهای انیمیشن (Animation Path) موجود در LVGL: نوع انیمیشن تابع مربوطه توضیح خطی (Linear) lv_anim_path_linear ساده‌ترین حالت، سرعت ثابت نرم (Ease in) lv_anim_path_ease_in شروع آهسته، شتاب‌گیری تدریجی نرم (Ease out) lv_anim_path_ease_out شروع سریع، پایان آهسته نرم (Ease in/out) lv_anim_path_ease_in_out شروع و پایان آهسته Overshoot lv_anim_path_overshoot جلوتر می‌ره بعد برمی‌گرده Bounce lv_anim_path_bounce مثل توپ بالا پایین می‌پره Step lv_anim_path_step حالت پله‌ای، بدون حرکت نرم

این هم اموزش استفاده از فایل بالا برای اینکه از vscode به عنوان سیمولاتور برای lvgl استفاده کنید