فهرست مطالب:
- مرحله 1: تپه
- مرحله 2: نمایش نقدی نمایندگی فروش
- مرحله 3: طرح کلی
- مرحله 4: کد ارتباطات اصلی
- مرحله 5: کد نهایی و فیلم
تصویری: آموزش AVR Assembler 11: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:51
به آموزش 11 خوش آمدید!
در این آموزش کوتاه ، ما بالاخره قصد داریم قسمت اول پروژه نهایی خود را بسازیم.
اولین کاری که باید انجام دهید این است که به آخرین مرحله این آموزش بروید و فیلم را تماشا کنید. بعد برگرد اینجا. [مکث در حین انجام این کار….] خوب. حالا ادامه دهید.
اگر هنوز حدس نزده اید ، ما در حال ساخت یک بازی Craps هستیم! البته ، فقط به این دلیل که من در حال ساخت یک بازی craps هستم مطمئناً به این معنی نیست که شما مجبور هستید. امیدوارم بدون گفتن ادامه داشته باشد. در هر صورت استفاده از میکروکنترلرها برای کنترل صفحه های تقسیم بندی شده و غیره و برقراری ارتباط با یکدیگر مفید است - این همان کاری است که ما در اینجا انجام می دهیم. می توانید برای استفاده از آنها در هر صورت که دوست دارید کد بنویسید. در حال حاضر من می خواهم آنها را برای بازی craps کد کنم ، اگرچه ممکن است بعداً تصمیم بگیرم که صفحه نمایش های تقسیم شده را مجدداً هدف قرار دهم تا کار دیگری انجام دهم.
دلیل این که من این را می سازم این است که من فکر می کنم که در نهایت ممکن است یک میز غذای بزرگ وگاس در "مرد غار" من در زیرزمین خانه ام بخواهم. با این حال ، هیچ یک از دوستان من کوچکترین ایده ای در مورد نحوه برخورد ، امتیاز دهی یا پرداخت شرط بندی ها و رول ها ندارند. بنابراین من فکر کردم این خوب است که میز تمام کارهای نمایندگی را برای ما انجام دهد! وقتی روی میز شرط می گذاریم ، می توانیم یک دکمه کوچک فشار دهید که تراشه های ما نشان می دهد که چقدر در آنجا قرار دارد ، سپس میکروکنترلر می تواند پس از پرتاب تاس ، پرداخت آن مربع را محاسبه کرده و آن را نمایش دهد. من هنوز کاملاً مطمئن نیستم که چگونه این جنبه را سازمان دهی کنم. یک فکری که من داشتم این بود که از هر فردی خواسته می شود تا شرط بندی خود را به نوبه خود قرار دهد تا کنترل کننده قبل از ضبط بازیکن بعدی و جایی دیگر پول هر شخص را ثبت کند. پس از رول ، رایانه می تواند پرداخت ها را در هر مربع نشان دهد و همچنین می تواند "کل پول نقد" جاری را برای هر بازیکن حفظ کند.
برای یکی از تصاویر جلد این آموزش ، من فقط مجبور شدم از تصویری استفاده کنم که در تابستان امسال 5 آس را روی میز پوکر در وگاس می کشم. هههه به من میل کن
در اینجا پیوندی به مجموعه کامل آموزش های مونتاژ AVR من آمده است:
مرحله 1: تپه
در این آموزش ما فقط ساده ترین قسمت بازی نهایی Craps را می سازیم. به این "خط عبور" می گویند و می توانید روی آن شرط بندی کنید. با تماشای فیلم آموزشی کوتاه 2 دقیقه ای که به این مرحله ضمیمه کرده اید ، می توانید هر آنچه را که باید در مورد قسمت "خط عبور" بازی بدانید ، بیاموزید.
ما یک صفحه نمایش 4 رقمی دیگر خواهیم ساخت که همانطور که نمایشگر 4 رقمی فعلی ما پول نقد بازیکنان را ردیابی می کند ، نقدینگی فروشنده را پیگیری می کند. فروشنده با 20 دلار شروع می کند و بازیکن با 20 دلار شروع می کند (مجموع پول ممکن در بازی 9999 دلار است-حداکثر نمایش 4 رقمی ما ، اما ما برای اولین قطعه بازی فقط به 20 دلار نیاز داریم. در موارد شدید خسته کننده است و بردن یا باختن در زمان مناسب سخت است). اگر بازیکن تمام پول فروشنده را بگیرد ، بازیکن برنده می شود. اگر بازیکن تمام پول خود را از دست بدهد ، فروشنده برنده می شود.
چگونه پول برنده یا از دست می دهید؟ خوب ، کسانی از شما که Craps بازی کرده اید ، افرادی را دیده اید که در خیابان "تاس می زنند" یا بازی آن را در مقابل کازینو در وگاس بازی کرده اید ، از قبل می دانید. برای بقیه ، اجازه دهید توضیح کوتاهی از قسمت "خط عبور" بازی که امروز کدگذاری می کنیم را به شما ارائه دهم.
بازی Craps صدها سال است که به زمان جنگ های صلیبی باز می گردد. توسط سربازان در سنگرهای جنگ جهانی دوم بازی می شد ، در خیابان ها بازی می شد ، در کازینوها و سالن های قمار بازی می شد. این فقط با خط عبور شروع شد و همه چیزهای دیگر بعداً به آن اضافه شد. ما همین پیشرفت را دنبال خواهیم کرد.
نحوه عملکرد خط عبور این است. شرط می گذارید و سپس تاس را می اندازید. اولین رول "رول بیرون آمدن" نام دارد. اگر 2 عدد (چشم مار) ، 3 (آس) و 12 (اتومبیل های جعبه ای) در بازی روبرو شوید ، شرط خود را از دست می دهید و به آن "خرچنگ" می گویند. اگر یک عدد 7 (طبیعی) یا 11 (یو ، یا یو لوون) بچرخانید ، برنده می شوید. اگر هر عدد دیگری را بچرخانید ، این شماره "نقطه" شما می شود. هنگامی که یک "نقطه" ایجاد شد ، شما همچنان تاس را با هدف ضربه زدن دوباره به نقطه قبل از پرتاب 7 ادامه می دهید. اگر قبل از پرتاب 7 امتیاز خود را بدست آورید ، حتی پول برنده می شوید. بنابراین شرط بندی دلار برنده یک دلار از فروشنده است. اگر قبل از جمع شدن امتیاز خود نمره 7 بگیرید ، به آن "هفت بیرون" می گویند و شرط خود را به فروشنده واگذار می کنید.
پس از آن دوباره شروع می کنید. روی خط پاس شرط بندی کنید و تاس را بیندازید ، 7 یا 11 برد ، 2 ، 3 یا 12 باخت.
انواع دیگری از شرط بندی وجود دارد ، "عبور نکنید" ، "شانس پاس" ، "شانس عبور نکنید" ، "شرط بیا" ، "شرط نیا" ، "زمینه" ، "بوق" ، " راه های سخت "، و غیره و غیره و غیره. می توانید جزئیات را در اینجا پیدا کنید:
fa.wikipedia.org/wiki/Craps
همانطور که در بالا گفتم ، در حال حاضر ، ما فقط قسمت خط بازی را رمزگذاری می کنیم ، این تنها چیزی است که آنها در آن روز داشتند ، وقتی بچه ها برای پول ناهار یکدیگر تاس به دیوار می انداختند ، و این جایی است که ما شروع خواهیم کرد به
با این حال ، قبل از شروع برنامه نویسی موارد ، اجازه دهید نمایش نقدی نمایندگی را بسازیم. برای این منظور ، من می خواهم از یکی از نمایشگرهای بزرگتر 4 رقمی استفاده کنم که می توانید از Sparkfun یا جاهای دیگر تهیه کنید. از این پس من قصد ندارم مطالبی را در مورد این آموزش ها فهرست کنم. اگر در واقع همه چیز را با من ساخته اید ، می دانید که مصالح را از کجا تهیه کنید و آنها چیست. برای من بی معنی است که آنها را لیست کنم و یا هزینه آنها چقدر است.
بنابراین اجازه دهید یکی از تخته های نمونه اولیه خود ، یک صفحه نمایش بزرگ 4 رقمی ، یک ATmega328p دیگر را برای کنترل این صفحه در دست بگیریم و آن را مانند رول تاس و صفحه پخش قبلی بسازیم. ما همچنین سربرگ هایی را برای قدرت ، برنامه نویسی و ارتباطات TWI مانند بقیه پیوست خواهیم کرد.
مرحله 2: نمایش نقدی نمایندگی فروش
ما نمایش نمایندگی را همانطور که در نمایشگر 4 رقمی پخش کننده در آخرین آموزش انجام دادیم ، می سازیم. تنها تفاوت این است که بزرگتر است و پین های کمتری دارد ، بنابراین ما آن را مرتب کرده و سیم کشی آن را متفاوت انجام می دهیم.
تصویر سیم کشی این نمایشگر را ضمیمه کرده ام. می بینید که بزرگتر است و پین های کمتری نسبت به نمایشگر بازی ما دارد. تصویر مربوط به صفحه sparkfun است که در آن صفحه نمایش را دریافت کردم و نشان می دهد که کدام پین ها برای هر رقم قدرت دارند و کدام پین ها هر یک از بخش ها را به صورت یک رقم کنترل می کنند.
طبق معمول ، ابتدا باید صفحه را به صفحه اولیه نمونه اولیه خود وصل کنید و هر بخش را آزمایش کنید تا مطمئن شوید که نحوه اتصال آن را درک کرده اید. سپس باید آن را به پین های یک میکروکنترلر AVR روی بردبرد خود متصل کرده و از آنجا اجرا کنید تا زمانی که تمام کدهای ما در این آموزش کار کنند. در نهایت ، در پایان ، باید تخته خارجی را بسازید و روی آن لحیم کنید. سپس هنگامی که محصول نهایی را آزمایش می کنید ، می دانید که هر گونه مشکلی ناشی از کار لحیم کاری و برش شماست و نه کد. همچنین ، بدیهیات معروف نجاری را "دوبار اندازه گیری و یکبار برش" یا در مورد ساخت تخته مدار فراموش نکنید: "دوبار برش دهید ، یکبار لحیم کنید". همانطور که در تصویر مشاهده می کنید ، من بالاخره خراب شدم و پیوست کامل Dremel را برای این نوع کار خریدم. "مجموعه نقطه الماس". هزینه آن 5 دلار بود ، اما این بسیار کمتر از هزینه درمان خشم است که با برانگیختن کار برش من بیش از حد پی در پی انجام می شود.
من برای این صفحه نمایش از مقاومتهای 330 اهم استفاده می کنم. پین های COM از طریق مقاومت به GND می روند و قدرت به هر قسمتی که می خواهید نمایش داده شود می رسد. من قصد دارم از PC0 تا PC3 برای پین های COM و PB0 ، PB1 ، PB2 ، PB3 ، PB4 ، PD5 ، PD6 و PD7 برای بخش ها استفاده کنم.
در اینجا کلید به حداکثر رساندن شانس خود برای به دست آوردن درست است:
- مدار را ترسیم کنید
- مدار را قطع کنید
- سیم کشی خود را بررسی کنید
- مقاومت ها ، درپوش ها و نوسان ساز کریستال را وصل کنید
- اتصالات و سیم کشی را دوباره بررسی کنید
- سیمهای خارجی را وصل کنید
- میکروکنترلر را وصل کنید
- سیم کشی را دوباره بررسی کنید
- صفحه 4 رقمی را وصل کنید
- هر رقم را با یک جفت سیم از تخته نان چک کنید
- آن را کنار بگذارید و کد را بنویسید ، زیرا می دانید که احتمالاً بعداً باید موارد را تغییر دهید و امیدوارید که ارتباطی را که باید قطع شود ، سرپوش نگذارید.
من یک سری عکس از کار سیم کشی خود نشان داده ام. لطفاً متوجه شوید که آزاد هستید که سیم خود را به هر نحوی که دوست دارید سیم کشی کنید. به احتمال زیاد شما می توانید نقشه بهتری نسبت به من پیدا کنید و باید از آن استفاده کنید. هیچ چیز در این آموزش ها بستگی به نحوه سیم کشی قطعات شما ندارد ، به شرطی که دارای پورت های خروجی صحیح باشند. که مرا به یاد می آورد. توجه کنید که در حال حاضر دو سرصفحه به SDA و دو مورد به SCL می رود؟ چرا فکر می کنید ما این کار را کردیم؟
در حال حاضر ، همانطور که در کد پیوست در انتهای آموزش مشاهده می کنید ، من به سادگی کد را از صفحه پخش کننده آخرین آموزش به یک فایل جدید برای نمایش نمایندگی برش داده و چسباندم. سپس جدول جستجوی "بخش ها" را مطابق با نقشه پین جدید تغییر دادم و توجه کردم که برای این صفحه ، پین های "com" پایه شده و پین های قطعه 5 ولت هستند و نه برعکس مانند صفحه دیگر. به همچنین مقدار اولیه پورت ها را تغییر دادم تا سیم کشی جدید منعکس شود ، آدرس صفحه نمایندگی فروش را به 0b1000000 تغییر دادم تا غلتک بتواند با او صحبت کند ، زیر روال "چرخه" را تغییر دادم تا خاموش شود وقتی می خواهد بخش خاصی را تغذیه کند ، PC0 تا PC3 "com" پین می کند و من "رقمی" را که نشان داده می شود تغییر می دهم زیرا سیم کشی جدید دارای ارقامی در جهت مخالف است (اگر آن را همانطور که بود گذاشتید و سعی کردید 1234 آن را نمایش دهید) به جای آن 4321 نشان داده می شد).
در اینجا نقشه ثبت جدید است:
(PD7، PD6، PD5، PB4، PB3، PB2، PB1، PB0) = (نقطه اعشار ، c ، g ، b ، f ، a ، e ، d)
جایی که 1 روشن و 0 خاموش است.
حالا صفحه را با مقدار اولیه مقداردهی شده بر روی اعداد مختلف آزمایش کنید تا وقتی روشن می شود آنها را نشان دهد. این به شما می گوید که آیا همه چیز به درستی کار می کند.
سپس کد diceroller را طوری تغییر دهید که از آدرس جدید slave استفاده کند ، آنها را به هم وصل کرده و اجرا کنید. این باید دقیقاً مانند آنچه در آموزش قبلی انجام دادیم عمل کند با این تفاوت که تکه های تاس در صفحه جدید نمایش داده می شوند.
عالی! در حال حاضر ما آماده ایم که کد رول جدید را بنویسیم تا با صفحه پخش کننده و نمایشگر فروشنده ارتباط برقرار کند.
مرحله 3: طرح کلی
روشی که کد برای بازی ما کار می کند این است که ما تاس را به عنوان اصلی نگه می داریم و نمایندگی فروشنده را به عنوان یک برده اضافی اضافه می کنیم. غلتک تاس بازی را کنترل می کند و تغییرات حاصله را به صورت نقدی برای فروشنده ارسال می کند و بازیکن بعد از هر دور زدن نمایش می دهد. در حال حاضر ما فقط باید شرط عبور 10 دلار در هر بار داشته باشیم ، بنابراین نیازی نیست که خیلی پیچیده شویم اما بازیکن شرط خود را تغییر می دهد. بعداً ، هنگامی که مکانیک ها کار می کنند ، یک کنترلر دیگر اضافه می کنیم که یک استاد اضافی خواهد بود که شرط بندی و پرداخت ها را کنترل می کند و تاس بازی ما یک استاد باقی می ماند اما فقط برای ریختن تاس استفاده می شود. این به ما این امکان را می دهد که در صورت داشتن چند ارباب و برده ، وارد داوری TWI ، برخورد و سایر جنبه های مهم ارتباط سریال شویم. ما همچنین تعدادی صفحه نمایش 7 رقمی با دکمه های فشاری در زیر آنها اضافه می کنیم که به ما امکان می دهد روی انواع دیگر رول شرط بندی کنیم ، اما همه اینها در آموزش های بعدی ارائه می شود. در حال حاضر ، ما فقط تاس چرخ را به عنوان استاد و دو نمایشگر را به عنوان برده می خواهیم. وقتی دکمه را فشار می دهیم ، کد تصمیم می گیرد که آیا یک بازی طبیعی پرداخت می کند ، از یک پول خرج می کند ، یا یک سری رول های "نقطه" را تا یک برد یا 7 دور دریافت می کند.
بیایید ابتدا روال برده را بنویسیم. اینها ساده هستند زیرا تنها کاری که باید انجام دهند این است که خط SDA را برای آدرس خود تماشا کنند ، در صورت تماس با آنها ، شماره جدید را برای نمایش و نمایش آن می خوانند. فقط همین! آنها حتی مجبور نیستند با کارشناسی ارشد صحبت کنند زیرا کارشناسی ارشد کل آنها را پیگیری می کند و قبل از به روزرسانی تمام محاسبات پرداخت را انجام می دهد. در آموزش های بعدی ما باید برده هایی را برای استاد بنویسیم (به عنوان مثال وقتی نمایشهای 7 رقمی با دکمه های فشار برای مبلغ شرط بندی داریم ، آنها باید به استاد بگویند که چقدر روی هر صفحه شرط بندی می شود و بنابراین ما آنها را با آدرس + تماس با استاد در "حالت گیرنده اصلی" بخوانید) اما ما در زمان مناسب به آن خواهیم رسید.
در حال حاضر همه چیز با فشار دادن دکمه تاس و به دنبال آن محاسبه یا فشار دادن دکمه و در نهایت پیامی به هر یک از نمایشگرها با مجموع جدید آنها تحریک می شود. بعد از هر پرداخت یک آزمون وجود دارد تا مشخص شود آیا بازیکن برنده شده یا باخته است ، به عبارت دیگر ، آیا پول نقد فروشنده پس از یک رول صفر می شود یا اگر پول بازیکن بعد از یک رول صفر می شود (نه فروشنده و نه بازیکن می توانند منفی شوند زیرا آنها تنها مجاز به شرط بندی 10 دلار یا هر چیز دیگری هستند که کمتر از 10 دلار باشد).
بنابراین به این ترتیب کار خواهد شد. بیایید کد نویسی کنیم.
مرحله 4: کد ارتباطات اصلی
اکنون می توانیم روال ارتباطی غلتک تاس را بنویسیم. همچنین تقریباً مشابه چیزی است که ما آخرین بار نوشتیم با این تفاوت که ما با دو برده متفاوت ارتباط برقرار می کنیم نه فقط با یکی. توجه داشته باشید که برای هر یک از برده ها از آدرس متفاوتی استفاده می کنیم. شما باید کد را خودتان تغییر دهید و سپس به سادگی آن را با هر آدرس آزمایش کنید و مطمئن شوید که مانند آموزش قبلی عمل می کند ، مگر در هر صفحه جداگانه.
من کد هر جزء را که به سادگی نتیجه رول را نشان می دهد پیوست می کنم تا بتوان از آن برای عملکرد صحیح نمایشگرها و بررسی سیم کشی استفاده کرد.
کدنویسی بازی از نظر دستورات زبان اسمبلی یا اجزای میکروکنترلر AVR هیچ چیز جدیدی را معرفی نمی کند و بنابراین احساس نمی کنم لازم است خط به خط آن را مرور کنم. احتمالاً متوجه شده اید که وقتی ما چیز جدیدی را معرفی می کنیم ، هر خط را با جزئیات دقیق مرور می کنم تا جایی که اگر شما را به خواب نرسانم ، باعث عصبانیت شما می شوم. از طرف دیگر ، اگر چیز جدیدی معرفی نشده باشد ، این کار را نمی کنم. امروز هم همینطور است. بنابراین من فکر می کنم که شما تا به حال آماده بازی با کد ، خواندن کد ، تجزیه و تحلیل کد ، درک کد ، انتقاد از کد ، تمسخر کد و خندیدن به مردی که کد را نوشته است ، می شوید. بنابراین من به شما اجازه می دهم پیش بروید و این کار را انجام دهید. تقریباً به یقین می توانید مکان های زیادی پیدا کنید که می توانید آنچه را که من نوشته ام بهبود بخشید یا حداقل آن را ساده کنید.
طبق معمول ، نسخه نهایی کد دو صفحه نمایش و diceroller را در مرحله بعدی همراه با ویدئویی از آزمایش این دستگاه ضمیمه کرده ام.
مرحله 5: کد نهایی و فیلم
ویدئو و 3 برنامه را ضمیمه کرده ام. متوجه خواهید شد که می توانید شرط بندی و فروشنده اولیه و پول نقد بازیکنان را در بالای برنامه با دستورات.equ تعمیر کنید.
در آموزش بعدی ما توانایی شرط بندی بر روی چیزهای مختلف را اضافه می کنیم که بازی را هیجان انگیزتر می کند. نکته جالب در مورد Craps مدرن این است که شما انواع مختلفی از شرط بندی ها را دارید و سعی می کنید شانس خود را به حداکثر برسانید. در واقع ، Craps بالاترین شانس بازی در کازینو است! … اگر می دانید چگونه آن را بازی کنید. از طرف دیگر ، اگر نمی دانید چگونه بازی کنید ، یکی از کمترین شانس بازی ها می شود.
هنگامی که چیزهای بیشتری برای شرط بندی پول خود داشته باشیم ، من مبلغ کل بازی را افزایش می دهم.
باید سرگرم باشم!
بعدا می بینمت!
توصیه شده:
آموزش AVR Assembler 2: 4 مرحله
آموزش AVR Assembler 2: این آموزش ادامه & quot؛ آموزش AVR Assembler 1 & quot؛ اگر از آموزش 1 استفاده نکرده اید ، باید همین حالا متوقف شوید و ابتدا این کار را انجام دهید. در این آموزش ما مطالعه برنامه نویسی زبان اسمبلی atmega328p u را ادامه می دهیم
آموزش AVR Assembler 1: 5 مرحله
آموزش AVR Assembler 1: من تصمیم گرفته ام که یک سری آموزش نحوه نوشتن برنامه های زبان اسمبلی برای Atmega328p که میکروکنترلری است که در آردوینو استفاده می شود ، بنویسم. اگر مردم به این موضوع علاقه نشان دهند ، من هفته ای یکبار این کار را انجام می دهم تا زمانی که تمام نشوم
آموزش AVR Assembler 6: 3 مرحله
آموزش AVR Assembler 6: به آموزش 6 خوش آمدید! آموزش امروز کوتاه خواهد بود که در آن ما یک روش ساده برای ارتباط داده ها بین یک atmega328p و دیگری با استفاده از دو پورت متصل به یکدیگر ایجاد می کنیم. سپس تاس را از آموزش 4 و ثبت نام برمی داریم
آموزش AVR Assembler 8: 4 مرحله
AVR Assembler 8 تخته مدار
آموزش AVR Assembler 7: 12 مرحله
AVR Assembler 7 ورودی ما صفحه کلید را سیم کشی می کنیم تا