سلام دوستان
من یک برنامه با بسکام دارم که 20 LED را به صورت بارانی یا شهابسنگی به صورت PWM ماند , رقص نور میده
به این صورت عمل میکنه که ابتا LED اول به صورت PWM به آرامی روسن میشه و بعد
LED دوم روشن میشه.... تا به LED بیستم میرسه و وقتی اون ای LED هم روشن شد
شروع میکنه از LED یکم و به صورت PWM خاموش میشه و پیش میره تا به LED بیستم برسه
اما اینجا یک مشکلی هست و اون این است که در LED های بارانی تجاری , کمی فرق میکنه و همانند عکس متحرک پایین که مشاهده میکنید
وقتی روشن شدن LED ها به LED شماره ده رسید , از همان زمان از LED شماره یک
شروع به خاموش شدن میکنه و وقتی روشن شدن به LED بیستم رسید
LED دهم باید در حال خاموش شدن باشه نه تازه LED یکم شروع به خاموش کردن کنه
تا شباهت بیشتری به باران و یا شهابسنگ و دنباله اون داشته باشه...
حال من هر کاری میکنم نمیتونم در این برنامه تغییری که میخوام بدم
اگر دوستان زحمتی نیست میتونید یک نگاهی در برنامه بسکام بندازید و
آن را به صورتی که عرض کردم , تغییر بدید تا یک برنامه خوب LED بارانی
با بسکام داشته باشیم؟ با تشکر
این عکس نمونه تجاری هست:
بی زحمت به عملکردش نگاه کنید
برنامه باید شبیه این نمونه عکس متحرک عمل کند...

این هم کد برنامه با بسکام:
من یک برنامه با بسکام دارم که 20 LED را به صورت بارانی یا شهابسنگی به صورت PWM ماند , رقص نور میده
به این صورت عمل میکنه که ابتا LED اول به صورت PWM به آرامی روسن میشه و بعد
LED دوم روشن میشه.... تا به LED بیستم میرسه و وقتی اون ای LED هم روشن شد
شروع میکنه از LED یکم و به صورت PWM خاموش میشه و پیش میره تا به LED بیستم برسه
اما اینجا یک مشکلی هست و اون این است که در LED های بارانی تجاری , کمی فرق میکنه و همانند عکس متحرک پایین که مشاهده میکنید
وقتی روشن شدن LED ها به LED شماره ده رسید , از همان زمان از LED شماره یک
شروع به خاموش شدن میکنه و وقتی روشن شدن به LED بیستم رسید
LED دهم باید در حال خاموش شدن باشه نه تازه LED یکم شروع به خاموش کردن کنه
تا شباهت بیشتری به باران و یا شهابسنگ و دنباله اون داشته باشه...
حال من هر کاری میکنم نمیتونم در این برنامه تغییری که میخوام بدم
اگر دوستان زحمتی نیست میتونید یک نگاهی در برنامه بسکام بندازید و
آن را به صورتی که عرض کردم , تغییر بدید تا یک برنامه خوب LED بارانی
با بسکام داشته باشیم؟ با تشکر
این عکس نمونه تجاری هست:
بی زحمت به عملکردش نگاه کنید
برنامه باید شبیه این نمونه عکس متحرک عمل کند...

این هم کد برنامه با بسکام:
کد:
$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 80 $swstack = 62 $framesize = 62 Config Watchdog = 1024 Ddrd = &B11111111 Ddrb = &B11111111 Ddrc = &B111111 Led_01 Alias Portd.0 Led_02 Alias Portd.1 Led_03 Alias Portd.2 Led_04 Alias Portd.3 Led_05 Alias Portd.4 Led_06 Alias Portd.5 Led_07 Alias Portd.6 Led_08 Alias Portd.7 Led_09 Alias Portb.0 Led_10 Alias Portb.1 Led_11 Alias Portb.2 Led_12 Alias Portb.3 Led_13 Alias Portb.4 Led_14 Alias Portb.5 Led_15 Alias Portc.0 Led_16 Alias Portc.1 Led_17 Alias Portc.2 Led_18 Alias Portc.3 Led_19 Alias Portc.4 Led_20 Alias Portc.5 Dim Tmrcount As Byte Dim Pwm_01 As Byte Dim Pwm_02 As Byte Dim Pwm_03 As Byte Dim Pwm_04 As Byte Dim Pwm_05 As Byte Dim Pwm_06 As Byte Dim Pwm_07 As Byte Dim Pwm_08 As Byte Dim Pwm_09 As Byte Dim Pwm_10 As Byte Dim Pwm_11 As Byte Dim Pwm_12 As Byte Dim Pwm_13 As Byte Dim Pwm_14 As Byte Dim Pwm_15 As Byte Dim Pwm_16 As Byte Dim Pwm_17 As Byte Dim Pwm_18 As Byte Dim Pwm_19 As Byte Dim Pwm_20 As Byte Dim Glow As Byte Dim Glow_count As Byte Dim Led_step As Byte Dim Flag As Bit Dim Ran_time2 As Word Glow = 100 Const Count_max = 63 Config Timer1 = Timer , Prescale = 256 , Clear Timer = 1 Compare1a = 1200 Config Timer2 = Timer , Prescale = 8 , Clear Timer = 1 Ocr2 = 200 On Oc1a Isr_timer1 On Oc2 Isr_timer2 Enable Oc1a Enable Oc2 Enable Interrupts Do !nop If Flag = 1 Then Gosub Next_led Reset Watchdog Flag = 0 End If Loop End Isr_timer1: Set Flag Return Isr_timer2: If Tmrcount = 0 Then Tmrcount = Count_max Portd = 0 Portb = 0 Portc = 0 Else Start Watchdog If Pwm_01 = Tmrcount Then Set Led_01 If Pwm_02 = Tmrcount Then Set Led_02 If Pwm_03 = Tmrcount Then Set Led_03 If Pwm_04 = Tmrcount Then Set Led_04 If Pwm_05 = Tmrcount Then Set Led_05 If Pwm_06 = Tmrcount Then Set Led_06 If Pwm_07 = Tmrcount Then Set Led_07 If Pwm_08 = Tmrcount Then Set Led_08 If Pwm_09 = Tmrcount Then Set Led_09 If Pwm_10 = Tmrcount Then Set Led_10 If Pwm_11 = Tmrcount Then Set Led_11 If Pwm_12 = Tmrcount Then Set Led_12 If Pwm_13 = Tmrcount Then Set Led_13 If Pwm_14 = Tmrcount Then Set Led_14 If Pwm_15 = Tmrcount Then Set Led_15 If Pwm_16 = Tmrcount Then Set Led_16 If Pwm_17 = Tmrcount Then Set Led_17 If Pwm_18 = Tmrcount Then Set Led_18 If Pwm_19 = Tmrcount Then Set Led_19 If Pwm_20 = Tmrcount Then Set Led_20 Decr Tmrcount End If If Glow_count = 0 Then Glow_count = Glow If Pwm_01 > 0 Then Decr Pwm_01 If Pwm_02 > 0 Then Decr Pwm_02 If Pwm_03 > 0 Then Decr Pwm_03 If Pwm_04 > 0 Then Decr Pwm_04 If Pwm_05 > 0 Then Decr Pwm_05 If Pwm_06 > 0 Then Decr Pwm_06 If Pwm_07 > 0 Then Decr Pwm_07 If Pwm_08 > 0 Then Decr Pwm_08 If Pwm_09 > 0 Then Decr Pwm_09 If Pwm_10 > 0 Then Decr Pwm_10 If Pwm_11 > 0 Then Decr Pwm_11 If Pwm_12 > 0 Then Decr Pwm_12 If Pwm_13 > 0 Then Decr Pwm_13 If Pwm_14 > 0 Then Decr Pwm_14 If Pwm_15 > 0 Then Decr Pwm_15 If Pwm_16 > 0 Then Decr Pwm_16 If Pwm_17 > 0 Then Decr Pwm_17 If Pwm_18 > 0 Then Decr Pwm_18 If Pwm_19 > 0 Then Decr Pwm_19 If Pwm_20 > 0 Then Decr Pwm_20 Else Decr Glow_count End If Return Next_led: Select Case Led_step Case 1 Pwm_20 = Count_max Case 2 Pwm_19 = Count_max Case 3 Pwm_18 = Count_max Case 4 Pwm_17 = Count_max Case 5 Pwm_16 = Count_max Case 6 Pwm_15 = Count_max Case 7 Pwm_14 = Count_max Case 8 Pwm_13 = Count_max Case 9 Pwm_12 = Count_max Case 10 Pwm_11 = Count_max Case 11 Pwm_10 = Count_max Case 12 Pwm_09 = Count_max Case 13 Pwm_08 = Count_max Case 14 Pwm_07 = Count_max Case 15 Pwm_06 = Count_max Case 16 Pwm_05 = Count_max Case 17 Pwm_04 = Count_max Case 18 Pwm_03 = Count_max Case 19 Pwm_02 = Count_max Case 20 Pwm_01 = Count_max End Select Incr Led_step If Led_step = 20 Then Glow = 60 If Led_step > 20 Then Ran_time2 = Rnd(1200) If Ran_time2 < 600 Then Ran_time2 = 600 Compare1a = Ran_time2 Ran_time2 = Rnd(6000) If Ran_time2 < 2000 Then Ran_time2 = 2000 Waitms Ran_time2 Led_step = 1 Ocr2 = 200 Glow = 8 End If Return
دیدگاه