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


موضوع بسته شده است 
امتیاز موضوع:
  • 3 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
آموزش ساخت تابلوی چرخان فقط با 7 عدد LED
#1
سلام :

همونطور که از اسم پروژه پیداست ، این تابلو فقط با 7 عدد LED قادره هر متنی که در حافظهء میکروکنترلر خودش داره بصورت مجازی و روی هوا نمایش بده .

مدار روی یک عدد موتور 12 ولت معمولی ( مثل موتور سشوار ) قرار میگیره و به روشی که در ادامه تاپیک توضیح خواهم داد ، برقرسانی میشه و با سرعت نسبتا" زیاد شروع به چرخش میکنه و متنها روی هوا به نمایش در خواهند اومد .
حتما" توی سایتهای خارجی ، انواع مختلف و البته پیشرفته تری از این گونه مدارات دیدید . قصد من از آموزش این پروژه این هست که با اساس کار آشنا بشید و بعد بتونید خودتون مدلهای پیشرفته تری از اونو بسازید .

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

استارت این پروژه رو قبلا" در سایت تکنو الکترو به همراه دوستان خوبی که پیدا کرده بودم از جمله کامران عزیز (مدیر همین سایت دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
)
زده بودیم .

توضیحات تکمیلی و کافی در ادامه همین تاپیک داده میشه . هر سؤالی هم که فقط در مورد همین پروژه داشته باشید با کمک کامران جان پاسخ خواهیم داد .


توجه :

برای باز کردن فایل PCB حتما" باید آخرین ورژن از نرم افزار پروتئوس رو داشته باشید ( ورژن 7.10 )


دو نمونه فیلم + برنامه میکروی اونها با سورس کامل با کامپایلر بیسکام از مدار ساخته شدهء خودم تهیه کردم که از ضمیمه میتونید دریافت کنید .

نکته :

نقشهء ساده شده ای از همین تابلو رو هم در ضمیمه قرار دادم که در صورت عدم تمایل به توسعهء مدار در آینده ، میتونید از اون فرم ساده شدهء PCB استفاده کنید که هیچ تفاوتی با PCB اصلی نداره و فقط بخشهای غیر ضروری اون حذف شده .


***************************************

یک تکه فیلم کوتاه 3 دقیقه ای از شروع برنامه ریزی میکروی این تابلو تا تست نهایی عملکرد اون تهیه کردم و لینک فیلم رو اینجا قرار دادم که اگه تمایل داشتید میتونید دانلود کنید و ببینید .
این فیلم ، صرفا" برای رفع هرگونه شائبه ای از طرف کاربران عزیز در خصوص اطمینان از کارکرد مدار تهیه شده .


لازم به توضیحه که :

1 - حجم فیلم بالاست ( حدود 18 مگابایت )

2 - بخاطر بهتر شدن کیفیت فیلم ، به ناچار ، بخشهایی از اون توسط نرم افزار تصویر برداری شده و بخشهایی هم فیلم اصلی دوربین هست و نهایتا" این دو با هم ترکیب شدند .


دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.


*******************

قابل توجه دوستانی که قبلا" این فایلها رو دریافت کرده بودند :

نقشه های شماتیک و PCB قبلی با نقشهء ساده شدهء جدید جایگزین شدند و برنامه ها هم بهینه شدند . اما فیلمها ، مربوط به همون PCB های قبلی هستند .

دلیل این تغییرات هم جلوگیری از گمراه شدن کاربران عزیز در خصوص تعداد زیاد LED‌ های روی PCB‌ قبلی بود . چون این برنامه هایی که گذاشته شده فقط برای 7 عدد LED‌ نوشته شده ، بنابراین بهتر دیدم که شماتیک و PCB ساده رو قرار بدم .

تاریخ به روز رسانی : 6 اسفند 1391

ـــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ

پسوورد فایلها : vahid_farahmand


فایل‌(های) پیوست شده
.rar   schematic & pcb & pictures.rar (اندازه: 390.52 KB / تعداد دفعات دریافت: 1,583)
.3gp   Tablo.3gp (اندازه: 2.58 MB / تعداد دفعات دریافت: 1,440)
.3gp   Tablo charkhan (writing_right to left)_vahid farahmand.3gp (اندازه: 424.34 KB / تعداد دفعات دریافت: 1,121)
.rar   writing_ right to left (program).rar (اندازه: 876 bytes / تعداد دفعات دریافت: 916)
.rar   moving right & left (program).rar (اندازه: 1.09 KB / تعداد دفعات دریافت: 600)
#2
سلام مجدد به همگی دوستان :

توضیحات لازم در مورد مدار این پروژه :

ـ این مدار مثل بقیهء پروژه های رایج نیست که اونو بشه روی برد-بورد یا پروتئوس آزمایش کرد . برای تست عملکرد مدار ، ابتدا حتما" باید PCB و بخش مکانیکی رو کامل بسازید . پس تا وقتی PCB نساختید و مدار رو برقرسانی نکردید در مورد برنامهء میکرو و جزئیاتش فکر نکنید !

ـ در این پروژه ، برقرار بودن بالانس مجموعهء چرخان بسیار مهم هست ... یعنی نباید فیبر در هنگام چرخش روی موتور ، به اصطلاح " لنگر" بندازه . بلکه باید به راحتی و خیلی نرم بچرخه . من سعی کردم فیبرو جوری طراحی کنم که بالانس مدار در حداکثر برقراری باشه که در عمل هم به همین صورت هست . این مطلب رو در فیلم ضمیمه که از مدار ساخته شدهء خودم تهیه کردم بخوبی میتونید متوجه بشید . اما چنانچه بعد از ساخت ، با عدم تعادل مواجه شدید که یکی از دلایلش ممکنه نوع لحیم کاری و مقدار قلع موجود روی قسمت نوار LED ها باشه ، میتونید یک یا دو عدد باتری سکه ای 3 ولتی بلا استفاده رو توسط چسب قطره ای به هم بچسبونید و روی باطری اصلی مدار قرار بدید تا به این شکل ، قسمت عقبی فیبر سنگین تر شده و بالانس کاملا" برقرار بشه .

روش برقرسانی به مدار در حال چرخش :

ـ اگه به زیر فیبر دقت کنید ، متوجه یک نوار ضخیم مسی در اطراف مرکز فیبر میشید . روی این دایرهء مسی ، باید یک عدد واشر مناسب لحیم کنید و بعد ، روی واشر رو هم قلع اندود کنید . خط مثبت ولتاژ 5 ولت ، توسط یک عدد فنر ، از زیر فیبر به این واشر اتصال پیدا میکنه . به این ترتیب ، با چرخش فیبر ، نوک این فنر بر روی واشر خواهد لغزید و همواره ولتاژ در مدار جاری هست .

نکتهء بسیار مهم : روی نوک فنر توسط هویه ، یک گلوله قلع لحیم کنید تا کاملا" روان و نرم روی واشر بلغزه و نوسان ولتاژ به کمترین مقدار برسه .

خط منفی ولتاژ هم از شافت موتور دریافت خواهد شد . به این صورت :

بعد از اینکه فنر رو برای خط مثبت ، از زیر فیبر کاملا" آماده کردید ؛
ابتدا یک تیغهء فلزی متصل به خط منفی منبع ولتاژ رو به شافت مماس کنید . سپس یک عدد پیچ 3 میلیمتری رو بصورت وارونه روی نوک شافت موتور لحیم کنید .
بعد توسط یک متهء 3 میلیمتری مرکز فیبر رو که روی PCB مشخص شده سوراخ کنید و پیچ رو از این سوراخ عبور بدید . حالا از روی فیبر ، ابتدا یک مهره ببندید تا فیبر کاملا" به پیچ محکم بشه و لق نزنه !

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

İmage

İmage

İmage


نکتهء مهم :

در این مدار هیچگونه رگولاتور ولتاژ تعبیه نشده ...
بنابراین دقت کنید که :


اولا"
اینکه ولتاژی بیشتر از 5 ولت به مدار ندید که درجا آی سی ساعت و میکرو خواهند سوخت ! ولتاژی کاملا" رگوله شده و 5 ولت اعمال کنید .

دوما" اینکه
دیود موجود روی مدار برای محافظت در برابر پلاریتهء اشتباه تغذیه تعبیه شده و حتی الامکان سعی کنید از همون نوع ، یعنی نوع ژرمانیوم باشه تا ولتاژ مدار زیاد افت پیدا نکنه .

حالا دیگه مراحل برقرسانی به مدار به پایان رسیده و مدار ، آمادهء پروگرام کردن هست .

* * * * * * * * * * * * * * * * * * * * * * * *
توجه کنید :

روشی متفاوت در برقرسانی به این مدار هم وجود داره که در دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
بصورت کامل توضیح داده خواهد شد ...



ادامه موضوع در پست بعدی ...


فایل‌(های) پیوست شده بندانگشتی (ها)
               
#3
سلام مجدد خدمت علاقمندان مبحث تابلوی چرخان :

( قبل از شروع عرایضم ، پیشاپیش از شما به خاطر نوع نگارش عامیانه ای که گاها" در پستهام استفاده میکنم پوزش میخوام . من به این سبک نگارش ، مخصوصا" در مطالب آموزشی اعتقاد دارم و فکر میکنم اینطوری ، به درک مطالب از سوی خواننده بیشتر میشه کمک کرد )
*******************************
همونطور که وعده داده بودم ، قصد دارم طی دو مرحله ( سخت افزار و سپس نرم افزار ) ، شما رو با نحوهء عملکرد و سپس برنامه نویسی برای مدار این پروژه آشنا کنم تا بعد از آشنایی با چگونگی کار ، خودتون بتونید با اندکی خلاقیت و حوصله ، هر نوع بلایی که خواستید ، بر سر این مدار بیارید و وادارش کنید تا اون چیزی که مد نظر شماست رو به همون شکلی که خودتون دوست دارید براتون به تصویر بکشه .

بخش اول ( سخت افزار )

مقدمه :

واقعیت قضیه اینه که اون چیزی که باعث میشه ما بتونیم چنین کاری رو انجام بدیم ، همه و همه به لطف استفاده از تکنولوژی ( RISC ( Reduced Instruction Set Computers و سرعت بالای پردازش دستورات در خانوادهء میکروکنترلرهای AVR هست .

البته نه به این معنی که با میکروکنترلرهای دیگه ، نمیشه اینکارو انجام داد ... خیلی خوب هم میشه .
اما همونطور که شما هم میدونید ، حسن میکروهای سری AVR علاوه بر امکانات زیادی که دارن نسبت به خانوادهء 8051 و یا PIC در سرعت اجرای دستورات هست و قادرن اکثر دستورات رو تنها در یک سیکل کاری اجرا کنن . بنابراین من AVR رو برای این پروژه انتخاب کردم .

ولی شما در پروژه های مشابه موجود در سایتهای خارجی ، می بینید اونا اکثرا" از میکروهای PIC استفاده کردن که دلیلش برای من روشن نیست ! ( شاید چون اونجا ارزونتر و دم دستی تره ــ برعکس ایران ! ــ گرایش عمده بیشتر به سمت میکروهای PIC هست ... نمیدونم !؟)

به هر حال ...

در اینجا فرض بر این هست که دوستانی که این مطالب رو میخونن ، حداقل با یکی از زبانهای برنامه نویسی برای میکروکنترلرها و کامپایلر اون آشنایی کامل دارن و میتونن خط به خط دستورات رو تحلیل کنن و باید هم همینجور باشه ... وگرنه اصلا" چرا اومدن تو این سایت ! ؟
( شوخی الکترونیکی بود:D:D ... همه با هر سطح معلوماتی برای بنده عزیز و محترم هستن . بنده خودم سواد آنچنانی هم ندارم ;))

بنابراین در بخش مربوط به نرم افزار از ذکر جزئیاتش صرفنظر میکنم .

آشنایی مختصر با سخت افزار و نحوهء عملکرد مدار تابلوی چرخان ( Propeller Tableau ) :
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


اگه تا حالا با تابلوهای روان که دیگه واقعا" به همت برادران چینی ! مثل نقل و نبات همه جا و روی سردر تمام مغازه ها و حتی توی خونه ها هم وجود داره ( شاید باورتون نشه ... اما اینکه میگم عین واقعیته ! یه جایی روی سردر توالت عمومی هم نصب کرده بودن! :s) کار کرده باشید و در موردشون اطلاعاتی داشته باشید ، حتما" میدونید که اساس کار اونها Refresh (تازه سازی) LED ها با سرعت نسبتا" بالاست . حالا تفاوتش با این مدار تابلوی چرخان اینه که در اینجا ، ما به مقداری سرعت Refresh بیشتر در مقایسه با تابلو روان احتیاج داریم . چون باید بصورت Virtual (مجازی) ، با استفاده از خاصیت خطای دید چشم انسان ، یک طیف گسترده از LED ها رو خلق کنیم . به عبارت ساده تر ، باید چشمهامونو گول بزنیم ...!:D
هر چقدر سرعت تازه سازی بیشتر باشه ، اثر Flicker‌ کمتر میشه .
( Flicker به معنی چشمک زدن تصویر ) . ما سعی میکنیم اینکارو با استفاده از سرعت بالای چرخش موتور علاوه بر فرکانس بالای نوسان کریستال داخلی یا خارجی انجام بدیم ( هرچند که شاید نتونیم ثبات تصویری دقیقا" مشابه با تابلو روان ثابت بدست بیاریم ! اما نتیجه کار ، با توجه به پیچیدگی فرآیند اجرای سریع دستورات ، قابل قبول خواهد بود .)

( شاید حداقل اگه بخوایم یک مزیت برای این مدار نام ببریم ، این باشه که احتمالا" هیچکس این مدارو نخواهد ساخت تا در جایی مثل اونجا ! نصب کنه ...:D )

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

چطور مدار از پایان یک دور چرخش باخبر میشه ؟

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


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

نکتهء مهم در ساخت قسمت تغذیهء PCB :

ـ در حین چرخش مدار ، تحت هیچ شرایطی نباید ولتاژ تغذیهء PCB دچار نوسان بشه . چون در غیر اینصورت ، عملکرد مدار دچار اختلال میشه و با وجود اینکه برنامهء میکرو کاملا" دقیق نوشته شده ، ممکنه شما خطوط یا نقاط درهم و برهمی مشاهده کنید که هیچ ربطی به خواستهء شما از برنامه نداره ! ... در این خصوص ، دقت کافی به خرج بدید .
* * * * * * * * * * * * * * * * * * * * *

کلا" دو روش برای ساختن صفحهء نمایش در این مدار وجود داره :

1 - قرار دادن LED ها بصورت عمودی ( عمود بر فیبر و به شکل L ) که باعث میشه صفحهء نمایش شما بصورت افقی دربیاد .

2 - قرار دادن LED ها بصورت افقی ( روی خود فیبر ) که باعث میشه صفحهء نمایش شما بصورت تخت دربیاد .


مزایا و معایب هر روش :

الف ـ در روش اول ، چشم شما در یک موقعیت مکانی ثابت ، به کمتر از یک سوم کل صفحهء نمایش دایره ای شکل اشراف کامل داره و زاویهء دید شما محدود خواهد بود ( حداکثر تا 100 درجه ) . اما از طرفی ، مزیتش در اینه که در همون فضای محدود ، شکل کاراکترها ( خواه تصاویر و خواه متنها ) کاملا" منظم و بدون تغییر خواهند بود که این مورد ، مخصوصا" در نمایش کاراکتر های مربوط به تصاویر ، بسیار مهمه .

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

( البته این مسئله با تمهیداتی قابل حله که برنامه نویسی رو بسیار پیچیده تر میکنه و برای اینکار بهتره از میکروکنترلر های ARM‌ استفاده بشه و من بهش نمی پردازم )

اما این روش دوم ، مزیت عمدء دیگری هم داره که حالا بماند ! پس با کمی اغماض و با رعایت پاره ای نکات در طراحی PCB ، من شخصا" این روش رو بهتر از روش اول میدونم و به همین خاطر ، از روش دوم در طراحی PCB استفاده کردم ... نتیجهء کار هم خیلی رضایت بخش هست .

با ادامهء موضوع در پست بعدی همراه باشید ...;)
#4
سلام به شما دوستان عزیز :

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

توضیحات پایانی بخش سخت افزار :
*********************************

اندازهء صفحهء نمایش :

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


( هرچقدر فیبر کوچکتر = برقراری بالانس راحت تر )

محاسبهء فضای نمایش ، کاملا" سلیقه ای هست و بستگی به انتخاب و نظر برنامه نویس داره . ولی توصیه میکنم هیچوقت بیشتر از نصف یک دایره رو برای این کار اختصاص ندید . در غیر اینصورت ، جلوهء بصری خوبی پیدا نمیکنه !
چون تابلوی ما مثل بقیهء تابلوهای روان ، بصورت معمولی و مستطیل نیست تا بشه هرچقدر که دوست داریم طول اونو زیاد کنیم ... !

اندازهء صفحهء نمایش ما ، رابطهء مستقیم داره با محیط دایرهء بزرگتر که در شکل می بینید و همهء شما هم خوب میدونید که ( اینجا ... همه چی ... درهمه ! :D:D) و از رابطهء زیر بدست میاد :


محیط دایره = شعاع x 2 x عدد ثابت "پی"
فضای نمایش = محیط دایرهء بزرگ ‍‍÷ 2

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
" پی " تقریبا" برابر هست با 3.141592
شعاع = فاصلهء مرکز فیبر تا وسط آخرین LED ( چون خود LED هم ، یک دایره ست و دارای مرکز هست )

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
محاسبهء مساحت فضای نمایش ساده ست . اما توضیح چگونگی این کار ، یک مقدار ممکنه شما رو دچار سردرگمی بکنه . بنابر این از ذکر جزئیاتش خودداری میکنم و فقط نتیجهء محاسبات رو برای همین PCB که خودم طراحی کردم به شما ارائه میدم . با توجه به همین فرمولهای دوران مدرسه ! خودتون برای هر ابعادی میتونید محاسبه کنید :

تعداد کل پیکسلهای نورانی بر روی نصف محیط دایرهء بزرگ برای یکLED 5mm با فاصلهء یکسان ، مناسب و جدا از یکدیگر = تقریبا" 52 عدد

بنابراین :

تعداد کل پیکسلها در تمام فضای نمایش ==========>> 364=7*52

( البته دانستن این عدد 364 فقط برای آگاهی شماست و کاربرد نرم افزاری نداره )

به عبارت ساده تر :

52 ستون ( یکی واقعی و 51 عدد مجازی ) از 7 عدد LED وجود داره که باید سر جای خودشون ، روشن و خاموش بشن تا متن یا تصویر ، نقش ببنده .
برای درک بهتر مطالب بالا ، به شکلی که تهیه کردم نگاه کنید .

İmage

این تصویر کاملا" گویاست . ( واقعا" شاید کاری که یک تصویر میتونه انجام بده ، برابری کنه با 20 خط توضیحات ! )
*****************************
روش پیدا کرد مرکز ثقل و برقراری بالانس :

من خودم همیشه از همین روش استفاده میکنم و چون بصورت عملی هست ، همیشه موفقیت آمیزه :

1 - اول ابعاد و شکل فیبر خودتونو به هر شکلی که دوست دارید در پروتئوس یا هر برنامهء دیگه که باهاش کار میکنید بکشید و روی کاغذ ، یک پرینت ازش بگیرید ( طراحی نکنید ! فقط ابعاد و شکل فیبرو بکشید )

2 - کاغذو روی یک مقوای صاف و ضخیم بچسبونید و با کاتر ، کاملا" منظم و قشنگ و بدون تکه های اضافه ببرید ( مثلا" مقوای جعبهء شیرینی یا هر مقوایی که خشک ، ضخیم و صاف باشه )


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

3 - محل قرارگیری تک تک قطعات روی فیبرو هر جور که دوست دارید و فکر میکنید بهتره ، انتخاب کنید و بذاریدشون همونجا روی مقوا و با چسب نواری بچسبونید .

4 - حالا با یک لولهء جوهر خودکار یا یک میخ کوچک و یا هر وسیلهء دیگه ای که بشه باهاش این حرکتو که میگم انجام داد ، اینطوری عمل کنید :


لوله جوهر خودکارو بصورت عمودی بگیرید توی دستتون و مقوا رو با قطعات روی اون ، بذارید روی اون و اینقدر جابجا کنید تا کاملا" روی نوکش بتونه بمونه و نیفته ... این نقطه دقیقا" مرکز ثقل فیبر شما خواهد بودو همون جایی هست که باید سوراخ بشه .

نکته: اصلا" از استوانه ای که قطرش ضخیم تر از قطر شافت موتور باشه برای اینکار استفاده نکنید . چون دقت شما کاهش پیدا خواهد کرد ! بهترین گزینه ، همون لولهء داخلی جوهر خودکار هست .

برای درک بهتر این موضوع ، به تصاویر زیر نگاه کنید که چطور یک ماشن حسابو روی همین لولهء جوهر خودکار نگه داشتم ( شعبده بازی هم صفایی داره هاااا :D)

İmage
İmage

5 - حالا که این نقطه پیدا شد ، با ماژیک اونو علامت بزنید و عین همین مقوا ، یک تکه فیبر برش بدید و این طرحو روی فیبر پیاده کنید .

نکته:
در طراحی فیبر ، دیگه جای قطعات رو عوض نکنید و باید در همون نقطه از فیبر مدار چاپی شما قرار بگیرن ! ضمنا" در اطراف مرکز ثقل ، باید به اندازهء یک واشر ، جا در نظر گرفته بشه .
****************************
نحوهء چینش LED ها روی فیبر :

اگه از طرح PCB این تاپیک استفاده میکنید ، که هیچ ...
ولی اگه فیبر جدیدی طراحی میکنید و میخواید ار برنامه های همین تاپیک برای میکرو استفاده کنید :
به هیچ عنوان جای LED ها نباید عوض بشه . در غیر اینصورت تمام کد های برنامه بهم خواهد خورد و بی اعتبار خواهند شد !
****************************
انتخاب LED ها برای مدار :

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

ــ LED های لیزری اصلا" مناسب نیستند . چون زاویهء دید اونها مستقیمه و از کناره ها ، تقریبا" چیزی دیده نمیشه .

ــ LED های oval ( معروف به LED های تابلو روانی ) ، از نظر نوردهی بسیار خوب هستند . اما شاید شکل فیزیکی نیم دایره ای که دارن ، در نتیجهء کار ، زیاد راضی کننده نباشن !
من خودم که تمایلی به استفاده از اونها ندارم . . . شما میتونید امتحان کنید .

ــLED های کلاهی گزینهء خوبی هستند و بهتر از نوع لیزری عمل میکنند .

ــLED های مات بسیار مناسب هستند . اما در صورتیکه از نوع مرغوب باشن و نوردهی خوبی داشته باشند .


( چند وقت پیش ، یکی از دوستان دوران مدرسهء بنده ، 20 عدد LED‌ مات و پرنور به من داد که واقعا" محشرن . میگفت ژاپنی هستن . من هنوز مثل این LED ها نتونستم جایی پیدا کنم ... ! )

ــLED هایی غیر از شکل دایره ای ، بنظرم اصلا" مناسب نیستن و کاربردی در این مدار نمیتونن داشته باشن ...

با این توضیحات ، نهایتا" سلیقهء شما حرف آخرو خواهد زد .
****************************
انتخاب موتور مناسب :

هر نوع موتور معمولی DC که قدرت و سرعت متوسط و مناسبی داشته باشه و توانایی چرخوندن مدارو ( که اصلا" هم سنگین نیست ) با سرعت بالا داشته باشه ، اعم از 6 ولت یا 12 ولت میتونید استفاده کنید ...

حداقل RPM‌ برای موتور در حالت زیر بار ، 1500 تا 2000 باشه . انتخاب با شماست .

( موتور 12 ولتی سشوار هم گزینهء مناسبی هست . اما چنانچه موتوری با سرعت بیشتر سراغ دارید ، چه بهتر ... )
****************************
دیگه نکته ای به ذهنم نمیرسه که مربوط به سخت افزار باشه و توضیح نداده باشم ....

اگه سؤالی دارید بپرسید تا پاسخ بدم ... وگرنه که منتظر پست بعدی ( نرم افزار ) باشید ...


موفق باشید ...


فایل‌(های) پیوست شده بندانگشتی (ها)
           
#5
(16 دي 1391، 01:25 صبح)kamran0080 نوشته است: دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.
هادی جان هنوزم به خدا بیامرز سشوارت فکر میکنم :D من تا حلا سشوار با این موتور ندیدم :s مثل اینه که رو پراید موتور جت بذاری :D
اقا وحید الان رفته بودم وسایل جدا کنم برا سخت افزارش دیدم تمام قطعاتشو بصورت SMD دارم (فردا یه عکسم ازشون میگیرم:-/) الان موندم کدوم رو انتخاب کنی قطعات DIP یا SMD Exclamationاگه میشه یه راهنمایی بکنید Blush

منم همین نظر هادی جان رو در مورد smd دارم . فکر میکنم جالب در بیاد .
هرچند که یه خورده کوچولو میشه ...Huh


سلام به همگی دوستان :
رسیدیم به بخش نرم افزاری پروژه ...

2 - بخش نرم افزار
با فرض اینکه پستهای آموزشی قبلی رو به دقت مطالعه کردین . . سخت افزارو ساختین . . به تمام نکات و توضیحات هم توجه کافی داشتین و بالاخره اینکه . . حالا مهیای کار شدین ، پس آموزش قسمت اول از این بخش رو که بسیار هم ساده ست ، شروع میکنم :

روش های برنامه نویسی برای این پروژه :

کلا" دو روش وجود داره . هر کدوم هم ، مزایا و معایب خاص خودشو داره که به هر کدوم از اونها میپردازم :

1 - برنامه نویسی به روش تأخیری

2 - برنامه نویسی به روش کرونومتریک

***************************************

برنامه نویسی به روش تأخیری ( مزایا و معایب) :

این روش وابستگی مطلق داره به سرعت چرخش موتور (RPM) . پس میتونین متوجه بشین که برای هر موتور ، باید یک برنامهء مخصوص فراهم کرد . البته نه به این معنا که کلا" برنامه باید عوض بشه ... اینطور نیست . بلکه فقط می بایست دستورات ایجاد تأخیر در برنامه متناسب با سرعت چرخش موتور ، تغییر کنن و این کار هم باید به روش آزمون و خطا انجام بشه . اما در ابتدای کار ، برای دونستن اینکه این آزمون و خطا از چه نقطه ای و چه عددی باید شروع بشه ، دو حالت ممکنه وجود داشته باشه :

حالت اول ) شما از مقدار RPM‌ موتور ( حتی بطور تقریبی ) اطلاع دارین . در این حالت ، میتونین به ترتیب زیر از زمان تناوب یک دور موتور آگاه بشین :

İmage

حالت دوم ) شما هیچ اطلاعی از مشخصات موتور ندارین . پس باید فرض رو بر کمترین زمان تناوب بذارین ( در بیشترین RPM معمولا" این زمان ، کمتر از 5ms نیست )

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

مجموع تأخیرات ایجاد شده در برنامه برای یک دور اسکن صفحهء نمایش ، نباید بیشتر از این زمان تناوب باشه . چون در غیر اینصورت ، قبل از اینکه 1 دور به پایان رسیده باشه ، هنوز برنامهء شما ، اسکن کل فضای نمایش رو تموم نکرده و بنابراین شما نمیتونید متنو بصورت کامل روی صفحه ببینید .

دلگرمــی :

زیاد با خوندن این مطالب ترس به خودتون راه ندین و نگران نوع برنامه نویسی نشین !
اینها رو عرض کردم تا با روال کار آشنا بشید . شما هر طوری هم که برنامه رو بنویسید ، 99/5 ٪ مشکل کمبود زمان پیدا نخواهید کرد . چون زمانهایی که ما با اون سر و کار داریم ، در حد میکرو ثانیه ست و سرعت پردازش میکرو هم که پشتیبان ماست ...


مزایــــا :

1 -چون در این روش ، تمام دستورات در یک وقفه اجرا میشن ، بنابراین ، میکروکنترلر دیگه کار اضافه و سنگین دیگه ای انجام نمیده . بنابراین ، میکرو همیشه یک روال رو در پیش میگیره و منظم کار میکنه . در نتیجه خللی در نحوهء اجرای دستورات پیش نمیاد .

2 -تصویر شما ، از پیوستگی به مراتب بهتری برخوردار میشه و اثر Flicker هم در حداقل خودش باقی می مونه .

معایــب :

وابستگی شدید به RPM موتور ، بزرگترین عیب این روش هست . بطوری که با کم و زیاد شدن دور موتور ، طول تصویر شما هم به طرز چشمگیری کاهش پیدا میکنه و نوشته ها ، از فرم عادی خودشون خارج خواهند شد .
البته چون موتور DC هست ، دور موتور معمولا" همیشه ثابت باقی می مونه . مگر اینکه ولتاژ تغذیهء موتور دچار نوسان بشه .

نتیجه گیری :

اگه بتونید منبع تغذیهء موتورو ثابت و بدون نوسان فراهم کنید ، این روش میتونه مفید باشه .


برنامه نویسی به روش کرونومتریک ( مزایا و معایب ) :

در این روش ، وابستگی مطلق به RPM‌ موتور تا حد بسیار زیادی کاهش پیدا میکنه و شاید حتی در مواردی بتونه به زیر 2 ٪ وابستگی برسه ( با توجه به نوع برنامه نویسی و روش ایجاد تأخیر ها )


روش کار به این صورت هست که :

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

به این دلیل گفتم : " تا حد بسیار زیادی " و نگفتم : "صد در صد مستقل از RPM " ، چون بالاخره موتور باید بچرخه و یک حداقلی از سرعت داشته باشه تا تصویر نقش ببنده دیگه ... غیر از اینه !؟

از طرفی ... یکسری محدودیت ها در برنامه نویسی به زبانهای سطح بالا وجود داره که یک مقدار کارو سخت میکنه .
همیشه در برنامه هامون لازم میشه که علاوه بر استفاده از تایمرها ، از دستورات تأخیر هم استفاده کنیم ( wait ) . این دستور همیشه و در انواع مدارهای مختلف ، کار ثابتی انجام میده . مثلا" وقتی می نویسیم : waitms 5
با توجه به فرکانس میکرو ، همیشه مقدار تأخیری که درست میکنه ثابت هست ( دقیق نیست ، اما هرچقدر که باشه ، همون ثابت هست )

در مدار ما ، چون چرخش کل مجموعه هست که نتیجهء کارو به ما نشون میده ، بنابراین حتی با محاسبهء دقیق زمان یک دور چرخش توسط تایمر ، حالا میبایست کاراکترها رو با تأخیری مناسب نسبت به همدیگر نمایش بدیم .
راحتترین راه ، استفاده از همون دستور wait بین هر ستون هست . اما طبق همون توضیحاتی که برای دستور wait دادم ، مقدار تأخیرش ثابت هست و تحت تأثیر سرعت چرخش موتور قرار نمیگیره . بنابراین باز هم با کم شدن سرعت موتور ، طول کاراکترها میتونه دستخوش تغییر بشه . اما این بار و در مقایسه با روش قبلی برنامه نویسی تأخیری ، این تغییر شکل ها ، به مراتب کمتر تحت تأثیر سرعت موتور هست و قابل قبول تره .

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

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

اما در عین حال ، بازهم یک مشکل دیگه وجود خواهد داشت که دیگه در این مورد ، هیچ کاری از دست ما ساخته نیست و مستقیما" به ساختار میکرو برمیگرده !
این مشکل ، اولویت وقفه ها در میکروکنترلرهای AVR هست .
بزرگترین عیب AVR‌ با تمام خوبی هاش اینه که شما نمیتونین برای وقفه هاش ( چه داخلی و چه خارجی ) اولویت تعیین کنین و هر سرویس-روتین وقفه ای که در آدرس پایین تر حافظه نوشته شده باشه ، در اولویت بالا تر اجرا قرار میگیره ...این در حالی هست که توی میکروهای 8051 ، این قابلیت وجود داره و از کمپانی Atmel بعید بود اینطوری عمل کنه !:s

با همهء این تفاصیل اینو میخوام بگم که :

واقعا" نیازی به اینهمه دردسر کشیدن و خون دل خوردن و پیچیده کردن برنامهء میکرو نیست و خیلی بیشتر از اونچه که فکرشو میکنید میتونین به موتور اعتماد کنین . چون همونطور که گفتم ، موتور ما DC هست و سرعت چرخشش ثابته . حتی با همون روش اول تأخیری هم که گفتم ، میشه به خوبی هر چه تمامتر ، یک تابلوی چرخان زیبا ساخت و نگران چیزی هم نبود .

بنابراین ...

مزایا :

1 - کاهش نسبی وابستگی به RPM موتور
2 - قابلیت اعمال کنترل بر روی مکان نمایش هر کاراکتر

معایب :

1 - افزایش دستورات برنامه نویسی و درگیری بیشتر میکروکنترلر
2 - وجود Flicker (خیلی زیاد نخواهد بود . اما در مقایسه با حالت تأخیری ، کمی بیشتر Flicker وجود داره)
******************************
در این پروژه ، من اصلا" قصد پیچیده کردن برنامه نویسی رو ندارم و به این جزئیات هم نخواهم پرداخت و با توجه به آموزشی بودن این مطالب ، به همین ابزارهای معمول برنامه نویسی که برای همه قابل تجزیه و تحلیل هست اکتفا میکنم .


( قابل توجه هادی عزیز : برای ساخت اون ساعت که مد نظرته ، حتما" باید از روش کرونومتریک استفاده کنی )


******************************************
با ادامهء همین موضوع در پست بعدی همراه باشید ...


فایل‌(های) پیوست شده بندانگشتی (ها)
   
#6
سلام به دوستان گرامی :

با ادامهء سلسله آموزشهای ساخت تابلوی چرخان در خدمت شما هستم و به موارد مربوط به برنامه نویسی اون می پردازم و طی 1 یا 2 پست آینده ، این آموزشها رو تموم خواهم کرد . سعی میکنم مطابق روال همیشگی سبک نگارشم !Huh خیلی روان و عامیانه مطالب رو ارائه کنم تا بهتر درک بشه ...Angel
قبلا" ذکر کرده بودم که دو روش تأخیری و کرونومتریک برای اینکار وجود داره و معایب و مزایای هر کدوم رو هم گفته بودم . در اینجا من قصد دارم روش کرونومتریک که مناسبتر و منطقی تر هم هست رو اجمالا" توضیح بدم .فایدهء روش کرونومتریک در این هست که کمتر به دور موتور وابستگی بوجود میاد و مهمتر از همه اینکه امکان تعیین مکان کاراکتر ها هم فراهم میشه .

روش کار :

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

اما چطور !؟ .... از کدوم تایمر استفاده کنیم !؟ .... تنظیماتش به چه صورت باشه !؟
قبل از پاسخ به این سؤالات ، لازم هست به یکسری نکات در این مورد اشاره کنم :


شما باید قبل از هر چیزی ، تصور درستی از فرکانس چرخش موتور در ثانیه داشته باشید ( منظور ، تعداد چرخشهاست ) . اگرچه هر موتوری دارای یک RPM‌ مخصوص به خودش در ولتاژی مشخص هست . اما زمانیکه باری به موتور وصل باشه ، دیگه این عدد ، نامعتبر خواهد بود و RPM موتور ، کاهش پیدا میکنه .
ولی به هر حال با توجه به وزن نسبتا" کمی که مدار ما داره ، این عدد ، زیاد کاهش پیدا نمیکنه و میشه تا حدودی این مقدار رو حدس زد .

دقت کنید که دانستن مقدار دقیق RPM ، اصلا" نیاز نیست و فقط دانستن محدودهء اون کفایت میکنه . تمام اینها هم فقط بخاطر اینه که بتونیم درک درستی برای چگونگی تنظیم تایمرها داشته باشیم و از زمان عقب نمونیم ...!

ما باید همیشه بدترین حالت رو در چرخش موتور در نظر بگیریم . یعنی فرض کنیم که موتور ما ، با کمترین سرعت ممکن در
ولتاژ 12 ولت خواهد چرخید و با فرض این موضوع ، تایمرها و تنظیمات اونها رو برای بهترین حالت انتخاب کنیم .

طبق آزمایشهایی که من بر روی چند موتور مختلف انجام دادم ، متوجه شدم که در ولتاژ 12 ولت برای موتورها ، در بدترین حالت ، هیچوقت سرعت چرخش موتور به کمتر از
15 دور بر ثانیه نمیرسه . بنابراین ، در این فرکانس
( سرعت ) ، زمان تناوب تقریبا" برابر میشه با 66 میلی ثانیه .

یعنی هر یک دور چرخش موتور ، تقریبا" 66 میلی ثانیه طول میکشه ...
( در بدترین حالت ! )

پس تایمری که قراره زمان چرخشها رو اندازه بگیره ، باید بتونه حداقل 66 میلی ثانیه رو با رزولیشن بالا
( که توضیح میدم یعنی چی ... ) اندازه گیری کنه . اگه موتور بتونه با سرعت بیشتری بچرخه ، طبیعتا" زمان تناوب ما به همون نسبت هم ، کمتر خواهد بود و مسلما" خیلی بهتر هم میشه . چون تایمر دیگه مجبور نیست زمان زیادی رو برای هر بار چرخش اندازه بگیره و کارش راحتتره !

حالا ....

من از تایمر صفر (0) برای اندازه گیری زمان چرخش و از تایمر یک (1) برای تازه سازی نمایش LED‌ ها استفاده کردم و برای این کار هم دلیل وجود داره که بعدا" توضیح میدم .

همونطور که میدونید ، فرکانس کاری مدار ما 8 مگا هرتز هست . اگه ما مقدار Prescale برای تایمر رو که 8 بیتی هم هست ، 1 در نظر بگیریم ، زمان سرریز تایمر برابر میشه با 32 میکرو ثانیه ...!
( چون زمان تناوب شمارش تایمر در این حالت برابره با 125 نانو ثانیه )
خوب این مدت زمان ، بسیار کم هست و با این Prescale ، با یک دور چرخش ، تایمر حدودا" 2062 بار سرریز میشه .


از طرفی ، با همین Prescale برای تایمر 1 ، ما فقط 8.192 میلی ثانیه برای تازه سازی و اجرای تمام دستورات مربوط به صفحهء نمایش در اختیار داریم . در حالیکه با سرریز شدن تایمر 1 ، ما هنوز بیشتر از 57 میلی ثانیه دیگر ، فرصت داریم که بتونیم متن ها رو نمایش بدیم و این زمان مفید ، از دست میره ...

یکی از اشکالاتی که به این صورت پیش میاد این هست که نور LED ها بشدت کم میشه و در واقع ، شاید به زحمت دیده بشه ...!

شاید در وهلهء اول فکر کنید که خوب چه ایرادی داره !؟ در عوض ، ما بجای یکبار ، چندین بار متنها رو نمایش میدیم و به این ترتیب ، فرکانس تازه سازی LED ها رو افزایش میدیم و نور اونها هم بهتر میشه ...

اما مشکل اساسی تر ( به جز نور کم LED ها ) ، چیز دیگه ست ...!

*************************************************

با ادامهء مطلب در پست بعدی همراه باشید ...
#7
سلام مجدد به دوستان عزیز :

ادامهء موضوع رو پی میگیریم ...

مشکل اصلی با تنظیم Prescale = 1 :


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

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

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

بنابراین برای توسعهء مدار در آینده ، به شما وصیت میکنم !!! :s حتما" Prescale ها رو برابر انتخاب کنید و از آزمون و خطا بپرهیزید ...


مشکلی که بهش اشاره کرده بودم ، اینه که با Prescale = 1 ، اگه سرعت Refresh‌ رو بالا ببرید ، نور LED ها بیشتر میشه ... اما متن های شما به قدری فشرده و بهم خواهند چسبید که فقط در حدود 1/4 صفحه ( یا شاید هم کمتر! ) قابل رؤیت خواهند بود و مابقی کل فضای نمایش ، خالی می مونه ! ... چرا این اتفاق میفته !؟

چون در اونصورت ، مدت زمان نمایش متنها ، کمتر از زمان یک دور چرخش میشه . به عبارت دیگه :

فرض کنید زمان یک دور چرخش ، 1 ثانیه باشه . اما متنهای شما در 200 میلی ثانیهء اول چرخش ، اجرا بشن . خوب طبیعیه که بقیهء صفحه خالی می مونه تا وقتی که دور بعدی شروع بشه ! ( این 1 ثانیه و 200 میلی ثانیه که گفتم فقط مثال بود )

برای جلوگیری از این اتفاق ، باید جوری برنامه رو نوشت که هر دوی حالتهای زیر حتما" اتفاق بیفته :

1 - زمان انتخابی برای سرریز تایمر یک ( یعنی نمایش LED ها )، فقط کسری کوچک از زمان یک دور چرخش باشه

2 - زمان نمایش کل متن ها کمتر از زمان یک دور چرخش باشه .

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

نکته :

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

مابقی افکتها رو خودتون می تونید با الهام گرفتن از این روشهای کد نویسی برای افکت و یا استفاده از انیمیشن های GIF ایجاد کنید .
#8
تصاویر واقعی پروژه تابلو چرخان در تاپیک زیر ...


دیدن لینک ها برای شما امکان پذیر نیست. لطفا ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید.

مشترک شدن در این موضوع موضوع بسته شده است 


پرش به انجمن:

کاربرانِ درحال بازدید از این موضوع: 1 مهمان

انتخاب پوسته :

دسترسی سریع
درباره ما
انجمن سرزمین الکترونیک در 20 شهریور 91 تاسیس شده ، که همیشه سعی کرده با ظاهری متفاوت و سرعتی خوب رضایت کاربران را جلب کند ، امیدواریم توانسته باشیم گامی کوچک در پیشرفت فناوری در ایران برداشته باشیم...
نیرو گرفته از MyBB 1.8.6 با فارسی سازی مای بی بی ایران - طراحی شده در : ملت دیزاین
© تمامی حقوق برای انجمن سرزمین الکترونیک محفوظ می باشد .

پوسته‌ی انجمن: