برق و الکترونیک *دانلود پروژه رایگان
Статистикаبسمه تعالی دانلود پروژه و پی سی بی رایگان
- Последний пост
- 6 авг.
- Последнее чтение
- 13 авг.
- Постов за неделю
- 0
- Всего постов
- 20
- Тип
- открытый
- Язык
- персидский
- В каталоге с
- 13 авг.
- 1/24сутки в ленте
- 312
- 1/48двое суток
- 357
- 1/72трое суток
- 385
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
📌 #آموزش_برنامهنویسی #Embedded_C #Bitwise #STM32 #AVR 💥 دستکاری بیتها مثل یک حرفهای! (آموزش عملگرهای &= ، |= و ^=) توی برنامهنویسی میکروکنترلرها، خیلی وقتها لازم داری فقط یک بیت خاص از یک متغیر یا ثبت (Register) رو تغییر بدی بدون اینکه به بقیه ۷ یا ۳۱ بیتِ دیگه دست بزنی! اگر این ۳ عملگر ترکیبی بیتی را یاد بگیری، کنترل سختافزار برات مثل آب خوردن میشه: 1️⃣ عملگر |= (OR ترکیبی): برای ۱ کردن (Set) یک بیت خاص عملگر OR هر بیتی رو که با 1 ترکیب بشه، حتماً ۱ میکنه و اگر با 0 ترکیب بشه، تغییری توی بیت ایجاد نمیکنه. 🎯 کاربرد: روشن کردن یک پین، فعال کردن یک وقفه یا تیک زدن یک پرچم (Flag). C // یک کردن بیت شماره 3 متغیر reg (بدون تغییر بقیه بیتها) reg |= (1 << 3); 💡 چطور کار میکنه؟ عبارت 1 << 3 یک عدد میسازه که فقط بیت ۳ اون یک است ( 0008 یا 00001000 ). وقتی این عدد با reg اور ( | ) میشه، فقط بیت شماره ۳ روشن میشه. 2️⃣ عملگر &= ~ (AND با NOT): برای ۰ کردن (Clear) یک بیت خاص عملگر AND هر بیتی رو که با 0 ترکیب بشه، حتماً ۰ میکنه. برای همین اول ماسک بیتی رو با علامت ~ (NOT) معکوس میکنیم تا بیت مورد نظر صفر بشه و بقیه بیتها یک بمونن. 🎯 کاربرد: خاموش کردن یک پین، غیرفعال کردن یک ماژول یا پاک کردن پرچم وقفه. C // صفر کردن بیت شماره 3 متغیر reg (بدون تغییر بقیه بیتها) reg &= ~(1 << 3); 💡 چطور کار میکنه؟ عبارت ~(1 << 3) تمام بیتها را ۱ میکند بجز بیت شماره ۳ که ۰ میشود ( 11110111 ). وقتی این عدد با reg اند ( & ) میشه، بیت ۳ حتماً ۰ میشه و بقیه بیتها بدون تغییر میمونن. 3️⃣ عملگر ^= (XOR ترکیبی): برای معکوس کردن (Toggle) یک بیت خاص عملگر XOR ویژگی جالبی داره: ترکیب هر بیت با 1 باعث معکوس شدن (Toggle) اون بیت میشه (اگر ۰ باشه ۱ میشه، اگر ۱ باشه ۰ میشه). 🎯 کاربرد: چشمکزن کردن LED، معکوس کردن پایه خروجی در هر بار فراخوانی. C // معکوس کردن وضعیت بیت شماره 3 متغیر reg reg ^= (1 << 3); 🛠 ساخت ماکروهای استاندارد صنعتی برنامهنویسهای ارشد برای اینکه کدهاشون خوانا باشه، این عملگرها رو توی الگوی ماکرو تعریف میکنند. دقیقاً کدی که توی کتابخانههای رسمی HAL و LL میکروکنترلرهای STM32 هم استفاده میشه: C // ماکروهای استاندارد برای دستکاری بیتها #define SET_BIT(REG, BIT) ((REG) |= (1U << (BIT))) #define CLEAR_BIT(REG, BIT) ((REG) &= ~(1U << (BIT))) #define TOGGLE_BIT(REG, BIT) ((REG) ^= (1U << (BIT))) #define READ_BIT(REG, BIT) (((REG) >> (BIT)) & 1U) 🔹 مثال استفاده در کد: C SET_BIT(GPIOA->ODR, 5); // روشن کردن پین 5 پورت A TOGGLE_BIT(GPIOB->ODR, 0); // معکوس کردن وضعیت پین 0 پورت B ⚡️ چرا این روش از کدهای معمولی سریعتره؟ چون معماری پردازندههای ARM Cortex و حتی AVR دستورات سختافزاری مستقیمی برای این الگوی بیتی دارند. وقتی کامپایلر این عبارات را میبیند، آنها را مستقیم به یک دستور سریع اسمبلی (مثل ORR یا BIC) تبدیل میکند که تنها در یک سیکل ساعت (1 Clock Cycle) در CPU اجرا میشوند! 🔥 💡 خلاصه برای به خاطر سپردن: |= 👉 برای ۱ کردن بیت (Set) &= ~ 👉 برای ۰ کردن بیت (Clear) ^= 👉 برای معکوس کردن بیت (Toggle)
📌 #آموزش_برنامهنویسی #C_Tips #Embedded_C #STM32 💥 عملگر کاما (Comma Operator) در C/C++؛ تکنیکی که کمتر کسی بلده! خیلی از برنامهنویسها فکر میکنند علامت کاما , فقط برای جدا کردن متغیرها موقع تعریف (int a, b;) یا جدا کردن پارامترهای توابع است. اما کاما یک «عملگر» واقعی (Operator) است! 🔍 عملگر کاما دقیقاً چکار میکند؟ این عملگر تمام عبارتهای قبل و بعد از خودش را از چپ به راست اجرا میکند، اما فقط و فقط مقدار آخرین عبارت را بهعنوان نتیجه نهایی برمیگرداند! 🔹 یک مثال ساده برای درک مفهوم: C int x; x = (a = 5, b = 10, a + b); 🚨 چه اتفاقی میافته؟ اول a = 5 اجرا میشه. بعد b = 10 اجرا میشه. در نهایت a + b (یعنی $5 + 10 = 15$) محاسبه میشه و فقط مقدار ۱۵ میریزه داخل متغیر x! 🛠 ۳ کاربرد طلایی عملگر کاما در برنامهنویسی میکروکنترلرها ۱. مدیریت چند متغیر همزمان در حلقه for (پرقدرتترین کاربرد) گاهی وقتها توی برنامهنویسی سختافزار لازمه دو تا متغیر رو با دو گام متفاوت توی یک حلقه کنترل کنید: C // پیمایش همزمان یک بافر از ابتدا و انتها در یک حلقه! for (uint8_t i = 0, j = 9; i < j; i++, j--) { // انجام عملیات جابهجایی یا مقایسه } ۲. ترکیب چند دستور شرطی/مقداری در یک خط (کد تمیز) فرض کنید میخواهید موقع خواندن داده از سنسور، همزمان دیباگ کنید یا وضعیت (Status) را بهروز کنید: C // روش معمولی ❌ if (read_failed) { error_count++; status = ERROR; } // روش تکخطی با عملگر کاما ✅ if (read_failed) status = (error_count++, ERROR); ۳. استفاده در ماکروها (Macro Functions) اگر بخواهید یک ماکرو بنویسید که چند کار را انجام دهد و در نهایت یک مقدار برگرداند، عملگر کاما نجاتبخش است: C // ماکرویی که هم زمان پین خروجی را Toggle میکند و شمارنده را افزایش میدهد #define UPDATE_LED() (HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5), ++toggle_count) ⚠️ یک نکته خیلی مهم (تله برنامهنویسی!) حواستان باشد که اولولیت (Precedence) عملگر کاما، پایینترین اولویت در کل زبان C است! حتی پایینتر از عملگر مساوی =. به همین دلیل موقع استفاده از آن همیشه باید از پرانتز استفاده کنید: C x = a = 1, b = 2; // ❌ اشتباه: مقدار x برابر 1 میشود! x = (a = 1, b = 2); // ✅ درست: مقدار x برابر 2 میشود. 💡 جمعبندی: عملگر کاما به شما اجازه میدهد چند دستور مستقل را در یک خط اجرا کنید و آخرین عبارت را بهعنوان خروجی بگیرید. استفاده از این عملگر کد شما را در حلقهها و ماکروها بسیار فشرده و حرفهای میکند!
أَلسَّلامُ عَلَى الشَّیْبِ الْخَضیبِ، سلام بر آن محاسن بخون خضاب شده، أَلسَّلامُ عَلَى الْخَدِّ التَّریبِ، سلام بر آن گونه خاک آلوده، أَلسَّلامُ عَلَى الْبَدَنِ السَّلیبِ، سلام بر آن بدن جامه به غنیمت رفته، أَلسَّلامُ عَلَى الثَّغْرِ الْمَقْرُوعِ بِالْقَضیبِ، سلام بر آن دندآنهایی که با چوب خیزران زده شده، أَلسَّلامُ عَلَى الرَّأْسِ الْمَرْفُوعِ، سلام برآن سر بالاى نیزه رفته، زیارت ناحیه مقدسه
📌 #آموزش_برنامهنویسی #C_Tips #Embedded_C #STM32 ⚡️ تکنیک Short-Circuit در C/C++: اجرای شرطها بدون کلمه if! خیلی از برنامهنویسها فکر میکنند عملگرهای منطقی && (AND) و || (OR) فقط برای بستن شرطهای طولانی داخل if هستند. اما زبان C یک ویژگی هوشمندانه به اسم Short-Circuit Evaluation (ارزیابی میانبُر) داره که باهاش میشه کدهای بسیار سریعتر و تمیزتری نوشت! 🔍 تکنیک Short-Circuit یعنی چی؟ کامپایلر موقع بررسی عبارتهای منطقی، از چپ به راست شروع به ارزیابی میکنه. اگر در وسط راه، نتیجه نهایی مشخص بشه، کامپایلر بقیه عبارت رو کلاً اجرا نمیکنه و بیخیالش میشه! ۱. در عملگر && (AND): برای اینکه خروجی && درست (True) بشه، باید هر دو طرف درست باشن. 👈 اگر شرط اول غلط (False) بشه، نتیجه کلاً غلطه. پس کامپایلر اصلاً سراغ شرط دوم نمیره! ۲. در عملگر || (OR): برای اینکه خروجی || درست (True) بشه، کافیه فقط یکی از طرفین درست باشه. 👈 اگر شرط اول درست (True) بشه، تکالیف مشخصه و نتیجه در هر صورت درسته. پس کامپایلر شرط دوم رو کلاً چک نمیکنه! 💡 چطور بدون نوشتن if کد بزنیم؟ با همین قانون ساده، میتونیم دستورات شرطی تکخطی فوقالعاده سریع بسازیم! 🔹 حالت اول: اجرای تابع فقط در صورت برقرار بودن شرط (&&) C // روش معمولی با if ❌ if (sensor_is_ready == 1) { Read_Sensor_Data(); } // روش تمیز و حرفهای با Short-Circuit ✅ (sensor_is_ready == 1) && Read_Sensor_Data(); 🎯 توضیح: اگر sensor_is_ready برابر $1$ باشه (True)، کامپایلر مجبور میشه برای مشخص شدن نتیجه، سمت راست یعنی Read_Sensor_Data() رو هم اجرا کنه! اگر $0$ باشه، سمت راست کلاً اجرا نمیشه. 🔹 حالت دوم: جلوگیری از خطاهای ناگهانی (Safeguard) یکی از کاربردهای حیاتی این تکنیک در سیستمهای Embedded، جلوگیری از Access Violation و تقسیم بر صفر است: C // اگر اشارهگر ptr نول (NULL) باشه، خط بعدیش اجرا نمیشه و میکرو Reset نمیشه! if (ptr != NULL && ptr->status == OK) { // انجام عملیات } 🎯 توضیح: اگر ptr == NULL باشد، شرط اول غلط میشود. کامپایلر بلافاصله ارزیابی را متوقف میکند و اصلاً سراغ ptr->status نمیرود تا خطای HardFault رخ دهد! ⚡️ چرا این تکنیک در میکروکنترلرها محبوب است؟ 1️⃣ سرعت اجرا بالا: در سطوح بهینهسازی بالای کامپایلر (مثل -O2 یا -O3 در Keil)، این عبارتها به دستورات پرش سریع در اسمبلی تبدیل میشن. 2️⃣ کاهش خطوط کد: کدهای شلوغ چندخطی رو به یک خط خوانا تبدیل میکنه. 3️⃣ ایمنی حافظه: جلوی خواندن آدرسهای نامعتبر حافظه (Pointers) را قبل از چک شدن میگیره. 💡 نکته طلایی: حواستون باشه توی شرط دوم نباید متغیری رو پلاسپلاس (++) کنید، چون اگر شرط اول اجرا نشه، اون متغیر هم تغییر نمیکنه و ممکنه باگ ایجاد کنه!
📌 #آموزش_برنامهنویسی #Keil_Tips #STM32 #Embedded_C 💥 راز تنظیمات Optimization (بهینهسازی) در کامپایلر Keil! توی محیط Keil (تب C/C++) گزینهای به اسم Optimization وجود داره که مشخص میکنه کامپایلر چطور کدهای C شما رو به دستورات اسمبلی برای میکروکنترلر (مثل STM32) تبدیل کنه. اما سطوح مختلف -O0 تا -O3 و تیکهای زیرش دقیقا چکار میکنند؟ 🤔 🔍 بررسی سطوح Optimization در Keil: 🔹 سطح Level 0 (-O0) (بدون بهینهسازی): ➕ مزیت: دیباگ خطبهخط فوقالعاده راحت و دقیق. ➖ عیب: کدهای سنگین و اجرای کندتر. 💡 کاربرد: فقط موقع خطایابی و دیباگ (Debug). 🔹 سطح Level 1 (-O1) (بهینهسازی پایه): کدهای بیمصرف رو حذف میکنه و استفاده بهتری از ثباتهای (Registers) داخلی CPU میکنه. 🔹 سطح Level 2 (-O2) (بهینهسازی متعادل): ایجاد توازن عالی بین حجم کد و سرعت اجرا. استاندارد اکثر پروژههای صنعتی. 🔹 سطح Level 3 (-O3) (بهینهسازی حداکثری): 🔥 ➕ مزیت: کامپایلر تمام قدرتش رو میذاره تا بالاترین سرعت اجرا رو بگیره (توابع کوچک رو ادغام و حلقهها رو باز میکنه). 💡 کاربرد: پروژههای سنگین پردازش تصویر، GUI (مثل TouchGFX)، محاسبات ریاضی و STM32H7. 💡 گزینهی مهم: Optimize for Time زیر باکس Optimization یک چکباکس وجود داره به اسم Optimize for Time: 🟢 اگر این تیک رو بزنید: کامپایلر اولویت اولش رو میذاره روی حداکثر سرعت اجرا (Time). 🔴 اگر تیک رو بردارید: کامپایلر اولویت رو میذاره روی کمترین حجم ممکن حافظه Flash (Size). (در کامپایلرهای پایه مثل GCC به این حالت -Os میگن). ⚠️ یک تله بزرگ در سطوح -O2 و -O3! در سطوح بالا، کامپایلر متغیرهایی که فکر میکنه مقدارشون توی برنامه تغییر نمیکنه رو بهینهسازی و کَش میکنه! اگر متغیری داری که توی وقفه (Interrupt) یا توسط سختافزار تغییر میکنه، اگر اون رو volatile تعریف نکنی، کامپایلر متوجه تغییرش نمیشه و برنامهت توی حلقه گیر میکنه! C // تعریف درست متغیرهای مربوط به وقفه در بهینهسازی بالا ✅ volatile uint8_t timer_flag = 0; 💡 جمعبندی: موقع دیباگ: بذارید روی -O0. موقع خروجی نهایی: بذارید روی -O2 یا -O3. متغیرهای وقفه را حتماً volatile کنید!
📌 #آموزش_برنامهنویسی #C_Corner #Embedded_C 💥 با این عملگر، کدهات رو نصف کن! (عملگر شرطی سه تایی یا Ternary Operator) خیلی وقتها توی کدنویسی برای میکروکنترلرها (آردوینو، STM32، AVR و...) میخوایم بر اساس یک شرط، به یک متغیر مقدار بدیم. معمولاً همه از if-else استفاده میکنیم: C // روش معمولی و طولانی ❌ uint8_t status; if (temperature > 40) { status = 1; // فن روشن } else { status = 0; // فن خاموش } اما توی زبان C/C++ یک عملگر فوقالعاده و شیک داریم به اسم Ternary Operator (? :) که تمام کد بالا رو فقط در یک خط خلاصه میکنه! 🔥 🔹 ساختار کلی: C متغیر = (شرط) ? (مقدار در صورت درست بودن) : (مقدار در صورت غلط بودن); 💡 همان مثال بالا با روش حرفهای: C // روش تمیز و بهینه ✅ uint8_t status = (temperature > 40) ? 1 : 0; ⚡️ چرا باید از این عملگر استفاده کنیم؟ 1️⃣ کاهش خطوط کد: کدهای شلوغ چندخطی رو به یک خط خوانا تبدیل میکنه. 2️⃣ بهینهسازی کامپایلر: در خیلی از معماریها (مثل ARM)، کامپایلر میتونه این فرمول رو به دستورات شرطی اسمبلی بسیار سریعتر (مثل CSEL یا IT blocks) تبدیل کنه. 3️⃣ تعریف متغیرهای Constant: بهت اجازه میده متغیرهای const رو در همان لحظه تعریف، بر اساس شرط مقداردهی اولیه کنی! 🛠 یک مثال کاربردی در پروژههای صنعتی: فرض کن میخوای بر اساس شماره کانال، آدرس حافظه EEPROM رو محاسبه کنی: C // محاسبه آدرس بیس حافظه در یک خط uint16_t base_addr = (Channel < 5) ? (EE_START + (Channel * 760)) : (EE_START_2 + ((Channel - 5) * 760)); 💡 نکته: حواست باشه توی شرطهای خیلی پیچیده و تو-در-تو زیاد زیادهروی نکنی تا خوانایی کدت کم نشه!
💠امام صادق صلواتاللهعلیه به نقل از رسولخدا صلىاللهعليهوآله فرمودند : 《خداى عز و جل میفرمايد: واى بر كسانى كه دين را دام بدست آوردن دنيا كنند، واى بر كسانى كه مردمى را كه به عدالت امر میدهند را بكشند، واى بر كسانى كه مؤمن در ميان آنها با خوف و تقيه بسر برد. آیا به من مغرور شدهاند و یا به من جسارت میورزند؟ من به حق خودم سوگند خوردهام كه فتنه و بلائى براى آنها پيشآورم كه خردمندشان سرگردان شود.》[الكافي(ط - الإسلامية)/ج۲/ص۲۹۹]
https://youtu.be/1IemdYLo60A?si=pvCS6wbJJm0eLqSR
https://youtube.com/shorts/Ds8qHziCQEU?si=BZGPNYZ813hIp8aO
https://youtu.be/yMYQD3k42AU?si=MUVcX-R0Cq9nKQCc
https://youtu.be/PDMEcCqnRQk?si=E7Op5Mz5IgNh42uM
🚨 هشدار فنی: مرگبارترین اشتباه در تغذیه السیدیهای RGB! (چرا پنلهایتان میسوزند؟) ⚠️ مقدمه این روزها در پروژههای الکترونیکی، شاهد یک باور غلط و بسیار خطرناک بین برخی از دوستان هستیم. برای صرفهجویی در هزینه و کاهش قطعات، از یک تراشه مبدل (مثلاً AP3031)…
🚨 هشدار فنی: مرگبارترین اشتباه در تغذیه السیدیهای RGB! (چرا پنلهایتان میسوزند؟) ⚠️ مقدمه این روزها در پروژههای الکترونیکی، شاهد یک باور غلط و بسیار خطرناک بین برخی از دوستان هستیم. برای صرفهجویی در هزینه و کاهش قطعات، از یک تراشه مبدل (مثلاً AP3031) به طور همزمان برای تولید ولتاژ تغذیه اصلی پنل (AVDD) و راهاندازی نور پسزمینه (VLED) استفاده میکنند. اما آیا میدانید این کار ساده، بزرگترین تله برای سوختن پنلهای حساس السیدی و درایورهای آنهاست؟ در این مقاله، ۳ تله مرگبار این روش اشتباه و راهحل استاندارد مهندسی را بررسی میکنیم. --- 🟥 تله مرگبار شماره ۱: جهش ولتاژ مرگبار در زمان قطعی بکلایت در روش اشتباه تکآیسی، تراشه برای ثابت نگه داشتن جریان بکلایت (VLED)، ولتاژ را متناسب با نیاز بالا میبرد. حال تصور کنید کابل بکلایت قطع شود، الئیدیها بسوزند یا مدار باز شوند! تراشه متوجه میشود که جریان صفر است و چرخه کاری (Duty Cycle) خود را تا ۱۰۰٪ افزایش میدهد تا هر طور شده جریان بکشد! نتیجه چیست؟ ولتاژ خروجی از ۹ ولت ناگهان به ۲۴ یا حتی ۲۶ ولت جهش میکند. چون در این روش اشتباه، پین تغذیه اصلی پنل (AVDD) دقیقاً از همین گره ولتاژ بالا تأمین میشود، ناگهان ۲۶ ولت به ورودی AVDD پنل (که آستانه تحمل آن معمولاً ۱۳ ولت است) اعمال شده و تراشههای درایور پنل در همان ثانیه میسوزند. 🟥 تله مرگبار شماره ۲: خاموشی همزمان و مرگ تدریجی پنل یک مشکل رایج دیگر در روش تکآیسی این است که برای کم کردن نور یا خاموش کردن بکلایت (مثلاً با یک سیگنال PWM)، افراد مدار را خاموش میکنند. غافل از اینکه با این کار، ولتاژهای بایاس حیاتی AVDD، VGH و VGL که برای نگهداری تصویر روی شیشه پنل ضروری هستند، نیز صفر میشوند. این یعنی پنل درست زمانی که میخواهد سیاه شود یا حالت استندبای داشته باشد، بدون تغذیه مناسب رها میشود. این مسئله باعث ایجاد پدیده Image Sticking (پدیده قفل شدن تصویر) یا آسیب دائمی به پنل در طولانیمدت خواهد شد. 🟥 تله مرگبار شماره ۳: ناهماهنگی ولتاژ بکلایتها (مشکل پنلهای ۲۵ ولتی!) این یک نکته بسیار حیاتی است که خیلیها نادیده میگیرند: همه پنلهای RGB ولتاژ بکلایت یکسانی ندارند. بعضی ۹.۵ ولت، اما بسیاری از پنلهای بزرگتر یا باکیفیتتر نیازمند ولتاژ ۲۰ تا ۲۵ ولت برای تأمین نور هستند. در روش تکآیسی، تراشه برای پنل ۲۵ ولتی، ولتاژ نهایی را تا ۲۵ ولت بالا میبرد. باز هم همان ۲۵ ولت به پایه AVDD پنل اعمال میشود! نتیجه این است که پنل شما در همان لحظه اول روشن شدن، به طور کامل و غیرقابل بازگشت میسوزد. --- ✅ راهحل استاندارد و حرفهای: «جداسازی کامل با دو تراشه» برای اینکه دیگر شاهد سوختن پنلهای گرانقیمت نباشیم، باید استاندارد صحیح مهندسی را رعایت کنیم: استفاده از دو تراشه مجزا و مستقل. 🔸 تراشه اول (های ولتاژ ثابت): یک مبدل بوست (مثلاً TPS61040) صرفاً برای تولید ولتاژهای اصلی تغذیه پنل (AVDD، VGH، VGL) استفاده میشود. فیدبک این تراشه کاملاً مستقل از بکلایت است و ولتاژ خروجی آن را روی یک مقدار ثابت و ایمن (مثلاً ۱۶ ولت) تثبیت میکند. 🔸 تراشه دوم (درایور مستقل بکلایت): یک درایور مجزا (مثلاً MP3202) وظیفه تأمین جریان الئیدیهای بکلایت را بر عهده میگیرد. مزیت این روش چیست؟ اگر بکلایت شما بسوزد، قطع شود، یا حتی اگر برای کمنور کردن آن سیگنال خاموشی بفرستید، هیچکدام از این اتفاقات روی تراشه اول تأثیر نمیگذارد. ولتاژ AVDD پنل همیشه ثابت و در محدوده ایمن باقی میماند و پنل شما ۱۰۰٪ در برابر جهش ولتاژ محافظت میشود. --- 📌 جمعبندی نهایی: صرفهجویی چند ده هزار تومانی با حذف یک تراشه، هرگز ارزش ریسک سوختن یک پنل چند میلیونی را ندارد. از این پس، حتماً از روش «دو تراشه مجزا» برای راهاندازی السیدیهای RGB خود استفاده کنید تا خیالتان از سلامت درایورها و پنل کاملاً راحت باشد.
دیتا شیت و یوزرمنوال t113-s4
видео или голосовое, без подписи
видео или голосовое, без подписи
https://www.youtube.com/watch?v=dX9CGRZwD-w
🟡 بر یکدیگر، مسلطشان میگرداند ... 🔴 قَالَ آيَةَ اَللهِ اَلْعُظْمَى اَلْإِمَامُ اَلْبَاقِرُ صَلَوَاتُ اَللهِ عَلَيْهِ : مَا انْتَصَرَ اللّه ُ مِنْ ظالِمٍ إِلاّ بِظالِمٍ وَذلِكَ قَوْلُهُ عَزَّوَجَلَّ (وَكَذلِكَ نُوَلّىبَعْضَ الظّالِمينَ بَعْضا)؛ 🟠 حضرت آیت الله العظمی امام باقر صلوات الله علیه می فرمایند : خداوند هيچگاه از ظالم انتقام نگرفت مگر به وسيله ظالمى ديگر و اين سخن خداى عزّوجلّ است كه: «و بدين سان ظالمان را به سزاى اعمالى كه مى كنند بر يكديگر مسلّط مى كنيم». 📚بحارالأنوار، ج ۷۵، ص ۳۱۳، ح ۲۸
https://www.eechain.com/stock.html?home
https://www.eechain.com/stock.html?home