اطلاعیه

Collapse
No announcement yet.

چه جوری میشه دیود رو به آرامی روشن کرد؟

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

    چه جوری میشه دیود رو به آرامی روشن کرد؟

    سلام

    فرض کنید که من 10 ال ای دی دارم و میخوام این 10 ال ای دی که به صورت یک خط کنار هم قرار گرفتن تک تک به آرامی روشن بشن.

    اول لامپ 1 بعد لامپ 2 و بعد 3 و .....

    حالا چی کار میشه کرد هر یک از این لامپ ها به آرامی روشن شه تا کاملا پور نور شه؟

    میشه توضیح ساخت بدید یا اینکه اگر مدار از پیش طراحی شده ای میشناسید به من معرفی کنید.

    ممنونم موفق باشید.
    پیش بی درد ، دمی صحبت از درد مکن شاخه ی سبز دلت را به خطا زرد مکن
    مرد اگر نیست در این شهر ولی کوه که هست تکیه بر کوه کن و تکیه به نامرد مکن

    #2
    پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

    مجبوری از pwm استفاده کنی. حتی نرم افزاری هم میشه. و فوق العاده ساده است. ولی قاعدتا بایستی به ازای هر LED یک بیت خروجی میکرو یا آی سی لچ حروم کنی.

    دیدگاه


      #3
      پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

      نوشته اصلی توسط reza_agha
      مجبوری از pwm استفاده کنی. حتی نرم افزاری هم میشه. و فوق العاده ساده است. ولی قاعدتا بایستی به ازای هر LED یک بیت خروجی میکرو یا آی سی لچ حروم کنی.
      سلام منم مدتی است که میخواهم همچنین مداری را طراحی کنم.ومشکل بیت آی سی زیاد برای کارم مهم نیست.
      لطفا چند نوع آی سی رابرای این منظور معرفی کند.
      البته نوشتن برنامه موجpwmرا یادم رفته اگه امکانش هست کمئ در این باره هم توضیح بدید.
      هنگامي که چيزي مينويسي، کاري نکن تنها کسي که از مغزش استفاده کرده باشد ،مدادت باشد .

      \|/_\/_

      دیدگاه


        #4
        پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

        منم میخوام بدونم

        فقط چون رشتم کامپیوتره جوری توضیح بدید که منم بفهمم.

        هدفم از این سوال این بود که مثلا یکی برام عکس یک نوع مدار ساده رو بکشه توضیح بده که مثلا این کار رو چه جوری با دو تا ال ای دی انجام میدن. ( ساده و پایه ای )

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

        دیدگاه


          #5
          پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

          به کد مجازی زیر توجه کنین:


          #define NUM_LED 8

          unsigned char led[NUM_LED];

          void refresh_leds(unsigned char counter)
          {
          int i;
          char on;

          for(i=0; i<NUM_LED; i++)
          {
          on = 0;
          if( led[i] )
          {
          if( counter <= led[i] )
          on = 1;
          }
          switch( i )
          {
          case 0: PORTA.0 = on ? 1 : 0; break;
          ....
          }
          }
          }


          timer0_overflow_at_1ms(void)
          {
          static unsigned char counter;

          ....
          counter = (counter + 1) & 7;
          refresh_leds(counter);
          ....
          }


          در آرایه led میزان روشنایی هر led با عددی بین 0 برای خاموش و 8 برای ماکزیمم روشنایی قید میشه. یک متغیر یک بایتی بنام counter تعریف شده که وظیفه ساختن pwm به عهده اونه ولی 3 بیت پایینیش بیشتر استفاده نمیشه. این متغیر هر 1 میلی ثانیه یکبار اضافه میشه و در انتهای این عمل برای تمامی led ها چک میشه که اگر قراره led مربوطه روشن بشه و این متغیر مقدارش کوچکتر از مقدار عددی روشنایی led هست اونو خاموش و گرنه روشنش کنه. بنا بر این اگر مقدار عددی روشنایی یک led 4 باشه یعنی از هر 8 حالت پشت سرهم یک led بایستی چهار بارش روشن و چهار بارش خاموش بشه. و در صورتی که مقدار 2 باشه یعنی از هر 8 بار 2 بار روشن و بقیه موارد خاموش باشه. و با این روش شما در حقیقت موج مربعیی درست میکنین که duty cycle اش بسته به مقدار ست شده برای روشنایی led بین 0 تا 100 درصد با قدم های 100/8 تغییر کنه. معمولا برای led ها این میزان دقت زیادی هم هست.

          البته من این مسئله رو شخصا پیاده سازی نکردم ولی مطمئنا جواب میده. حالا برای هر led میخوایین مستقیما پین استفاده کنین یا مولتی پلکس اش کنین. این روش برای کار روی تصاویر rgb هم جواب میده و با همین 8 سطح میشه 8*8*8 رنگ یا 512 رنگ متفاوت روی یک led از نوع rgb نمایش داد.

          دیدگاه


            #6
            پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

            آیا با برنامه بسکام هم این امکان وجود داره؟
            نگفتین از چه آی سی برای این منظور باید اسفاده کرد؟
            هنگامي که چيزي مينويسي، کاري نکن تنها کسي که از مغزش استفاده کرده باشد ،مدادت باشد .

            \|/_\/_

            دیدگاه


              #7
              پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

              نوشته اصلی توسط zooghi
              سلام

              فرض کنید که من 10 ال ای دی دارم و میخوام این 10 ال ای دی که به صورت یک خط کنار هم قرار گرفتن تک تک به آرامی روشن بشن.

              اول لامپ 1 بعد لامپ 2 و بعد 3 و .....

              حالا چی کار میشه کرد هر یک از این لامپ ها به آرامی روشن شه تا کاملا پور نور شه؟

              میشه توضیح ساخت بدید یا اینکه اگر مدار از پیش طراحی شده ای میشناسید به من معرفی کنید.

              ممنونم موفق باشید.
              این دقیقا همون کاری که تو نقل قول نوشتم رو انجام میده؟

              میخوام اگر از 10 تا ال ای دی استفاده میکنم به ترتیب و به آرامی روشن بشن

              به تصویر زیر نگاه کنید



              راستی در مورد اس ام دی ال ای دی ها .... برای این نوع از ال ای دی ها آی سی خاصی ساخته نشده که عملیات فوق رو یک جا انجام بده؟

              ممنونم
              پیش بی درد ، دمی صحبت از درد مکن شاخه ی سبز دلت را به خطا زرد مکن
              مرد اگر نیست در این شهر ولی کوه که هست تکیه بر کوه کن و تکیه به نامرد مکن

              دیدگاه


                #8
                پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

                این روتینی که نوشتم فقط کمکتون میکنه میزان روشنایی led ها رو ست کنین. عملیات مربوط به تغییر رنگ رو در روال اصلی برنامه و روی آرایه led اعمال کنین. ضمنا اون دستور switch در تابع refresh_leds برای روشن و خاموش کردن بیت مربوط به pwm هر led با توجه به شماره led هست.

                دیدگاه


                  #9
                  پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

                  نوشته اصلی توسط reza_agha
                  این روتینی که نوشتم فقط کمکتون میکنه میزان روشنایی led ها رو ست کنین. عملیات مربوط به تغییر رنگ رو در روال اصلی برنامه و روی آرایه led اعمال کنین. ضمنا اون دستور switch در تابع refresh_leds برای روشن و خاموش کردن بیت مربوط به pwm هر led با توجه به شماره led هست.
                  پس این روش برای ست کردن میزان روشنایی هست و اون چیزی که من انتظار دارم در نمیاد

                  اگر بخوام از آروم روشن شدن صرف نظر کنم ... شما میتونید راهی رو معرفی کنید که ال ای دی ها دو نه دونه روشن بشن نیازی هم به آروم روشن شدن نیست

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

                  دیدگاه


                    #10
                    پاسخ : چه جوری میشه دیود رو به آرامی روشن کرد؟

                    خوب عزیز من نوشتن روال تغییر آرایه متغیر led که چیز مهمی نیست. اگر هم بخوای فقط روشن بشن که با یک منطق شیفت رجیستری براحتی تموم میشه. چهار خط کد میشه.

                    دیدگاه

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