اطلاعیه

Collapse
No announcement yet.

درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

    سلام
    من تازه شروع به یادگیری کدنویسی AVR کردم و اطلاعات زیادی در این مورد ندارم. در واقع این اولین پروژه ای هست که دارم کار میکنم و در قسمتی از اون به مشکل برخوردم ...
    کاری که میخوام انجام بدم این هست که وقتی به یکی از پین های ورودی AVR (فرضا PD.0) مقدار 1 داده شد یک سری از دستورات رو اجرا کنه. من برای این کار از دستور if استفاده کردم. اما موضوعی که هست اینه که من میخوام بعد از 1 شدن ورودی، دستورات مربوطه فقط یکبار اجرا بشه، اما مشکل اینجاست که ورودی من برای مدت طولانی 1 باقی می مونه و طبیعتا دستورات زیر if بعد از اجرای آخرین خط مجددا به ابتدا برمیگرده و دستورات رو تکرار میکنه اما من نمیخوام این اتفاق بیفته. میخوام فقط یکبار دستورات اجرا بشه و بعد برنامه منتظر بمونه تا ورودی 0 بشه و دستورات دیگری رو اجرا کنه و اون هم فقط یک بار و مجددا منتظر بمونه تا ورودی 1 بشه و همین طور این پروسه تکرار بشه.
    اما متاسفانه از اونجایی که تجربه ای در کد نویسی ندارم نمیدونم چطور باید این کار رو انجام بدم.
    ممنون میشم از دوستان اگه راهنماییم بفرمایند.

    #2
    پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

    نوشته اصلی توسط BraveKnight نمایش پست ها
    سلام
    من تازه شروع به یادگیری کدنویسی AVR کردم و اطلاعات زیادی در این مورد ندارم. در واقع این اولین پروژه ای هست که دارم کار میکنم و در قسمتی از اون به مشکل برخوردم ...
    کاری که میخوام انجام بدم این هست که وقتی به یکی از پین های ورودی AVR (فرضا PD.0) مقدار 1 داده شد یک سری از دستورات رو اجرا کنه. من برای این کار از دستور if استفاده کردم. اما موضوعی که هست اینه که من میخوام بعد از 1 شدن ورودی، دستورات مربوطه فقط یکبار اجرا بشه، اما مشکل اینجاست که ورودی من برای مدت طولانی 1 باقی می مونه و طبیعتا دستورات زیر if بعد از اجرای آخرین خط مجددا به ابتدا برمیگرده و دستورات رو تکرار میکنه اما من نمیخوام این اتفاق بیفته. میخوام فقط یکبار دستورات اجرا بشه و بعد برنامه منتظر بمونه تا ورودی 0 بشه و دستورات دیگری رو اجرا کنه و اون هم فقط یک بار و مجددا منتظر بمونه تا ورودی 1 بشه و همین طور این پروسه تکرار بشه.
    اما متاسفانه از اونجایی که تجربه ای در کد نویسی ندارم نمیدونم چطور باید این کار رو انجام بدم.
    ممنون میشم از دوستان اگه راهنماییم بفرمایند.
    سلام
    یک راهش میتونه استفاده از وقفه خارجی و لبه بالا رونده برای تحریک باشه که هم محدودیت سخت افزار داره، هم شما کمی مبتدی هستید و شاید براتون سخت باشه.
    راه دیگش میتونه استفاده از یک متغیر باشه. به کد زیر توجه کنید:
    کد:
    int s = 1;
    while(1)
    {
    	if(PIND.0 == 1 && s == 1)
    	{
    		// code
    		s = 0;
    	}
    	if(PIND.0 == 0)
    	{
    		s = 1;
    	}
    	 // code
    }
    توی این کد با استفاده از متغیر s کاری کردم که کد داخل if فقط یکبار اجرا بشه و تا زمانی که کلید رها نشه، دیگه اون کد اجرا نشه.
    اگر سوالی در مورد کد داشتید بفرمایید.

    دیدگاه


      #3
      پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

      سلام، با تشکر از حسین عزیز یک راه دیگه هم هست استفاده از حلقه while هستش، توی حلقه while تا زمانی که شرطش بر قرار باشه عبارت های داخل حلقه اجرا میشن، حالا کافیه شرط حلقه رو صفر شدن اون پایه بنویسی و هیچی تو خود حلقه ننویسی یعنی:
      کد:
      if(PIND.0==1)
      {
      while(PIND.0==1);
      \\code
      }
      که احساس میکنم استفاده از while ساده تر و قابل فهم تر باشه.
      توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
      همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
      https://www.youtube.com/@aKaReZa75​

      دیدگاه


        #4
        پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

        نوشته اصلی توسط hossein.m98 نمایش پست ها
        سلام
        یک راهش میتونه استفاده از وقفه خارجی و لبه بالا رونده برای تحریک باشه که هم محدودیت سخت افزار داره، هم شما کمی مبتدی هستید و شاید براتون سخت باشه.
        راه دیگش میتونه استفاده از یک متغیر باشه. به کد زیر توجه کنید ......
        سلام
        خیلی ممنونم از راهنماییتون!
        پیشنهاد شما تقریبا مشکل من رو حل کرد! فقط یه مشکل کوچکی باقی می مونه ...
        از اونجایی که من میخوان در حالت صفر شدن هم دستورات مربوط به اون فقط یکبار اجرا بشه شرط حالت صفر رو هم مثل حالت یک نوشتم و حالا در هر دو حالت دستورات فقط یکبار اجرا میشه و برنامه منتظر حالت بعدی باقی می مونه. مثل کد زیر:
        کد:
        int s = 1;
        while(1)
        {
            if(PIND.0 == 1 && s == 1)
            {
                // code
                s = 0;
            }
            if (PIND.0==0 && s==0)
            {
                s = 1;
            }
             // code
        }
        اما اون مشکل کوچک اینه که وقتی برنامه اجرا میشه اگر ورودی در ابتدا صفر باشه دستورات شرط دوم اجرا نمیشه. یعنی حتما باید یکبار ورودی یک بشه و بعد از اون اگر صفر شد دستورات شرط صفر اجرا میشه. من میخوام به محض شروع به کار برنامه اگر در ابتدا ورودی صفر بود هم دستورات مربوطه اجرا بشه.
        آیا راهکاری وجود داره؟
        ممنون

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط akaReza نمایش پست ها
        سلام، با تشکر از حسین عزیز یک راه دیگه هم هست استفاده از حلقه while هستش، توی حلقه while تا زمانی که شرطش بر قرار باشه عبارت های داخل حلقه اجرا میشن، حالا کافیه شرط حلقه رو صفر شدن اون پایه بنویسی و هیچی تو خود حلقه ننویسی یعنی:
        کد:
        if(PIND.0==1)
        {
        while(PIND.0==1);
        \\code
        }
        که احساس میکنم استفاده از while ساده تر و قابل فهم تر باشه.
        سلام
        ممنونم اما متوجه موردی که فرمودید نشدم!
        در مثالی که نوشتید شرط if برقرار میشه و برنامه وارد حلقه while میشه. طبق مثال شرط while هم برقراره بنابراین کدهایی که داخلش قرار دادید تا زمان برقرار بودن شرط تکرار خواهد شد ...
        جدیدترین ویرایش توسط BraveKnight; ۱۳:۲۸ ۱۳۹۹/۰۵/۱۰.

        دیدگاه


          #5
          پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

          سلام
          ممنونم اما متوجه موردی که فرمودید نشدم!
          در مثالی که نوشتید شرط if برقرار میشه و برنامه وارد حلقه while میشه. طبق مثال شرط while هم برقراره بنابراین کدهایی که داخلش قرار دادید تا زمان برقرار بودن شرط تکرار خواهد شد ...
          سلام.
          خب دیگه بحث همینجاس اون while هیچ کدی توش نوشته نشده، اگه دقت کنی یه سیمکالن ( آخر اون قرار داده شده، پس اتفاقی که میوفته اینه که تا زمانی که شما کلید رو ول نکنید، برنامه های بعد while اجرا نمیشن و میکرو اون code رو اجرا نمیکنه.
          توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
          همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
          https://www.youtube.com/@aKaReZa75​

          دیدگاه


            #6
            پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

            نوشته اصلی توسط BraveKnight نمایش پست ها
            سلام
            خیلی ممنونم از راهنماییتون!
            پیشنهاد شما تقریبا مشکل من رو حل کرد! فقط یه مشکل کوچکی باقی می مونه ...
            از اونجایی که من میخوان در حالت صفر شدن هم دستورات مربوط به اون فقط یکبار اجرا بشه شرط حالت صفر رو هم مثل حالت یک نوشتم و حالا در هر دو حالت دستورات فقط یکبار اجرا میشه و برنامه منتظر حالت بعدی باقی می مونه. مثل کد زیر:
            کد:
            int s = 1;
            while(1)
            {
                if(PIND.0 == 1 && s == 1)
                {
                    // code
                    s = 0;
                }
                if (PIND.0==0 && s==0)
                {
                    s = 1;
                }
                 // code
            }
            اما اون مشکل کوچک اینه که وقتی برنامه اجرا میشه اگر ورودی در ابتدا صفر باشه دستورات شرط دوم اجرا نمیشه. یعنی حتما باید یکبار ورودی یک بشه و بعد از اون اگر صفر شد دستورات شرط صفر اجرا میشه. من میخوام به محض شروع به کار برنامه اگر در ابتدا ورودی صفر بود هم دستورات مربوطه اجرا بشه.
            آیا راهکاری وجود داره؟
            ممنون

            دلیل: ادغام دو پست برای جلوگیری از اسپم


            سلام
            ممنونم اما متوجه موردی که فرمودید نشدم!
            در مثالی که نوشتید شرط if برقرار میشه و برنامه وارد حلقه while میشه. طبق مثال شرط while هم برقراره بنابراین کدهایی که داخلش قرار دادید تا زمان برقرار بودن شرط تکرار خواهد شد ...
            شما اون s==0 رو از شرط دوم حذف کنی مشکل حل میشه. کدی که جناب akaReza هم قرار دادن برای وقتی خوبه که برنامه وابسته به کلید باشه و مستقل از کلید عملکرد مهم دیگه ای نداشته باشه.

            دیدگاه


              #7
              پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

              نوشته اصلی توسط hossein.m98 نمایش پست ها
              شما اون s==0 رو از شرط دوم حذف کنی مشکل حل میشه. کدی که جناب akaReza هم قرار دادن برای وقتی خوبه که برنامه وابسته به کلید باشه و مستقل از کلید عملکرد مهم دیگه ای نداشته باشه.
              s==0 رو حذف کنم دستوراتش تکرار میشه. ولی وقتی مینویسم یکبار اجرا میشه منتها اون مشکل دومی که عرض کردم به وجود میاد.

              دیدگاه


                #8
                پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                نوشته اصلی توسط BraveKnight نمایش پست ها
                s==0 رو حذف کنم دستوراتش تکرار میشه. ولی وقتی مینویسم یکبار اجرا میشه منتها اون مشکل دومی که عرض کردم به وجود میاد.
                آهان فهمیدم مشکلتون چیه! خوب اگر میخوایید وقتی میکروکنترلر روشن شد و کلید فشرده نشده بود هم یکسری دستور رو اجرا کنه، بهتره یک if هم داخل main قبل از while اصلی بذارید.
                کد:
                if(PIND.0 == 0)
                {
                    // code
                }
                
                
                int s = 1;
                while(1)
                {
                    if(PIND.0 == 1 && s == 1)
                    {
                        // code
                        s = 0;
                    }
                    if(PIND.0 == 0 && s == 0)
                    {
                        // code
                        s = 1;
                    }
                     // code
                }

                دیدگاه


                  #9
                  پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                  نوشته اصلی توسط hossein.m98 نمایش پست ها
                  آهان فهمیدم مشکلتون چیه! خوب اگر میخوایید وقتی میکروکنترلر روشن شد و کلید فشرده نشده بود هم یکسری دستور رو اجرا کنه، بهتره یک if هم داخل main قبل از while اصلی بذارید.
                  کد:
                  if(PIND.0 == 0)
                  {
                      // code
                  }
                  
                  
                  int s = 1;
                  while(1)
                  {
                      if(PIND.0 == 1 && s == 1)
                      {
                          // code
                          s = 0;
                      }
                      if(PIND.0 == 0 && s == 0)
                      {
                          // code
                          s = 1;
                      }
                       // code
                  }
                  خیلی ممنونم از کمکتون! همون طور که میخواستم داره کار میکنه!

                  دیدگاه


                    #10
                    پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                    سلام دوستان
                    من دوباره مسئله ای برام پیش اومده!
                    ممنون میشم راهنمایی بفرمایید.

                    فرض بفرمایید سه کلید داریم به نام های کلید 1، کلید 2ُ و کلید 3 که هر کدوم به یک پین میکرو وصل هستن و با فشار هر کدوم LED متناظر با اون کلید روشن میشه.
                    حالتی که مدنظر بنده هست اینه که هرگاه کلید 3 فشرده و رها شد بعد از اون اولین باری که کلید 1 و یا 2 فشرده شدن LEDهای متناظرشون روشن نشه و از دفعه دوم روشن بشه. و مجدد هر بار که کلید 3 فشرده و رها شد بعد از اون هر کلیدی غیر از 3 فشرده شد کار نکنه.
                    خیلی کدها رو بالا و پایین کردم و تغییر دادم اما چون مبتدی هستم نتیجه ای عایدم نشد ...
                    جدیدترین ویرایش توسط BraveKnight; ۱۱:۴۲ ۱۳۹۹/۰۵/۲۸.

                    دیدگاه


                      #11
                      پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                      نوشته اصلی توسط BraveKnight نمایش پست ها
                      سلام دوستان
                      من دوباره مسئله ای برام پیش اومده!
                      ممنون میشم راهنمایی بفرمایید.

                      فرض بفرمایید سه کلید داریم به نام های کلید 1، کلید 2ُ و کلید 3 که هر کدوم به یک پین میکرو وصل هستن و با فشار هر کدوم LED متناظر با اون کلید روشن میشه.
                      حالتی که مدنظر بنده هست اینه که هرگاه کلید 3 فشرده و رها شد بعد از اون اولین باری که کلید 1 و یا 2 فشرده شدن LEDهای متناظرشون روشن نشه و از دفعه دوم روشن بشه. و مجدد هر بار که کلید 3 فشرده و رها شد بعد از اون هر کلیدی غیر از 3 فشرده شد کار نکنه.
                      خیلی کدها رو بالا و پایین کردم و تغییر دادم اما چون مبتدی هستم نتیجه عایدم نشد ...
                      برای مثال، زمانی که کلید ۳ رو فشردید باید یک متغیر افزایش پیدا کنه. مثلا متغیر۱ بشه متغیر۲.

                      حالا کلید فشاری ۲ و ۱ تنها زمانی باید عملیات انجام بدهند که متغیر کلید ۳ برابر با ۲ «نباشه».

                      دیدگاه


                        #12
                        پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                        نوشته اصلی توسط J35U51510V3 نمایش پست ها
                        برای مثال، زمانی که کلید ۳ رو فشردید باید یک متغیر افزایش پیدا کنه. مثلا متغیر۱ بشه متغیر۲.

                        حالا کلید فشاری ۲ و ۱ تنها زمانی باید عملیات انجام بدهند که متغیر کلید ۳ برابر با ۲ «نباشه».
                        سلام
                        ممنون
                        این روش رو هم قبلا استفاده کردم اما متاسفانه جواب نداد.
                        البته یک مورد رو فراموش کردم بگم! هر بار کلید 3 فشرده میشه LED متناظرش باید روشن بشه!
                        اما تو این روش اون متغیری که با فشردن کلید 3 تغییر کرده دوباره باید با فشردن کلید 1 یا 2 به حالت قبل برگرده که وقتی مجددا کلید 3 رو فشار میدیم شرطش برقرار باشه و LED کلید 3 روشن بشه. که اگه تغییر این متغیر به مقدار اولیه رو در دستورات شرط کلید 1 و 2 قرار بدیم خود دستورات مربوط به کلید های 1 و 2 تا وقتی که کلید 3 مجددا فشرده نشه دیگه اجرا نمیشن!

                        دیدگاه


                          #13
                          پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                          نوشته اصلی توسط BraveKnight نمایش پست ها
                          سلام
                          ممنون
                          این روش رو هم قبلا استفاده کردم اما متاسفانه جواب نداد.
                          البته یک مورد رو فراموش کردم بگم! هر بار کلید 3 فشرده میشه LED متناظرش باید روشن بشه!
                          اما تو این روش اون متغیری که با فشردن کلید 3 تغییر کرده دوباره باید با فشردن کلید 1 یا 2 به حالت قبل برگرده که وقتی مجددا کلید 3 رو فشار میدیم شرطش برقرار باشه و LED کلید 3 روشن بشه. که اگه تغییر این متغیر به مقدار اولیه رو در دستورات شرط کلید 1 و 2 قرار بدیم خود دستورات مربوط به کلید های 1 و 2 تا وقتی که کلید 3 مجددا فشرده نشه دیگه اجرا نمیشن!
                          اینجوری نمیشه، کدی که نوشتی رو بزار ببینیم مشکل کجاست.

                          دیدگاه


                            #14
                            پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                            این کد من هست.
                            متغیرهای a , b , c , e برای این استفاده شدن که دستورات زیر هر کدوم از if ها تنها یکبار بعد از برقرار شدن شرط اجرا بشه.
                            این رو هم عرض کنم که ورودی های هر پین وقتی 1 میشه مدت زمان نسبتا طولانی در حالت 1 باقی می مونه به خاطر همین از این متغیرها استفاده کردم که فقط یکبار دستورات هر شرط اجرا بشه.
                            متغیر f هم همون متغیری هست که شما فرمودید با کلید 3 (PORTB.3) تغییر میکنه.
                            if یکی مونده به آخری هم برای تغییر دادن f هست و if آخر هم برای برگردون f به حالت اول.
                            اما مشکل شرط آخر اینه که در همون لحظه که f رو برمیگردونه به مقدار قبل، دو تا if اول همون جا اجرا میشن یعنی اون حالتی که گفتم بعد از فشردن کلید 3 (PORTB.3) دستورات کلید 1 و 2 (PORTB.4 و PORTB.5) برای بار اول اجرا نشه اتفاق نمیفته!

                            کد:
                            int a,b,c,e,f = 1;
                            
                            while (1)
                                  {
                                  
                            if (PINB.4==1 && a==1 && f==1){            
                            //Cods
                            a=0;
                             }   
                                 else if (PINB.4==0){
                                 a=1;                  
                                  }
                            
                                       
                            if (PINB.5==1 && b==1 && f==1){  
                            //Codes
                            b=0;
                            }   
                                  else if (PINB.5==0){
                                  b=1;              
                                  }
                            
                            
                            if (PINB.1==0 && PINB.3==0){
                             //Codes      
                            
                            else if (PINB.3==1 && PINB.1==0){
                                        
                            for (i=0;i<20;i++){
                             if (PINB.1==1)
                            //Codes
                            }
                            } 
                                else if (PINB.1==1){
                                //Codes
                                }    
                            
                                
                            if (PINB.3==1 && c==1){
                            f=0;
                            c=0;
                            }
                                                 
                                else if (PINB.3==0 && c==0){
                                c=1;
                                }
                                                
                                           
                            if ((PINB.4==1 || PINB.5==1) && e==1){
                            f=1;
                            e=0;
                            }
                                else if (PINB.4==0 || PINB.5==0){
                                e=1;
                                }
                            
                            }
                            جدیدترین ویرایش توسط BraveKnight; ۱۳:۰۷ ۱۳۹۹/۰۵/۲۸.

                            دیدگاه


                              #15
                              پاسخ : درخواست راهنمایی برای استفاده از حلقه شرطی در AVR

                              نوشته اصلی توسط BraveKnight نمایش پست ها
                              این کد من هست.
                              آخه برادر من این چه طرز کدنویسی هست، نه خودت می تونی بخونیش نه ما!
                              شما بخش بزرگی از کد رو حذف کردی. تعریف پین هات کجاست؟ کدنویسی مربوط به رها کردن دکمه کجاست؟ می دونم برای مثال زدن لازم نیست اما اگه کمک میخوای باید حداقل خودت یه زحمتی بکشی کد رو کامل و خوانا بزاری که کار اونی که میخواد راه حل بده آسون بشه.


                              #define pin1 1
                              #define pin3 2
                              #define pin3 3
                              #define led1 4
                              #define led2 5
                              #define led3 6


                              bool btn1State, btn2State, btn3State;
                              bool btn1Pressed, btn2Pressed, btn3Pressed;
                              bool btn1Released, btn2Released, btn3Released;
                              int btn1, btn2, btn3;


                              void setup() {
                              pinMode(pin1, INPUT_PULLUP);
                              pinMode(pin2, INPUT_PULLUP);
                              pinMode(pin3, INPUT_PULLUP);
                              pinMode(led1, OUTPUT);
                              pinMode(led2, OUTPUT);
                              pinMode(led3, OUTPUT);
                              }


                              void loop() {
                              btn1State = digitalRead(pin1);
                              btn2State = digitalRead(pin2);
                              btn3State = digitalRead(pin3);


                              if (!btn3State) {
                              btn3Pressed = 1;
                              btn3Released = 0;
                              }


                              if (btn3Pressed == btn3State) {
                              btn3Pressed = 0;
                              btn3Released = 1;
                              }


                              if (btn3Released) {
                              btn3++;
                              if (btn3 > 2) {
                              btn3 = 2;
                              }
                              btn3Released = 0;
                              }


                              if (btn3 == 1) {
                              btn1 = 0;
                              btn2 = 0;
                              }


                              if (btn3 == 1 || btn3 == 2) {
                              digitalWrite(LED3, HIGH);
                              }


                              if (btn3 == 2 && btn1 == 1) {
                              digitalWrite(LED1, HIGH);
                              }


                              if (btn3 == 2 && btn2 == 1) {
                              digitalWrite(LED2, HIGH);
                              }

                              }


                              این کد کامل نیست فقط برای اینکه ایده بده نوشته شده. مثلا LED هارو روشن میکنه اما برای خاموش شدنش کدی نوشته نشده یا مثلا برای دکمه۱ و ۲ (btn1, btn2) کدی نوشته نشده. دکمه ها debounce نشده و...

                              در کد بالا اگر دکمه۳ رو بزنید و « رها کنید» LED3 روشن میشه. در این حالت دکمه ۱ و ۲ کار نمیکنند. اگر دوباره دکمه۳ رو بزنید دکمه ۱ و ۲ فعال و قابل استفاده میشوند.

                              حالا بر پایه این کد اگر سوالی دارید بپرسید تا واضح باشه، راستش من توضیحات پیشین شما رو خوب متوجه نشدم...

                              از while استفاده نکنید، تو کدنویسی به اینجور کدها blocking میگن یعنی کدت گیر میکنه تو چرخه while و بقیه کدهای خارج از while اجرا نمیشن.
                              جدیدترین ویرایش توسط J35U51510V3; ۱۴:۳۱ ۱۳۹۹/۰۵/۲۸.

                              دیدگاه

                              لطفا صبر کنید...
                              X