Სარჩევი:

74HC164 ცვლის რეგისტრაცია და თქვენი არდუინო: 9 ნაბიჯი
74HC164 ცვლის რეგისტრაცია და თქვენი არდუინო: 9 ნაბიჯი

ვიდეო: 74HC164 ცვლის რეგისტრაცია და თქვენი არდუინო: 9 ნაბიჯი

ვიდეო: 74HC164 ცვლის რეგისტრაცია და თქვენი არდუინო: 9 ნაბიჯი
ვიდეო: Бегущие огни своими руками на сдвиговом регистре 74HC164 2024, ნოემბერი
Anonim
74HC164 Shift Register და შენი Arduino
74HC164 Shift Register და შენი Arduino
74HC164 Shift Register და შენი Arduino
74HC164 Shift Register და შენი Arduino

Shift რეგისტრები ციფრული ლოგიკის ძალიან მნიშვნელოვანი ნაწილია, ისინი მოქმედებენ როგორც წებო პარალელურ და სერიულ სამყაროებს შორის. ისინი ამცირებენ მავთულის რაოდენობას, pin- ის გამოყენებას და კიდევ დაგეხმარებიან თქვენი კომპიუტერის დატვირთვის ჩამორთმევაში, მათი მონაცემების შესანახად. ისინი სხვადასხვა ზომისაა, განსხვავებული მოდელებით სხვადასხვა გამოყენებისთვის და განსხვავებული მახასიათებლებით. ის, ვისზეც დღეს ვისაუბრებ არის 74HC164 8 ბიტიანი, სერიული პარალელურად, არა ჩაკეტილი, ცვლის რეგისტრატორი. რატომ? პირველ რიგში, ეს არის ერთ -ერთი ყველაზე ძირითადი ცვლის რეგისტრატორი, რაც აადვილებს ამის სწავლას, მაგრამ ეს მოხდა მხოლოდ ის, რაც მე მქონდა (ლოლ!) და დაუკავშირდით მას არდუინოსთან ერთად, ესკიზებისა და led სქემების ჩათვლით. ვიმედოვნებ, რომ ყველას გსიამოვნებთ!

ნაბიჯი 1: მაშ, რა არის Shift რეგისტრები?

მაშ, რა არის ცვლის რეგისტრები?
მაშ, რა არის ცვლის რეგისტრები?

როგორც უკვე აღვნიშნეთ, ისინი სხვადასხვა გემოვნებით გამოირჩევიან და მე ასევე აღვნიშნე, რომ მე ვიყენებ 74HC164 8 ბიტიან სერიალს პარალელურად, არა ჩაკეტილი, ცვლის რეგისტრატორებს, რას ნიშნავს ეს ყველაფერი?!? პირველი, სახელი 74-ნიშნავს 74xx ლოგიკური ოჯახის მის ნაწილს და რადგან მისი ლოგიკა მას არ შეუძლია უშუალოდ გააკონტროლოს მიმდინარე (16–20 მმ მთლიანი ჩიპისთვის საერთოა), ის მხოლოდ სიგნალებს გადასცემს გარშემო, მაგრამ ეს არ ნიშნავს ეს სიგნალი არ მიდის ტრანზისტორზე, რომელსაც შეუძლია შეცვალოს უფრო მაღალი მიმდინარე დატვირთვა. HC ნიშნავს მის მაღალსიჩქარიან cmos მოწყობილობას, ამის შესახებ შეგიძლიათ წაიკითხოთ ქვემოთ მოცემულ ბმულზე, მაგრამ რაც თქვენ ძირითადად უნდა იცოდეთ ამის შესახებ არის ის რომ დაბალია დენის მოწყობილობა და იმუშავებს 2 -დან 5 ვოლტამდე (ასე რომ, თუ თქვენ იყენებთ 3.3 ვოლტ არდუინოს თქვენი ok) ასევე მას შეუძლია იმუშაოს მაღალი სიჩქარით ამ კონკრეტულ ჩიპს აქვს ტიპიური სიჩქარე 78mhz, მაგრამ თქვენ შეგიძლიათ ნელა ან სწრაფად (სანამ არ დაიწყებს გაფუჭებას) როგორც გინდა ცვლის რეგისტრი შედგება ფლიპ ფლოპის სქემებისგან, ფლიპ ფლოპი არის 1 ბიტიანი მეხსიერება, ეს ერთი ჰა s 8 (ან მეხსიერების 1 ბაიტი). ვინაიდან ის მეხსიერებაა, თუ თქვენ არ გჭირდებათ რეესტრის განახლება, შეგიძლიათ უბრალოდ შეწყვიტოთ მასთან საუბარი და ის დარჩება ნებისმიერ მდგომარეობაში, სანამ არ დატოვებთ მას, სანამ მას კვლავ არ „ელაპარაკებით“ან არ გადატვირთავთ ენერგიას. სხვა 7400 ლოგიკური სერიის ცვლის რეგისტრები შეიძლება პარალელურად გავიდნენ 16 ბიტიან სერიამდე ეს ნიშნავს, რომ თქვენი arduino აგზავნის მონაცემებს სერიულად (გამორთული პულსი ერთმანეთის მიყოლებით) და ცვლის რეგისტრი ათავსებს თითოეულ ბიტს სწორ გამომყვან პინზე. ეს მოდელი მოითხოვს მხოლოდ 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+ - ზე, რათა ის ყოველთვის მაღალი იყოს. მე ვირჩევ გამოიყენოს jumper საწყისი pin 1 to pin 14 (V+), რადგან თქვენ შეგიძლიათ უბრალოდ pop a breadboard jumper მეტი ჩიპი. ერთი დარჩენილი სერიული შეყვანა (პინ 2 ჩემს სქემაში) გადადის arduino– ს ციფრულ პინზე. 74HC164– დან 3, 4, 5 და 6 არის გამომავალი პირველი 4 ბაიტი, პინ 7 უკავშირდება მიწას, მარჯვნივ გადახტომა, პინი 8 არის საათის პინი, ასე იცის ცვლის რეგისტრმა შემდეგი სერიული ბიტი მზადაა წასაკითხად, ეს უნდა იყოს დაკავშირებული arduino– ს ციფრულ პინ 3 – თან. პინ 9 არის მთლიანი რეგისტრის ერთდროულად გასუფთავება, თუ ის დაბალი იქნება, თქვენ გაქვთ შესაძლებლობა გამოიყენოთ იგი, მაგრამ არაფერი ამ inscrutable არ, ასე რომ მიბმული მას V+ქინძისთავები 10, 11 12 და 13 არის ბოლო 4 ბაიტი outputpin 14 არის ჩიპი ძალა ოპერაცია პირველი თქვენ უნდა დააყენოთ სერიული შეყვანა რეგისტრის (ციფრული პინ 2 არდუინოზე) მაღალი ან დაბალი, შემდეგ თქვენ უნდა გადაატრიალოთ საათის პინი (ციფრული პინი 3) დაბალიდან მაღალამდე, ცვლის რეგისტრი წაიკითხავს მონაცემებს სერიული შეყვანის შესახებ და გადააქვს გამომავალი ქინძისთავები 1, გაიმეორეთ 8 -ჯერ და თქვენ დააყენეთ ყველა 8 შედეგი. ეს შეიძლება გაკეთდეს ხელით მარყუჟებისა და ციფრული წერისთვის arduino IDE- ში, მაგრამ მას შემდეგ ეს არის ძალიან გავრცელებული აპარატურის დონის კომუნიკაცია (SPI), მათ აქვთ ერთი ფუნქცია, რომელიც ამას აკეთებს თქვენთვის. shiftOut (dataPin, clockPin, bitOrder, მნიშვნელობა) უბრალოდ უთხარით, სად არის მონაცემები და საათის ქინძისთავები დაკავშირებული arduino– სთან, რა გზით ხდება მონაცემების გაგზავნა და რა გაგზავნა, და მისი მოვლა თქვენთვის (მოსახერხებელი)

ნაბიჯი 3: პროექტები

პროექტები
პროექტები

კარგი, საკმარისი ლექცია და თეორია, მოდით გავაკეთოთ სახალისო რაღაცეები ამ ჩიპით! არსებობს 3 პროექტი, რომელიც უნდა გასინჯოთ ამ სასწავლოში, პირველი 2 ადვილია და შეიძლება მომენტალურად გამოცხადდეს. მესამე, 4x4 led მატრიცა, საჭიროებს მეტ დროს და გეგმავს მშენებლობას, გაყვანილი გაყვანილობის გამო. ნაწილების სია პროექტი 1: "2 Wire" bargraph LED display controller 1 * 74HC164 Shift register1 * solderless breadboard1 * arduino, ან arduino თავსებადი (5v) 1 * 330 ohm 1/4 ვატიანი რეზისტორი 8 * ნორმალური გამომავალი წითელი LED- ის 12 * ჯუმბერის მავთულები პროექტი 2: '2 Wire' 7 სეგმენტის ჩვენების კონტროლერი 1 * 74HC164 Shift Register 1 * solderless breadboard1 * arduino, ან arduino თავსებადი (5v) 1 * 330 ohm 1/4 ვატიანი რეზისტორი 1 * საერთო კათოდი შვიდი სეგმენტის ჩვენება 9 * ჯუმბერის მავთულები პროექტი 3: '2 Wire' 4x4 led matrix display 1 * 74HC164 Shift register1 * arduino, or arduino compatible (5v) 4 * 150 ohm 1 1/4 ვატიანი რეზისტორი 8 * 1 კომი 1/8 ვატიანი რეზისტორი (ან უფრო დიდი) 8 * NpN ტრანზისტორი (2n3904 ან უკეთესი) 16 * ნორმალური გამომავალი წითელი LED არის მისი კონსტრუქციის საშუალება და რეგულირებადი 5 ვოლტიანი სიმძლავრე, რომელსაც შეუძლია გაუძლოს 160+ma (შეგიძლიათ ჩართეთ ყველა LED ერთდროულად სამუხრუჭე შუქის მსგავსად)

ნაბიჯი 4: პროექტი 1 [pt 1]: '2 Wire' Bargraph LED Display Controller აპარატურა

პროექტი 1 [pt 1]: '2 Wire' Bargraph LED Display Controller აპარატურა
პროექტი 1 [pt 1]: '2 Wire' Bargraph LED Display Controller აპარატურა
პროექტი 1 [pt 1]: '2 Wire' Bargraph LED Display Controller აპარატურა
პროექტი 1 [pt 1]: '2 Wire' Bargraph LED Display Controller აპარატურა

შეაერთეთ arduino და გადაიტანეთ რეგისტრაცია სქემატური სქემის მიხედვით, მე უკვე მაქვს 10 სეგმენტიანი ბარგრაფი ეკრანი, რომელიც მზად არის პურის დაფისთვის და ეს არის ის, რაც თქვენ ნახავთ სურათზე, მაგრამ იგივე შეგიძლიათ გააკეთოთ ინდივიდუალური ლედებით მეორე გვერდზე მე განვაცხადე, რომ ეს არ იყო დრაივერის მოწყობილობები, ისინი ლოგიკური მოწყობილობებია, რომელთა მცირედი დენიც შეუძლია მათში გაიაროს. იმისათვის, რომ გაუშვათ 8 LED, ჩართვის მარტივი სქემით და არა ცვლის რეგისტრის მომზადებით, საჭიროა, რომ ჩვენ შევზღუდოთ მიმდინარეობა. LED- ები პარალელურად არის სადენიანი და საერთო ძალას (საერთო კათოდს), ძალაში შესვლამდე მიწოდების საფუძველი მათ უნდა გაიარონ 330 ოჰმეტიანი რეზისტორი, რაც ზღუდავს იმ დენის საერთო რაოდენობას, რომელსაც ყველა შუქდიოდური LED შეუძლია გამოიყენოს 10 მ -მდე (5 ვოლტზე). ეს მაგალითი, იმისათვის, რომ LED- ები მართოს მათმა დენმა, თქვენ უნდა ჩაწეროთ ტრანზისტორი, სადაც ცვლის რეგისტრს შეუძლია ჩართოს / გამორთოს უმაღლესი დენის წყარო (იხ. პროექტი 3) ცვლის რეგისტრის მონაცემთა პინი არდუინოს ციფრულ პინთან დაკავშირება

ნაბიჯი 5: პროექტი 1 [pt 2]: '2 Wire' Bargraph LED Display Controller software

პროექტი 1 [pt 2]: '2 Wire' Bargraph LED Display Controller software
პროექტი 1 [pt 2]: '2 Wire' Bargraph LED Display Controller software
პროექტი 1 [pt 2]: '2 Wire' Bargraph LED Display Controller software
პროექტი 1 [pt 2]: '2 Wire' Bargraph LED Display Controller software

მაგალითი 1: გახსენით ფაილი "_164_bas_ex.pde" arduino IDE- ს შიგნით, ეს არის მარტივი ესკიზი, რომელიც საშუალებას გაძლევთ განსაზღვროთ ან გამორთოთ შუქდიოგრაფები ბარგრაფიულ ეკრანზე პირველი 2 სტრიქონი განსაზღვრავს პინ ნომრებს, რომელსაც ჩვენ ვიყენებთ მონაცემებისა და საათისათვის, I გამოვიყენო #განსაზღვრება კონსტრუქტორის მთელ რიცხვზე, მე უფრო ადვილად მახსოვს და არ აქვს უპირატესობა ერთს ან მეორეს შედგენის შემდეგ #განსაზღვრეთ მონაცემები 2 #განსაზღვრეთ საათი 3 შემდეგ არის ბათილად დაყენების ფუნქცია, ის მუშაობს მხოლოდ ერთხელ, ასე რომ არდუინო ბრუნავს ჩართულია, ადგენს ცვლის რეგისტრს და სხვა არაფერი აქვს გასაკეთებელი. შიგნით void setup ფუნქცია ჩვენ ვაყენებთ საათს და მონაცემთა ქინძისთავებს როგორც OUTPUT ქინძისთავებს, შემდეგ shiftOut ფუნქციის გამოყენებით ჩვენ მონაცემებს ვაგზავნით ცვლის რეგისტრატორში void setup () {pinMode (საათი, OUTPUT); // საათის პინის გაკეთება გამომავალი pinMode (მონაცემები, OUTPUT); // მონაცემების პინის გაკეთება გამომავალი shiftOut (მონაცემები, საათი, LSBFIRST, B10101010); // გაუგზავნე ეს ორობითი მნიშვნელობა ცვლის რეგისტრს} shiftOut ფუნქციაში თქვენ ხედავთ მის არგუმენტებს მონაცემები არის მონაცემთა პინი, საათი არის საათის პინი LSBFIRST ეხება რა თანმიმდევრობას, როდესაც ის იწერება ორობითი აღნიშვნებით (Bxxxxxxxx) მე -7 B წარსულის ელემენტი არის ყველაზე უმნიშვნელო ბიტი პირველი, ეს იკვებება პირველ რიგში, ასე რომ ის მთავრდება ბოლო გამომავალზე მას შემდეგ, რაც რვა ბიტი იკვებება, სცადეთ ითამაშოთ სხვადასხვა მნიშვნელობებით, რომ ჩართოთ ან გამორთოთ განსხვავებული შაბლონები და ბოლოს ცარიელი ბათილი მარყუჟი (რადგან თქვენ გჭირდებათ ერთი მაშინაც კი, თუ თქვენ არ იყენებთ მას) void loop () {} // ცარიელი მარყუჟი ახლა მაგალითი 2: პირველი 8 ხაზი არის იგივეა, რაც პირველი მაგალითის პირველი 8 სტრიქონი, ფაქტობრივად, ისინი არ შეიცვლება ნებისმიერი სხვა პროექტისათვის, ამიტომ #განსაზღვრეთ მონაცემები 2 #განსაზღვრეთ საათი 3 გამოტოვეთ დაყენება () {pinMode (საათი, გამომავალი); // საათის პინის გაკეთება გამომავალი pinMode (მონაცემები, OUTPUT); // გახადეთ მონაცემების პინი გამომავალი ეს არის უკან პირველი მაგალითიდან, სადაც ჩვენ დავიწყეთ მარჯვენა ნაწილიდან და ვიმუშავეთ მარცხნივ, მაგრამ MSBFIRST- ის გამოყენებით გადაადგილების ფუნქცია მონაცემებს აგზავნის სწორი გზით. ასევე ჩვენ ვამატებთ for მარყუჟის დაგვიანებას ისე, რომ ის შენელდება საკმარისად შესამჩნევი. for (int i = 0; i <8; ++ i) // for 0 - 7 do {shiftOut (მონაცემები, საათი, MSBFIRST, 1 << i); // ბიტი გადაიტანა ლოგიკური მაღალი (1) მნიშვნელობა i დაგვიანებით (100); // დააყოვნეთ 100 ms ან თქვენ ვერ ნახავთ მას}} void loop () {} // ცარიელი მარყუჟი ახლა ატვირთეთ სკრიპტი და ახლა თქვენ უნდა ნახოთ ბარგრაფი, რომელიც ანათებს თითოეულ შუქს ერთდროულად

ნაბიჯი 6: პროექტი 2: '2 Wire' 7 სეგმენტის ჩვენების კონტროლერი

პროექტი 2: '2 Wire' 7 სეგმენტის ჩვენების კონტროლერი
პროექტი 2: '2 Wire' 7 სეგმენტის ჩვენების კონტროლერი
პროექტი 2: '2 Wire' 7 სეგმენტის ჩვენების კონტროლერი
პროექტი 2: '2 Wire' 7 სეგმენტის ჩვენების კონტროლერი

შეხედეთ თქვენი 7 სეგმენტის ეკრანის პინუსს (მე მქონდა მხოლოდ ორმაგი, მაგრამ მხოლოდ ნახევარი) და გამოიყენეთ ქვემოთ მოყვანილი ნახაზი, რათა დააკავშიროთ თითოეული სეგმენტი ცვლაში ბიტი 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit 4 = pin 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (თუ გსურთ გამოიყენოთ ათწილადის წერტილი) და ეკრანის კათოდი 330 ოჰმ რეზისტორის საშუალებით და ელექტროენერგიის მიწოდების მიზნით ახლავე გახსენით შვიდი_სეგ_დემო.პდე არდუინოს ID პირველ რიგში ხედავთ, სადაც ჩვენ განვსაზღვრავთ მონაცემებს და საათის ქინძისთავებს #განვსაზღვროთ მონაცემები 2 #განვსაზღვროთ საათი 3 შემდეგი ჩვენ ვადგენთ ყველა კარატერის შაბლონს ორობითი სახით, ეს საკმაოდ ადვილია, შეხედეთ ქვემოთ მოცემულ ნახატს, თუ შუა სეგმენტი გჭირდებათ ჩაწერეთ ერთი, შემდეგ გჭირდებათ ზედა სეგმენტი, თუ ასეა მეორე, გააგრძელეთ ასე სანამ არ დაფარავთ ყველა 8 სეგმენტს, შეამჩნიეთ, რომ ჩემი ყველაზე მარჯვენა ბიტი (ბიტი 8) ყოველთვის 0 -ია, რადგან მე არასოდეს ათვლა ათწილადი წერტილი. ბაიტი ნული = B01111110; ბაიტი = B00000110; ბაიტი ორი = B11011010; ბაიტი სამი = B11010110; ბაიტი ოთხი = B10100110; ბაიტი ხუთი = B11110100; ბაიტი ექვსი = B11111100; ბაიტი შვიდი = B01000110; ბაიტი რვა = B11111110; ბაიტი რვა = B11111110; შემდეგ void setup ჩვენ ვაყენებთ ჩვენს მონაცემებს და საათის ქინძისთავებს, რომ გამოვიდეს void setup () {pinMode (საათი, OUTPUT); // საათის პინის გაკეთება გამომავალი pinMode (მონაცემები, OUTPUT); // გახადეთ მონაცემთა პინი გამომავალი 3} შემდეგ ბათილ მარყუჟში ჩვენ ვიყენებთ shiftOut თითოეული ნიმუშის (რიცხვის) საჩვენებლად დაელოდეთ 1/2 წამს და აჩვენეთ შემდეგი, 0 -დან 9 -მდე, ვინაიდან მისი ბათილი მარყუჟის ფუნქციის შესრულებისას ის ჩაითვლება 0-9 და გაიმეორეთ სამუდამოდ. void loop () {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]: '2 Wire' 4x4 Led Matrix ჩვენება

პროექტი 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display

4x4 LED მატრიცის პროექტი საკმაოდ ცოტა უფრო რთულია, მაგრამ ის თითქმის ყველა მშენებლობაშია, მე ვირჩევ, რომ ჩემი დაფები შედუღდეს პერფორდზე, მაგრამ უნდა იყოს შესაძლებელი გამეორება პურის დაფაზე, უბრალოდ გაცილებით მეტი მანძილით. განსხვავდება იმით, რომ ცვლის რეგისტრი პირდაპირ არ მართავს led– ს, სამაგიეროდ ცვლის რეგისტრატორის შედეგები იგზავნება 1 Kohm რეზისტორის საშუალებით NpN ტრანზისტორის ბაზაზე, როდესაც ბიტის გამომუშავება მაღალია, ის იძლევა საკმარის დენს და ძაბვას ტრანზისტორი კოლექტორსა და გამცემს შორის კავშირის გადასატანად, კოლექციონერები მიბმულია "მყარ" რეგულირებად 5 ვოლტზე. ტრანზისტორების გამცემი უკავშირდება 150 ოჰმ რეზისტორს და რეზისტორები მიბმულია ზედიზედ 4 ლიდერის ანოდებით და ზღუდავს მწკრივს 20 მ -ზე, თუმცა ეკრანზე სურათების დახატვისას მხოლოდ 1 led ერთდროულად არის ჩართული და, შესაბამისად, თითქმის სრული სიკაშკაშის გამო (რადგან ისინი ძალიან სწრაფად ირთვება და ითიშება მთლიანი სურათის შესაქმნელად) არის 4 მწკრივი და 4 სვეტები, თითოეული რიგი იღებს რეზისტორს და ტრანზისტორს, თითოეულ სვეტზე LED კათოდები ერთმანეთთან არის მიბმული, გადაეყრება ტრანზისტორის კოლექტორს, რომლის ფუძესაც აკონტროლებს ცვლის რეესტრი და ბოლოს მიწაზე. სქემატური ვერსია www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg

ნაბიჯი 8: პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display

პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
პროექტი 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display

ცვლის რეგისტრი აკონტროლებს როგორც ანოდს, ასევე LED- ის კათოდებს YX ფორმატში, შეხედეთ შემდეგ ბითს 1 = სვეტი 1 (მარჯვნივ) ბიტი 2 = სვეტი 2 ბიტი 3 = სვეტი 3 ბიტი 4 = სვეტი 4 ბიტი 5 = სტრიქონი 1 (ყველაზე მაღალი) ბიტი 6 = სტრიქონი 2 ბიტი 7 = მწკრივი 3 ბიტი 8 = სტრიქონი 4 სურათის გასაკეთებლად გრაფიკული ქაღალდზე გამოყავით 4x4 კვადრატი და შეავსეთ რომელი გსურთ ნაჩვენები, შემდეგ გააკეთეთ YX ცხრილი. ქვემოთ ნახავთ რუქების მსგავსებას, ასევე საუკეთესოს 4x4 "პიქსელზე", თითოეული შევსებული მონაკვეთისთვის ვწერ რომელ სვეტშია (Y), შემდეგ რომელ რიგშია (X) ახლა გახსენით arduino IDE ფაილში _4x4.pde ნახავთ ჩვენს ძველ 2 მეგობარს #განსაზღვრეთ მონაცემები 2 #განსაზღვრეთ საათი 3 შემდეგ მთელი რიცხვების მასივი int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; თუ შეხედავთ, ეს მხოლოდ ჩემი დაწერილი YX კოორდინატების ჩამონათვალია, ეს იქნება დიდი ტკივილი ამ მნიშვნელობების ხელით გადაკეთებით და ჩვენ გვყავს კომპიუტერი… ნება მიეცით ეს! იქ გადაადგილება არის ბათილი დაყენება, სადაც ჩვენ ვაკეთებთ ჩვენი საათი და მონაცემთა ქინძისთავები OUTPUTS void setup () {pinMode (საათი, OUTPUT); // საათის პინის გაკეთება გამომავალი pinMode (მონაცემები, OUTPUT); // მონაცემების პინის გაკეთება გამომავალი 3} და დამაბნეველი გარეგნული მარყუჟის დასაწყებად, საქმის დასაწყებად, ჩვენ უნდა გამოვაცხადოთ რამდენიმე ადგილობრივი ცვლადი void loop () {int Y; int X; ბაიტი გარეთ; შემდეგ for მარყუჟისთვის, ეს მარყუჟი უნდა იყოს იმდენი, რამდენადაც img მასივში ჩანაწერების რაოდენობა, ამ სურათისთვის მე მხოლოდ 6 პიქსელი გამოვიყენე, რაც 12 YX კოორდინატს ქმნის. მე ვახერხებ ყველა სხვა რიცხვის გამოტოვებას i += 2 გამოყენებით, რადგან ჩვენ ვკითხულობთ 2 კოორდინატს თითო მარყუჟში for (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 მნიშვნელობა ასევე გადატანილია მარცხნივ, ამჯერად მხოლოდ თავისთავად, არაფერია დამატებული. საბოლოოდ ეს ორი ერთად არის 1 ბაიტი 2 ნახევარი ბაიტის ნაცვლად (იბზარება), ბიტუსის გამოყენებით ან (სიმბოლო |) იღებს ორ ბაიტს და ძირითად ამატებს მათ ერთად, დავუშვათ X = 10000000Y = 00000001 -------------------- OR = 10000001row 4 სვეტი 1 out = 1 << (X + 4) | 1 << Y; და ბოლოს გადაიტანეთ მიმდინარე სურათის ჩვენება და ასე გააგრძელეთ მანამ, სანამ მასივში აღარ გვექნება მონაცემები … დააყოვნეთ ერთი წუთი და მარყუჟი სამუდამოდ, ვინაიდან ჩვენ მონაცემებს გადავიტანეთ მარცხნივ და ჩვენ გვჭირდება MSB ბოლო გამომავალ პინზე ცვლის რეესტრის პირველი გაგზავნა. shiftOut (მონაცემები, საათი, MSBFIRST, out); // გადაიტანეთ ბაიტი ჩვენს რეგისტრაციის დაყოვნებაზე (1); // გადაიდო იგი ისე, რომ მას ჰქონდეს შანსი დატოვოს სინათლის ადგილი შენს თვალებში მოგერიდებათ საკუთარი სურათების და ეფექტების შექმნა, არის 3 ნიმუშის ფაილი, ღიმილიანი სახე და გამშვები დაფა (რომელიც უფრო ზოლებს ჰგავს), და ბოლოს შემთხვევითი მუხტების შემქმნელი

ნაბიჯი 9: დასკვნა

დასკვნა
დასკვნა
დასკვნა
დასკვნა
დასკვნა
დასკვნა

ყოველივე ამის შემდეგ, ეს არის საკმაოდ მოსახერხებელი პატარა ჩიპი და მიხარია, რომ მე გადმოვიღე ძველი ელექტრონიკიდან ნაგვისკენ მიმავალი. ის შეიძლება გამოყენებულ იქნას სხვა საგნებისთვის, ჩვენების სისტემების გარდა, მაგრამ ყველას მოსწონს განათება და ნახვის მყისიერი გამოხმაურება ის, რაც ხდება, ძალიან მეხმარება ვიზუალური მოაზროვნეებისათვის, როგორიც მე ვარ. ასევე გთხოვთ, მაპატიოთ ჩემი კოდი.მაგრამ ეს არის სისტემის მხრივ, თუ დაჯექი და იმუშავებ მასთან ერთად, ის სავსეა სისუფთავეთა მახასიათებლებით, რაც 8 ბიტიანი მიკროკონტროლით სამყაროს გაკონტროლებას საკმაოდ მარტივად ხდის. როგორც ყოველთვის კითხვები და კომენტარები ყველაზე მისასალმებელია და მადლობა კითხულობ, ვიმედოვნებ, რომ ბევრი ისწავლე

გირჩევთ: