ايران ويج

نسخه‌ی کامل: درخواست:کنترل روشنایی به روش pwm
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
برنامه ای که نوشتم اینه

کد php:
$regfile "m32def.dat"
$crystal 8000000
Config Lcdpin 
Db4 Pinb.4 Db5 Pinb.5 Db6 Pinb.6 Db7 _ Pinb.7 Rs Pinb.2 Pinb.3
Config Lcd 
16 2
Config Adc 
Single Prescaler Auto
Config Kbd 
Portc

Config Timer1 
Pwm Prescale Pwm 10 Compare A Pwm Clear Down ,


Config Porta Output

Dim A 
As Word
Dim B 
As Byte
Dim S 
As Byte
Porta

Start Adc

X
:
Getadc(1)
Lcd A
Goto X

Getkbd()
Waitms 500
Lcd S
Y
:
Do

Pwm1a A
Incr A
Waitms 500

If 1 Then
1
Else
If 
1 Then
0
Else
0 Then
1
End 
If

While 
0
Goto Y
Wend

Loop
end 

ولی فکر کنم خیلی ایراد داره
تو قسمت if منظورم این بوده که اگه ورودی که به سنسور وصله بین 0و 1 بود(یعنی نور محیط بین تاریک و روشن) خروجی که b هست و به لامپ وصله هم بین خاموش و روشن باشه.اگه ورودی کلا خاموش بود لامپ روشن بشه و برعکس.
قسمت بعد هم یعنی تا وقتی که کلید های صفحه کلید فشرده نشدن این کاررو انجام بده و اگه کلیدی فشرده شد ورودی از سنسور نگیر
مهندس با اجازت پستتو یه خورده ویرایش کردم برنامه ات بهتر بشه نگاش کرد !

و ایراد زیاد داری !

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

برنامه از اون حلقه اولی هیچ وقت بیرون نمیاد !!

شرطهای If رو فکر کنم END iF هاشو کم گذاشتی !
یکم مرتبش کنی خوبه !

بهتره وقتی از کیبرود می خونی اول نشون بدی و بعد تاخیرشو بذاری و نه برعکس !!

و چند تا ایراد جزئی دیگه ....

و یکم وقت بذاری می تونی ردیفش کنی !!
مهندس یه نگاهی به برنامه کوچولوی زیر بنداز !

شما می خوای وقتی محیط تاریک لامپ روشن بشه و هر چی تاریک تر شد نور لامپ بیشتر شه !!!

خوب فرض می کنیم سنسور مقاومت نوری رو به ورودی آنالوگ وصل کردی و طوری مقاوت پوول رو گذاشتی که هر چی تاریک تر بشه عدد دریافتی آنالوگ بیشتر بشه و مقدار مقاومت طوریه که تو تاریکی مطلق عدد 750 رو میگری و تو روشنایی عدد 200 !

حالا در نظر میگیریم وقتی نوز کمتر از 250 شد لامپ روشن بشه و وقتی نور به حد 682 و بالاتر رسید لامپ بره حداکثر روشنایی !!!

و اینم توجه داشته باشه که نور لامپ نباید به سنسورت برسه ! ( علتش مشخصه )

یه برنامه نمونه کوچولو :

کد php:
$regfile "m32def.dat"
$crystal 8000000

Config Adc 
Single Prescaler Auto
Start Adc

Config Timer1 
Pwm Pwm 10 Compare A Pwm Clear Down Compare B Pwm Clear Up Prescale 8
Enable Interrupts

Dim W 
As Word

Do

   
Getadc(0)

   If 
250 Then :
      
Pwm1a Pwm1b 0
   
Else :
      
2
      
If 1023 Then W 1023
      Pwm1a 
Pwm1b W
   End 
If

   
Wait 1

Loop 
مرسی
روش فکر میکنم بازم
یه مشکل دیگه اینکه وقتی می خوام از lcd مجازی استفاده کنم اصلا چیزی نشون نمی ده حتی یه برنامه ساده مثل lcd"hello"
چیکار کنم که نشون بده؟
ممنون
اگه منظورت شبیه سازی تو خود بسکامه یکم تاخیرش زیاد !

اول برنامه ات دستور زیر رو بنویس تا تاخیر ها حذف بشن !!!

کد php:
$sim 

یا با پروتئوس تست کن !! !
صفحه‌ها: 1 2