فهرست مطالب:

74HC164 Shift Register و آردوینو شما: 9 مرحله
74HC164 Shift Register و آردوینو شما: 9 مرحله

تصویری: 74HC164 Shift Register و آردوینو شما: 9 مرحله

تصویری: 74HC164 Shift Register و آردوینو شما: 9 مرحله
تصویری: Control 10 output pins or relay using 10 push button switch with 1 Arduino input pin ANPB-V2 2024, نوامبر
Anonim
74HC164 Shift Register و آردوینو شما
74HC164 Shift Register و آردوینو شما
74HC164 Shift Register و آردوینو شما
74HC164 Shift Register و آردوینو شما

ثبت کننده های شیفت بخش بسیار مهمی از منطق دیجیتالی هستند ، آنها بین جهان موازی و سری به عنوان چسب عمل می کنند. آنها تعداد سیم ها ، استفاده از پین ها را کاهش می دهند و حتی با ذخیره اطلاعات می توانند به کاهش بار پردازنده خود کمک کنند. آنها در اندازه های مختلف ، با مدل های مختلف برای کاربردهای مختلف و ویژگی های مختلف وجود دارند. موردی که امروز درباره آن بحث خواهم کرد 74 بیتی 74HC164 8 بیتی است ، سریال به صورت موازی خارج ، بدون قفل ، ثبت کننده شیفت است. چرا؟ خب ، یکی از اساسی ترین ثبت کننده های شیفت موجود است ، که یادگیری در مورد آن را آسان تر می کند ، اما اتفاقاً تنها چیزی بود که من داشتم (lol!) این دستورالعمل نحوه عملکرد این تراشه ، نحوه سیم کشی آن را پوشش می دهد ، و آن را با یک آردوینو شامل تعدادی نمونه طرح و مدارهای رهبری ارتباط دهید. امیدوارم همه شما لذت ببرید!

مرحله 1: بنابراین ، Shift Registers چیست؟

بنابراین ، Shift Registers چیست؟
بنابراین ، Shift Registers چیست؟

همانطور که قبلاً ذکر شد آنها دارای طعم های مختلف هستند ، و من همچنین اشاره کردم که من از 74HC164 8 بیتی استفاده می کنم ، سریال به صورت موازی ، بدون قفل ، رجیسترهای شیفت ، این همه به چه معناست؟!؟ اول ، نام 74-به معنی بخشی از خانواده منطقی 74xx است ، و از آنجا که منطق آن نمی تواند مستقیماً جریان زیادی را کنترل کند (16-20mama برای کل تراشه معمول است) ، فقط سیگنال ها را به اطراف منتقل می کند ، اما این بدان معنا نیست این سیگنال به ترانزیستوری نمی رود که بتواند بار بیشتری را تغییر دهد. HC به معنای دستگاه cmos با سرعت بالا است ، می توانید در مورد آن در لینک زیر بخوانید ، اما آنچه اساساً باید در مورد آن بدانید این است که کم است این دستگاه می تواند از 2 تا 5 ولت کار کند (بنابراین اگر از آردوینو 3.3 ولت استفاده می کنید خوب است) همچنین می تواند به درستی در سرعت های بالا کار کند ، این تراشه خاص دارای سرعت معمولی 78 مگاهرتز است ، اما شما می توانید به آهستگی یا سریع حرکت کنید (تا زمانی که شروع به گول زدن نکند) همانطور که می خواهید یک شیفت رجیستر از مدارهای فلیپ فلاپ تشکیل شده است ، یک فلیپ فلاپ 1 بیت حافظه دارد ، این یک هکتار s 8 (یا 1 بایت حافظه). از آنجا که حافظه است ، اگر نیازی به به روز رسانی رجیستر ندارید ، فقط می توانید "صحبت" با آن را متوقف کنید و تا زمانی که دوباره با آن "صحبت" یا تنظیم مجدد برق نکنید ، در هر حالتی که آن را رها کرده اید باقی می ماند. سایر رجیسترهای 7400 سری منطقی می توانند به طور موازی به سریال 16 بیتی بروند. این بدان معناست که آردوینو شما داده ها را به صورت سریال (خاموش پالس های خاموش یکی پس از دیگری) ارسال می کند و شیفت رجیستر هر بیت را روی پین خروجی صحیح قرار می دهد. این مدل فقط برای کنترل 2 سیم نیاز دارد ، بنابراین می توانید از 2 پین دیجیتالی در آردوینو استفاده کنید و آن 2 را به 8 خروجی دیجیتالی دیگر تقسیم کنید. (به عنوان مثال یک گیم پد NES) بدون قفل این ممکن است در صورت نیاز به این تراشه خرابی باشد. همانطور که داده ها از طریق سریال وارد یک شیفت شیفت می شوند ، در اولین پین خروجی نشان داده می شود ، هنگامی که یک پالس ساعت وارد می شود ، اولین بیت روی 1 مکان تغییر مکان می دهد و یک اثر پیمایش روی خروجی ها ایجاد می کند ، به عنوان مثال 00000001 در خروجی ها نشان داده می شود. به عنوان 10100100010000100000100000010000000000 اگر با دستگاه های منطقی دیگری صحبت می کنید که ساعت مشابهی دارند و انتظار چنین چیزی را ندارند ، ممکن است مشکلاتی ایجاد شود. رجیسترهای شیفت لچ دارای یک مجموعه حافظه اضافی هستند ، بنابراین پس از اتمام ورود داده ها به رجیستر ، می توانید یک سوئیچ را بچرخانید و خروجی ها را نشان دهید ، اما سیم ، نرم افزار و موارد دیگر را به آن اضافه می کند. در مورد این دستورالعمل ما نمایشگرهای LED را کنترل می کنیم ، اثر پیمایش آنقدر سریع اتفاق می افتد که نمی توانید آن را ببینید (به جز زمانی که اولین بار تراشه را روشن کرده اید) ، و هنگامی که بایت در شیفت رجیستر قرار می گیرد دیگر پیمایش نمی شود. ما نوع بارگراف را کنترل می کنیم ، 7 بخش ، و یک ماتریس نقطه 16LED 4x4 با این تراشه و نرم افزاری در آردوینو تنها با استفاده از 2 پین دیجیتال (+ قدرت و زمین)

مرحله 2: سیم کشی و عملکرد اولیه

سیم کشی و عملکرد اولیه
سیم کشی و عملکرد اولیه
سیم کشی و عملکرد اولیه
سیم کشی و عملکرد اولیه

سیم کشی 74HC164 یک تراشه 14 پین است ، دارای 4 پین ورودی ، 8 پین خروجی ، قدرت و زمین است ، بنابراین اجازه دهید از بالا شروع کنیم. پین 1 و 2 هر دو ورودی سریال هستند ، آنها به عنوان یک دروازه منطقی AND تنظیم شده اند ، به این معنی که هر دوی آنها باید منطقی باشند (یعنی 5 ولت) تا بیت به عنوان 1 در نظر گرفته شود ، حالت پایین (0 ولت) در هر دو به صورت صفر خوانده می شود. ما واقعاً به این نیاز نداریم و در نرم افزار راحت تر با آن کنار می آییم ، بنابراین یکی را انتخاب کنید و آن را به V+ وصل کنید تا همیشه بالا باشد. من ترجیح می دهم از یک بلوز از پین 1 تا پین 14 (V+) استفاده کنم ، زیرا شما فقط می توانید یک بلوز ورق را روی تراشه قرار دهید. یک ورودی سریال باقی مانده (پین 2 در نمودارهای من) به پین دیجیتال 2 آردوینو می رسد. پین 3 ، 4 ، 5 و 6 از 74HC164 اولین 4 بایت خروجی است پین 7 به زمین متصل می شود پرش به راست ، پین 8 پین ساعت است ، به این ترتیب است که شیفت رجیستر می داند که بیت سریال بعدی برای خواندن آماده است ، این باید به پین دیجیتال 3 در arduino متصل شود. پین 9 این است که در صورت پایین آمدن کل ثبت را یکباره پاک کنید ، شما می توانید از آن استفاده کنید ، اما هیچ چیز در این مورد غیرقابل نفوذ نیست ، بنابراین آن را به پایه های V+10 ، 11 12 و 13 وصل کنید 4 آخرین بایت خروجی پین 14 است عملکرد تراشه ها عملیات ابتدا باید ورودی سریال را تنظیم کنید از رجیستر (پین دیجیتال 2 در آردوینو) بالا یا پایین ، در مرحله بعد باید پین ساعت (پین دیجیتال 3) را از پایین به بالا بچرخانید ، شیفت رجیستر داده های ورودی سریال را می خواند و پین های خروجی را تغییر می دهد 1 ، 8 بار تکرار کنید و همه 8 خروجی را تنظیم کرده اید. این را می توان با حلقه ها و نوشتن های دیجیتالی در arduino IDE با دست انجام داد ، اما از زمانی که t او یک ارتباط سخت افزاری بسیار رایج (SPI) است ، آنها یک عملکرد واحد دارند که این کار را برای شما انجام می دهد. shiftOut (dataPin ، clockPin ، bitOrder ، value) فقط به آن بگویید که کجا داده ها و پین های ساعت به arduino متصل هستند ، از کدام طریق می توان داده ها را ارسال کرد و چه چیزی ارسال کرد ، و از آن مراقبت می شود (مفید)

مرحله 3: پروژه ها

پروژه ها
پروژه ها

خوب ، به اندازه کافی سخنرانی و تئوری ، اجازه دهید کارهای مفیدی را با این تراشه انجام دهیم! 3 پروژه وجود دارد که در این دستورالعمل امتحان کنید ، 2 مورد اول آسان است و می توان آنها را در لحظه لغو کرد. مورد سوم ، ماتریس led 4x4 ، به دلیل سیم کشی led نیاز به زمان و فکر بیشتری دارد. لیست قطعات پروژه 1: کنترل کننده صفحه نمایش بارگراف "2 Wire" 1 * 74HC164 Shift register1 * breadboardless solder1 * arduino ، یا arduino سازگار (5 ولت) 1 * 330 اهم مقاومت 1/4 وات 8 * خروجی عادی قرمز قرمز 12 * سیمهای بلوز پروژه 2: کنترل کننده صفحه نمایش '2 Wire' 7 بخش 1 * 74HC164 Shift register1 * نانبرد بدون لحیم 1 * آردوینو ، یا سازگار با آردوینو (5 ولت) 1 * 330 اهم 1/4 وات 1 * کاتد معمولی هفت قسمت نمایش 9 * سیم های بلوز پروژه 3: صفحه نمایش ماتریس رهبری 4 * 4 "2 Wire" 1 * 74HC164 Shift register1 * arduino ، یا arduino سازگار (5v) 4 * 150 اهم 1 مقاومت 1/4 وات 8 * 1 کیلو اهم مقاومت 1/8 وات (یا بزرگتر) ترانزیستور 8 * NpN (2n3904 یا بهتر) 16 * خروجی معمولی LED قرمز وسیله ای برای ساخت آن است و قدرت تنظیم شده 5 ولت است که می تواند 160+ ma را کنترل کند (می توانید همه چراغ ها را یکباره مانند چراغ ترمز روشن کنید)

مرحله 4: پروژه 1 [pt 1]: سخت افزار کنترل کننده نمایشگر LED Bargraph '2 Wire'

پروژه 1 [pt 1]: سخت افزار کنترل کننده صفحه نمایش LED Bargraph '2 Wire'
پروژه 1 [pt 1]: سخت افزار کنترل کننده صفحه نمایش LED Bargraph '2 Wire'
پروژه 1 [pt 1]: سخت افزار کنترل کننده صفحه نمایش LED Bargraph '2 Wire'
پروژه 1 [pt 1]: سخت افزار کنترل کننده صفحه نمایش LED Bargraph '2 Wire'

آردوینو و رجیستر شیفت را با توجه به شماتیک وصل کنید ، من در حال حاضر یک صفحه بارگراف 10 قسمتی دارم که برای استفاده از نانبرد آماده است و این همان چیزی است که در تصویر مشاهده خواهید کرد ، اما می توانید همین کار را با چراغ های شخصی در صفحه دوم انجام دهید. من اعلام کردم که اینها دستگاه های راننده نیستند ، آنها دستگاه های منطقی هستند و مقدار کمی جریان می تواند از آنها عبور کند. برای اجرای 8 LED ، در حالی که مدار را ساده نگه می دارید و پخت شیفت را انجام نمی دهید ، نیاز است که جریان را تا حد زیادی محدود کنیم. LED ها قبل از رفتن به برق به طور موازی سیم کشی می شوند و یک نقطه مشترک (کاتد مشترک) دارند. زمین تغذیه آنها باید از طریق مقاومت 330 اهم عبور کند و مقدار کلی جریان را که همه LED ها ممکن است از آن استفاده کنند به 10ma (در 5 ولت) محدود می کند. این امر LED ها را در حالت بیمارگونه قرار می دهد ، اما آنها روشن می شوند و بنابراین برای در این مثال ، برای هدایت LED ها در جریان مناسب خود ، باید ترانزیستوری را وارد کنید که در آن شیفت رجیستر بتواند منبع فعلی بالاتری را روشن یا خاموش کند (پروژه 3 را ببینید) پین داده های شیفت رجیستر (پین 2) نیاز دارد برای اتصال به پین دیجیتال آردوینو # 2 پین ساعت شیفت رجیستر (پین 8) باید به پین دیجیتال آردوینو # 3 متصل شود

مرحله 5: پروژه 1 [pt 2]: نرم افزار کنترل کننده نمایشگر LED Bargraph '2 Wire'

پروژه 1 [pt 2]: "2 Wire" Bargraph نرم افزار کنترل کننده صفحه نمایش LED
پروژه 1 [pt 2]: "2 Wire" Bargraph نرم افزار کنترل کننده صفحه نمایش LED
پروژه 1 [pt 2]: "2 Wire" Bargraph نرم افزار کنترل کننده صفحه نمایش LED
پروژه 1 [pt 2]: "2 Wire" Bargraph نرم افزار کنترل کننده صفحه نمایش LED

مثال 1: باز کردن فایل "_164_bas_ex.pde" در داخل آردوینو IDE ، یک طرح ساده است که فقط به شما امکان می دهد LED ها را در صفحه بارگراف روشن یا خاموش کنید از #define over const integer استفاده کنید ، به خاطر سپردن آن برای من آسان تر است ، و هیچ مزیتی برای یکی یا دیگری وجود ندارد که یکبار #داده ها را تعریف کنید on ، shift shift را تنظیم می کند و کار دیگری ندارد. در داخل تابع void setup ما ساعت و پین های داده را به عنوان پین OUTPUT قرار می دهیم ، سپس با استفاده از تابع shiftOut داده ها را به shift shift void setup () {pinMode (clock، OUTPUT)؛ // پین ساعت را به یک pinMode خروجی تبدیل کنید (داده ، OUTPUT) ؛ // پین داده را یک shiftOut خروجی کنید (داده ، ساعت ، LSBFIRST ، B10101010) ؛ // ارسال این مقدار دودویی به شیفت رجیستر} در تابع shiftOut می توانید آرگومانهای آن را مشاهده کنید داده داده پین داده است ، ساعت پین ساعت است عنصر گذشته B کمترین مقدار معنی دار است ابتدا ، این در ابتدا تغذیه می شود بنابراین پس از تغذیه هر 8 بیت در آخرین خروجی خاتمه می یابد ، سعی کنید با مقادیر مختلف برای روشن یا خاموش کردن الگوهای مختلف بازی کنید و در نهایت یک حلقه خالی خالی (زیرا به آن احتیاج دارید حتی اگر از آن استفاده نمی کنید) حلقه خالی () {} // حلقه خالی فعلا مثال 2: 8 خط اول همانند 8 خط اول مثال اول ، در واقع آنها برای هیچ یک از پروژه های دیگر تغییر نمی کنند ، بنابراین داده ها را #تعریف کنید #ساعت را مشخص کنید 3void setup () {pinMode (clock، OUTPUT)؛ // پین ساعت را به یک pinMode خروجی تبدیل کنید (داده ، OUTPUT) ؛ // پین داده را یک خروجی کنید اما در حال حاضر در تنظیمات void یک حلقه 8 وجود دارد که یک بایت خالی را گرفته و 1 بیت را در یک زمان از یک سمت چپ شروع می کند و به سمت راست حرکت می کند. این از مثال اول برعکس است که در آن ما از راست ترین بیت شروع کردیم و به چپ کار کردیم ، اما با استفاده از تابع shift out MSBFIRST داده ها را به روش صحیح ارسال می کند همچنین یک تاخیر در حلقه for اضافه می کنیم تا به اندازه کافی کند شود تا قابل مشاهده باشد. برای (int i = 0 ؛ i <8؛ ++ i) // برای 0 - 7 انجام {shiftOut (داده ، ساعت ، MSBFIRST ، 1 << i) ؛ // بیت تغییر مقدار منطقی بالا (1) با i تأخیر (100) ؛ // 100ms را به تأخیر بیندازید در غیر این صورت نمی توانید آن را ببینید}} void loop () {} // حلقه خالی فعلاً اسکریپت را بارگذاری کنید و اکنون باید بارگراف را مشاهده کنید که هر چراغ را یک به یک روشن می کند

مرحله 6: پروژه 2: "2 Wire" 7 Segment Display Controller

پروژه 2: "2 Wire" 7 Segment Display Controller
پروژه 2: "2 Wire" 7 Segment Display Controller
پروژه 2: "2 Wire" 7 Segment Display Controller
پروژه 2: "2 Wire" 7 Segment Display Controller

به pinout صفحه 7 سگمنت خود نگاه کنید (من فقط یک دوگانه داشتم اما فقط از نصف آن استفاده کردم) و از نقاشی زیر برای اتصال هر بخش به بیت صحیح در shift shiftbit 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit استفاده کنید. 4 = پین 6 بیت 5 = پین 10 بیت 6 = پین 11 بیت 7 = پین 12 بیت 8 = پین 13 (اگر می خواهید از نقطه اعشار استفاده کنید) و کاتد صفحه نمایش از طریق مقاومت 330 اهم و منبع تغذیه در حال حاضر هفت_seg_demo.pde را باز کنید در arduino IDEF ابتدا می بینید که ما کجا داده ها و پین های ساعت را تعریف می کنیم یکی را تایپ کنید ، بعد آیا شما نیاز به بخش بالا دارید ، اگر چنین است یک قسمت دیگر را تایپ کنید ، این کار را ادامه دهید تا هر 8 بخش را پوشش دهید ، توجه کنید که راست ترین بیت من (بیت 8) همیشه 0 است ، به این دلیل که من هرگز اعشار را روشن نمی کنم نقطه. بایت صفر = B01111110؛ بایت یک = B00000110؛ بایت دو = B11011010؛ بایت سه = B11010110؛ بایت چهار = B10100110؛ بایت پنج = B11110100؛ بایت شش = B11111100؛ بایت هفت = B01000110؛ بایت هشت = B11111110؛ بایت هشت = B1111110؛ byte هشت = B11111110؛ byte هشت = B11111110؛ byte هشت = B11111110؛ byte هشت = B11111110؛ بایت هشت = B11111110؛ بعد در تنظیمات خالی ، داده ها و پین های ساعت خود را به خروجی تنظیم می کنیم () {pinMode (ساعت ، خروجی) ؛ // پین ساعت را به یک pinMode خروجی تبدیل کنید (داده ، OUTPUT) ؛ // پین داده را خروجی کنید 3} سپس در حلقه void از shiftOut برای نمایش هر الگو (شماره) 1/2 ثانیه صبر کنید و بعدی را 0 تا 9 نمایش دهید ، زیرا در تابع حلقه خالی انجام می شود ، شمارش می شود 0-9 و برای همیشه تکرار کنید. حلقه خالی () {shiftOut (داده ، ساعت ، LSBFIRST ، صفر) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، یک) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، دو) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، سه) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، چهار) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، پنج) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، شش) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، هفت) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، هشت) ؛ تأخیر (500) ؛ shiftOut (داده ، ساعت ، LSBFIRST ، نه) ؛ تأخیر (500) ؛}

مرحله 7: پروژه 3 [pt 1]: صفحه نمایش ماتریس LED 4x4 "2 Wire"

پروژه 3 [pt 1]: صفحه نمایش ماتریس LED 4x4 "2 Wire"
پروژه 3 [pt 1]: صفحه نمایش ماتریس LED 4x4 "2 Wire"
پروژه 3 [pt 1]: صفحه نمایش ماتریس LED 4x4 "2 Wire"
پروژه 3 [pt 1]: صفحه نمایش ماتریس LED 4x4 "2 Wire"

پروژه ماتریس LED 4x4 بسیار پیچیده تر است ، اما تقریباً همه چیز در حال ساخت است ، من تصمیم می گیرم که معدن را روی تخته چوب لحیم کنم ، اما باید بتوان آن را روی یک تخته نان تکرار کرد ، فقط خیلی بیشتر فاصله داشته باشد. تفاوت در این است که شیفت رجیستر مستقیماً هدایت کننده را هدایت نمی کند ، در عوض خروجی های شیفت ثابتی از طریق مقاومت 1 کیلو اهم به پایه ترانزیستور NpN ارسال می شود ، هنگامی که خروجی بیت زیاد است ، جریان و ولتاژ کافی را به جریان می رساند. ترانزیستور برای تغییر اتصال بین کلکتور و امیتر ، کلکتورها به یک "ولتاژ" تنظیم شده ولتاژ 5 ولت متصل می شوند. ساطع کننده های ترانزیستور به مقاومت 150 اهمی متصل می شوند و مقاومتها به گره های 4 لید پشت سر هم وصل می شوند و ردیف را به 20ma محدود می کند ، اگرچه هنگام ترسیم تصاویر روی صفحه نمایش تنها 1 led در یک زمان روشن است ، و بنابراین تقریباً با روشنایی کامل (تقریباً برای ایجاد کل تصویر بسیار سریع روشن و خاموش می شوند) 4 ردیف و 4 ردیف وجود دارد ستون ها ، هر کدام ردیف یک مقاومت و یک ترانزیستور می گیرد ، در هر ستون کاتدهای LED به هم گره خورده ، به کلکتور یک ترانزیستور ، که پایه آن نیز توسط رجیستر شیفت کنترل می شود ، برخورد می کند و در نهایت به زمین می رود. نسخه بزرگ طرحواره ای www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

مرحله 8: پروژه 3 [pt 2]: صفحه نمایش ماتریس Led 4x4 '2 Wire'

پروژه 3 [pt 2]: صفحه نمایش ماتریس Led 4x4 "2 Wire"
پروژه 3 [pt 2]: صفحه نمایش ماتریس Led 4x4 "2 Wire"
پروژه 3 [pt 2]: صفحه نمایش ماتریس Led 4x4 "2 Wire"
پروژه 3 [pt 2]: صفحه نمایش ماتریس Led 4x4 "2 Wire"
پروژه 3 [pt 2]: صفحه نمایش ماتریس LED 4x4 "2 Wire"
پروژه 3 [pt 2]: صفحه نمایش ماتریس LED 4x4 "2 Wire"

شیفت شیفت هم آند و هم کاتد LED ها را در قالب YX کنترل می کند ، به بیت زیر 1 = ستون 1 (راست ترین) بیت 2 = ستون 2 بیت 3 = ستون 3 بیت 4 = ستون 4 بیت 5 = ردیف 1 (بالاترین) بیت نگاه کنید. 6 = ردیف 2 بیت 7 = ردیف 3 بیت 8 = ردیف 4 برای ایجاد یک تصویر یک مربع 4x4 روی کاغذ نمودار رسم کرده و مواردی را که می خواهید نمایش داده شوند را پر کنید ، سپس یک جدول YX ایجاد کنید. در زیر نگاشتی را برای شبیه سازی مشاهده خواهید کرد ، همچنین بهترین کاری که می توانید بر روی 4x4 "پیکسل" انجام دهید برای هر بخش پر شده می نویسم در کدام ستون (Y) ، سپس در کدام ردیف است (X) اکنون باز کنید فایل _4x4.pde در arduino IDE 2 دوست قدیمی ما را خواهید دید ، 2 ، 4 ، 3 ، 4} ؛ اگر نگاه کنید فقط فهرستی از مختصات YX نوشته شده من است ، تبدیل این مقادیر با دست درد بزرگی خواهد بود و ما یک کامپیوتر داریم … اجازه دهید این کار را انجام دهد! پین ساعت و داده های ما OUTPUTS void setup () {pinMode (clock، OUTPUT)؛ // پین ساعت را به یک pinMode خروجی تبدیل کنید (داده ، OUTPUT) ؛ // پین داده را خروجی کنید 3} و یک حلقه void گیج کننده به نظر می رسد ، برای شروع کار باید برخی از متغیرهای محلی را void loop () {int Y؛ int X ؛ بایت بیرون؛ سپس یک حلقه for ، این حلقه باید به اندازه مقدار ورودی های آرایه img باشد ، برای این تصویر من فقط از 6 پیکسل استفاده کردم ، بنابراین 12 مختصات YX ایجاد می کند. من با استفاده از i += 2 هر عدد دیگر را رد می کنم ، زیرا در هر حلقه 2 مختصات (int i = 0 ؛ i <12؛ i += 2) // تعداد نقاط آرایه img ، این مورد 12 را می خوانیم. {اکنون ما ورودی Y را در در آرایه می خوانیم و یکی را از مقدار آن کم می کنیم ، زیرا بایت ها از یک شروع نمی شوند ، آنها از صفر شروع می شوند ، اما ما از 1 شمارش کردیم // اولین جفت سیم YX را بدست آورید Y = (img - 1) ؛ // یکی را کم کنید زیرا تعداد بیت ها از 0 شروع می شود سپس ورودی X را در [i + 1] در آرایه می خوانیم و یکی را از مقدار آن کم می کنیم ، به همان دلیل X = (img [i + 1] - 1)؛ بعد از این که مقادیر YX پیکسل را داشتیم ، مقداری بیتی یا ریاضی انجام می دهیم و به سمت چپ حرکت می کنیم. ابتدا باید مقدار X را بخوانیم و مقدار آن هر مقدار که باشد آن را جابجا کنیم + 4 نقطه دیگر ، بنابراین اگر X 4 باشد و 4 را به بیت 8 (MSB) اضافه کنید ، دوباره به نمودار نگاه کنید … بیت 1 = ستون 1 (راست ترین) بیت 2 = ستون 2 بیت 3 = ستون 3 بیت 4 = ستون 4 بیت 5 = ردیف 1 (بالاترین) بیت 6 = ردیف 2 بیت 7 = ردیف 3 بیت 8 = ردیف 4 بیت 8 آخرین ردیف است بعد مقدار Y نیز به سمت چپ منتقل می شود ، این بار فقط به خودی خود ، هیچ چیزی اضافه نمی شود. در نهایت این دو به جای 2 نیم بایت به 1 بایت تبدیل می شوند (nibbles) ، با استفاده از bitwise یا (نماد |) دو بایت می گیرد و اساساً آنها را با هم جمع می کند ، اجازه دهید X = 10000000Y = 00000001 -------------------- OR = فرض کنیم 10000001row 4 ستون 1 خارج = 1 << (X + 4) | 1 << Y؛ و در نهایت shiftOut برای نمایش تصویر فعلی ، و این کار را ادامه دهید تا اطلاعات بیشتری در آرایه نداشته باشیم … یک لحظه و برای همیشه حلقه را به تأخیر بیندازید ، زیرا ما داده ها را به سمت چپ منتقل می کردیم و نیاز داریم MSB در آخرین پین خروجی قرار گیرد. از شیفت رجیستر ابتدا آن را ارسال کنید. shiftOut (داده ، ساعت ، MSBFIRST ، خارج) ؛ // انتقال بایت به تأخیر ثبت نام ما (1) ؛ // آن را به تأخیر بیندازید تا فرصتی برای ایجاد نقطه ای از نور در چشمان شما ایجاد شود. با خیال راحت تصاویر و جلوه های خود را بسازید ، 3 فایل نمونه ، صورت خندان و تخته شطرنجی (که بیشتر شبیه راه راه است) وجود دارد. و در نهایت یک جرقه ساز تصادفی

مرحله 9: نتیجه گیری

نتیجه
نتیجه
نتیجه
نتیجه
نتیجه
نتیجه

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

توصیه شده: