ايران ويج

نسخه‌ی کامل: فلاشر با ولوم کنترل سرعت
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2
با سلام یه برنامه چشمک زن برای دو کانال پین دی0 و پین یک دی اتمگا8 میخام که اولی روشن سپس خاموش و دومی روشن بشه البته با یه ولوم بشه سرعتشو کم و زیاد کرد تو یه فروم پرسیدم گفتن باید از adcاستفاده کنی این برنامه رو نوشتم کسی میتونه کاملش کنه تو پروتئوس هم تست کنه؟

کد:
کد php:
$regfile "M8DEF.DAT"
$crystal 4000000
Config Portd 
Output

DIM A 
AS WORD
DO
Portd.0 0
Portd.1 
1
A
=GETADC(0)
Waitms A
Portd.0 
1
Portd.1 
0

A
=GETADC(0)
WAITMS A
LOOP 
اگر بین این خط ها
کد:
Portd.0 = 0
Portd.1 = 1
دستور
کد:
Waitms A
بذاری درست میشه چون برنامه با سرعت بالا اجرا میشه و پایه هیچ وقت خاموش نمی مونه
البته شما یادتون رفته ADC رو پیکره بندی کنین باید ADC رو هم پیکره بندی کنین
ببینید متغیر بدست اومده از adc رو وقتی میخام جمع یا ظرب کنمش برای اصلاح مقدار بدست اومده ارور کامپایل میده گیرش کجاست اینم کدش
کد php:
$regfile "M8DEF.DAT"
$crystal 4000000
Config Portd 
Output
Config Adc 
Single Prescaler Auto


Dim A 
As Word
Dim D 
As Single
 
Const 100
 
Const 50


DO
Portd.0 0
Portd.1 
1
Getadc(0)
C

Waitms D
Portd.0 
1
Portd.1 
0

A
=GETADC(0)
Waitms D
Loop 
ولی وقتی بدون جمع ظرب متغیر بدست اومده از adcرو میزارم توی ویت کار میکنه ولی میزان ویتش اون چیزس که میخام نیست با چرخوندن ولوم خیلی سرع تغییر میکنه و مثلا تو 0 تا 20 درصد ابتدای ولوم تمام سرعتش کم وزیاد میشه چکار کنم که این تغییرات کمتر بشه ایا اهم ولومه تغییر بدم یا تو برنامه دست ببریم
تا اونجایی که یادمه نمی شد متغییر به دستور wait داد ( شاید چون ورژن قدیمی بودهه! )
-> در بسکام نباید چند عمل ریاضی رو در یه خط انجام بدید ، بهش بر می خورهه!
یه سری فقط ضرب کنید ، در خط بعدی جمعش کنید. بعد متغییر رو اعمال کنید.
ببخشید بدون دم پایی میپرم وسط :-)

خب اگه این قسمتشو، مقدار متغییر ها رو کمتر بدین درست نمیشه ؟
کد:
Dim D As Single
Const B = 100
Const C = 50

@مرتضی جان

قبلاً نمیدونم اما الان میشه به wait متغییر داد :-)

نقل قول: یه سری فقط ضرب کنید ، در خط بعدی جمعش کنید. بعد متغییر رو اعمال کنید.

آره باید همین کار رو کرد...
مهندس اینو اینجوری اصلاح کردم ولی موقع اجرا تو پروتئوس با کم و زیاد کردن ولوم تغییری نمیکنه گیرش کجاست فایل شبیه ساز با سورس بسکامشو اپ کردم ببینید متشکرم
http://lednama23.persiangig.com/document/volom.rar
کد php:
$regfile "M8DEF.DAT"
$crystal 4000000
Config Portd 
Output
Config Adc 
Single Prescaler Auto


Dim A 
As Byte
Dim B 
As Byte
Dim E 
As Byte
        
Const 0.5
        
Const 200

Do
Start Adc

Portd.0 
0
Portd.1 
1
Getadc(0)
 
C
 E 
D

Waitms E
Portd.0 
1
Portd.1 
0

Getadc(0)

 
C
 E 
D


Waitms E
Loop 
مشکل اصلی اینه که B از نوع byte هه و C از نوع single هه اگر C رو مساوی 2 قرار بدین و به جای ضرب تقسیم بگذارین مدارتون درست میشه
فقط بعد از دستور start adc حتما دستور enable adc رو هم بذارید
موفق باشید
بالاخره یکارایی کردم سرعتش تو اون محدودهایی که میخاستم در اومد
کد php:
$regfile "M8DEF.DAT"
$crystal 4000000
Config Portd 
Output
Config Adc 
Single Prescaler Auto


Dim A 
As Word
Dim B 
As Word
Dim E 
As Word
        
Const 10
        
Const 12

Do
Start Adc
Enable Adc

Portd.0 
0
Portd.1 
1
Getadc(0)
 
C
 E 
D

Waitms E
Portd.0 
1
Portd.1 
0

Getadc(0)

 
C
 E 
D


Waitms E
Loop 
چند تا سوال دارم:
1-اگه پتانسیومترو بخام با یه سیم بلند از میکرو بکشم بیارم مثلا7 یا 8 متری مشکلی ایجاد میشه راه حلش چیه؟
2-هر جا که بخام ویت رو بدم باید اون عمل جمع ظرب بنویسم یا یبار کافیه؟
3-از این جناب adcمیتونم تو زیر برنامه هام استفاده کنم؟ بعد تکلیف پورت چی میشه؟مثلا میخام پورت سی رو خروجی استفاده کنم ایا کل پورتو خروجی کانفیگ کنم با adcپین سی صفر مشکلی نداره؟اتمگا8
(۲۸-خرداد-۱۳۹۲, ۱۵:۳۴:۲۲)رسول21 نوشته است: [ -> ]چند تا سوال دارم:
1-اگه پتانسیومترو بخام با یه سیم بلند از میکرو بکشم بیارم مثلا7 یا 8 متری مشکلی ایجاد میشه راه حلش چیه؟
2-هر جا که بخام ویت رو بدم باید اون عمل جمع ظرب بنویسم یا یبار کافیه؟
3-از این جناب adcمیتونم تو زیر برنامه هام استفاده کنم؟ بعد تکلیف پورت چی میشه؟مثلا میخام پورت سی رو خروجی استفاده کنم ایا کل پورتو خروجی کانفیگ کنم با adcپین سی صفر مشکلی نداره؟اتمگا8
1-نمی دونم عملا امتحان نکردم
2-شما هر جا که مقدار ADC رو بخونید باید این اعمال انجام بدین می تونید بعد از do یه با مقدار ADC رو بخونید و هر جا که خواستید تاخیر بذارید
3-بله مشکلی نداره پورت ها رو اینطوری کانفینگ کنید
کد php:
config portc.0=input
config portc.1
=output
config portc.2
=.....
.

دوستان در مورد سوال یک کسی نظری نداره؟چکار کنیم تا ازریست بیخودی جلو گیری شود؟
نقل قول: 1-اگه پتانسیومترو بخام با یه سیم بلند از میکرو بکشم بیارم مثلا7 یا 8 متری مشکلی ایجاد میشه راه حلش چیه؟
7-8 متر که تولرانسش زیاد میشه و رو خوندن مقدار adc تاخیر زیاد بوجود میاد
ولی واسه حداکثر 2-3 متر با تقسیمات نرم افزاری و زمان بندی میشه این تغییرات و جبران سازی کرد
صفحه‌ها: 1 2