سوال در مورد بسته الکترونیک

در مورد سوال آخرتون هم به توضیح زیر توجه کنید.
طراحی سرفصل ها، آماده کردن مطالب و ضبط و تدوین و کلی کار دیگه که در این بسته انجام شده حاصل یکسال زحمت شبانه روز اعضای مجموعه نماتک هست که حاصلش ۱۱۰ ساعت ویدئویی هست که بدست شما رسیده. پروژه بسته الکترونیک پروژه بسیار بزرگی بود و داخل اینترنت و سایت های دیگه هم آموزش های دست و پا شکسته و بعضا غیر حرفه ای پیدا می شد. هدف ما این بود که این بسته در ایران بی نظیر باشه. مخاطبین ما هم خیلی هاشون تا حالا برنامه نویسی نکردن و از الکترونیک هم چیزی نمی دونن. پس مهم ترین کاری که ما باید می کردیم این بود که پایه گذاری درستی انجام بدیم. اینکه به مباحث پایه ای زیاد پرداخته شده هم به همین دلیل هست. این بسته، بسته آموزش مقدماتی تا متوسط الکترونیک هست. بسته های پیشرفته آموزش الکترونیک اگه قرار باشه مباحث پایه ای رو هم شامل بشن، ۳۰۰ ساعت آموزش میشن. حالا شما تصور کنید روی یک بسته ۳۰۰ ساعته که احتمالا ۲ سال و نیم زحمت روش کشیده شده چقدر قیمت میشه گذاشت؟
جدای از همه این موارد، دنیای الکترونیک تمومی نداره و اگه یک بسته فوق پیشرفته! هم تهیه بشه باز هم دوستانی هستن که انتظاراتی داشتن که برآورده نشده. ما در این بسته با چند مدل تکنولوژی کار می کنیم و از arduino و avr و lpc و nxp و stm و esp استفاده می کنیم.
پروژه پایان فصل هم با استفاده از esp انجام شده و خود اون هم دنیایی داره. برای خود esp و کارهایی که میشه باهاش کرد میشه یک آموزش 100 ساعته جدا ساخت.
در نتیجه همه مواردی که در بالا گفتم، سرفصل های این بسته با دقت انتخاب شدن و اینکه به هر مورد چقدر اختصاص داده بشه با همه موارد بالا حساب شده هست. از طرفی، ریتم بسته در آخرها تند میشه چون انتظار میره مخاطب تا اونجا کاملا تمرین کرده و کاربلد شده باشه. در طول بسته هم بار ها و بارها تکرار کردم که شما باید ماهی گیری یاد بگیری نه اینکه ماهی رو بهتون آماده تحویل بدن.
شما نرم افزار cube و کار با stm رو در این بسته یاد گرفتید. اگه خواستید cube رو بیشتر باهاش آشنا بشید، سایت خودشون کلی مطلب داره و شما با توجه به چیزایی که در این بسته یاد گرفتید می تونید به راحتی همه اون مطالب رو متوجه بشید. دیتاشیت ها رو بخونید و چیزای جدید یاد بگیرید.
از همه اینها که بگذریم، این بسته تفاوت خیلی خیلی مهمی که با بسته های دیگه داره، پشتیبانیش هست. شما تا الان سوالات زیادی رو پرسیدید در این فروم و ما رسالت خودمون می دونیم که به سوالات شما پاسخ کامل بدیم. پس نه تنها شما برای ادامه مسیر الکترونیک آموزش دیدید و مجهز شدید به ابزار ها و طرزفکر هایی که به شما کمک میکنه راه رو ادامه بدید، بلکه ما هم اینجا در کنار شما هستیم و پاسخ گوی سوالات و ابهامات شما.

حالا در مورد سوال هاتون:
۱. خیر، شما داخل فایل اصلی هم می تونید define کنید.
۲. وقتی که یک چیزی رو define می کنید، توسط دستور ifdef می تونید چک کنید که define شده یا نه. در واقع شما با define کردن یک اسم، اون اسم رو تعریف کردید و می تونید توی روند برنامه چک کنید که اگه این اسم تعریف شده بود این کد اجرا بشه و در غیر این صورت این کد اجرا بشه. این روش رو معمولا در کتابخانه ها که قراره آدم های مختلف با نیاز های مختلف ازش استفاده کنن به کار می گیرن. مثلا فک کنید که شما یک برنامه نوشتید که با دو مدل lcd به نام های lcdA و lcdB کار می کنه و این رو در دسترس عموم گذاشتید. حالا شما توی توضیحات این کتابخانه، می تونید به کاربرها بگید که برای استفاده از lcdA اول برنامه نویسن #define lcdA و برای lcdB به همین ترتیب.
توی متن برنامه با استفاده از دستور #ifdef lcdA چم می کنید که آیا lcdA توسط کاربر انتخاب شده (تعریف شده) یا نه. اگه دستور ifdef رو سرچ کنید به مثال های خوبی میرسید.
۳. توابع در زبان c به صورت پیشفرض non-static هستن. حالا اگه شما یک تابع تعریف کنید و اون رو به صورت static تعریف کنید، به این معنی هست که این تابع توسط فایل های دیگه قابلیت فراخوانی نداره و فقط مربوط به همون فایل هست. معمولا در پروژه های خیلی بزرگ که تعداد زیادی برنامه نویس با هم دارن کار می کنن (که حتی ممکن هست همدیگه رو ندیده باشن و هرکدوم یک جای دنیا باشن)، ممکن هست که شما یک اسمی به یک تابع توی فایلی که دارید توش کار می کنید بدید و اون اسم توسط یکی دیگه توی یک فایل دیگه استفاده شده باشه. برای اینکه به مشکل نخوره، از static اول تابع استفاده می کنن. اون void هم صرفا یعنی تابع خروجی نداره. اگه مثلا خروجیش بود int میشد static int.
۴. از ۱ میشماره

سلام مهندس.روزتون بخیر.چنتا سوال داشتم
1-حتما define باید تو فایل هدر نوشته بشه؟
2-ما همیشه define میکردیم یه چیزی رو به مقداری.وقتی مینویسیم define xxxxx# و به چیز خاصی تعریف نمیکنیم چه مفهومی داره؟
3-خروجی تابع به صورت static void چه مفهومی داره؟
4-دستور sizeof از صفر میشماره یا 1؟
مهندس معین لطف میکنید به سوال ها پاسخی بفرمایید.ممنون.
و مهندس یه مطلبی.بنظرم تو دوره ARM به رسالت اموزش میکرو ارم پرداخته شد.بحثLPC کامل بود.اما میشه یه توضیحی بفرمایید چرا مهمترین قسمت بنا به گفته خودتون که مبحث STM بود اینقدر با ریتم تند و نسبتا کوتاه بهش پرداخته شد؟stmqube و قسمت دیباگ واقعا جا داشت که بیشتر کار بشه.بنظرم دوره اردینو هم جای خودشو داره ولی کاش کمی از برنامه نویسی و کار با اردوینو در اون دوره کم میشد و به STM زمان اختصاص داده میشد.الان مباحث نسبتا زیادی هست که در قسمت stm ما چیزی ازش نمیدونیم.احساس میکنم مطالب خاصی در مورد نرم افزار بزرگ stmqub نمیدونم.یا شاید هم شما همون قانون 20 80 رو اجرا کردید.درحالی که میتونم بگم AVR و LPC رو تا حد خوبی بلدم اما stm رو فقط اشنا هستم و چیز زیادی نمیدونم.در این مورد میشه یه توضیحی بفرمایید.و اینکه پروژه پایانی با stm کار میشه؟

سلام دوست عزیز، این سوالات و سوالاتی که در پست های قبل هم پرسیده بودید، بسیار سوال های خوبی هستن و پرسیدن سوال های درست یعنی شما در مسیر آموزش درست پیش رفتید و از این بابت بهتون تبریک میگم. فقط اگه ممکن هست یک لطفی بکنید و سوالات خودتون رو در پست های جدا از هم با تیتر مناسب بپرسید که اگه کس دیگه هم این سوال ها رو داشت، بتونه به راحتی پست مربوطه رو پیدا کنه.
الان تیتر پست شما اسمش هست arm و داخلش ۴ تا سوال در مورد برنامه نویسی هست (که درباره c هست و لزوما arm نیست) و یک سوال هم در مورد خود بسته.(که در مورد فصل arm و قسمت stm هست). اگه هر کدوم از این سوال ها رو در پست های جدا جدا بپرسید، هم نفرات بعدی خیلی راحت تر جواب هاشون رو پیدا می کنن و هم اینکه شما هم سریع تر به جواب می رسید (چون من هر دفعه که به سایت سر می زنم، تعداد سوالات محدودی رو می رسم جواب بدم و سوال شما چون مفصل هست دیرتر جواب میگیره.)

در مورد تیتر گذاری که فرمودید چشم مهندس.قوانین مربوط به تیتر و وسوال رو بیشتر رعایت میکنم.
مرسی از پاسخ سوالات.فقط یه جا داشتیم که مثلا توی for اولش مینویسیم static i = 0 .به معنی بود که متغیر i دیگه تغییر نمیکنه اما این استاتیک وقتی پیش میاد که کلا با فایل ها داریم کار میکنیم؟مثلا موردی هست که استاتیک اول تابع بنویسیم؟

و در مورد توضیحتون هم مهندس خیلی ممنون.تشکر که توضیح دادید.بی شک این بسته هیچ رقیبی نداره.و همین که ما همیشه به منبع پر از اطلاعات و تجربه ای مثل شما دسترسی داریم خیلی با ارزشه.من دنبال اموزش ارم بودم و این بسته هم اموزش داد.خواسته بی جایی هم نباید داشته باشم خدایی نکرده سو تفاهمی پیش نیاد.شما و همکارانتون فرموده بودید که ارم یاد میدید و انجام هم شد.وبا LPc خیلی گردن کلفت تر از stm هم کار شد و واقعا هرکس برنامه نویسی و کار با فایل برای LPC رو بدونه یه برنامه نویس ARM هست.برام سوال شد که سیلاب چطور به این نحو قرار گرفت و توضیح هم که دادید.ممنون از شما