Სარჩევი:

წერტილოვანი მატრიცის LED- ის გამოყენება Arduino და Shift რეგისტრაციით: 5 ნაბიჯი
წერტილოვანი მატრიცის LED- ის გამოყენება Arduino და Shift რეგისტრაციით: 5 ნაბიჯი

ვიდეო: წერტილოვანი მატრიცის LED- ის გამოყენება Arduino და Shift რეგისტრაციით: 5 ნაბიჯი

ვიდეო: წერტილოვანი მატრიცის LED- ის გამოყენება Arduino და Shift რეგისტრაციით: 5 ნაბიჯი
ვიდეო: Introduction to HT16K33 4 Digit LED Seven Segment Display with Arduino 2024, ნოემბერი
Anonim
Dot Matrix LED- ის გამოყენება Arduino და Shift რეგისტრაციით
Dot Matrix LED- ის გამოყენება Arduino და Shift რეგისტრაციით
წერტილოვანი მატრიცის LED გამოყენებით Arduino და Shift რეგისტრაცია
წერტილოვანი მატრიცის LED გამოყენებით Arduino და Shift რეგისტრაცია
Dot Matrix LED- ის გამოყენება Arduino და Shift რეგისტრაციით
Dot Matrix LED- ის გამოყენება Arduino და Shift რეგისტრაციით

Siemens DLO7135 Dot matrix LED არის ოპტოელექტრონიკის საოცარი ნაწილი. ის დარეგისტრირებულია როგორც 5x7 Dot Matrix ინტელექტუალური ჩვენება (r) მეხსიერებით/დეკოდირებით/დრაივერებით. ამ მეხსიერებასთან ერთად, მას აქვს 96-სიმბოლო ASCII დისპლეი ზედა და ქვედა სიმბოლოებით, ჩამონტაჟებული სიმბოლოების გენერატორი და მულტიპლექსერი, სინათლის ინტენსივობის ოთხი დონე და ეს ყველაფერი მუშაობს 5V– ზე. ეს არის ბევრი რამ და 16 დოლარად, ეს ნამდვილად უნდა იყოს. ნახევარი დღის გატარებისას ჩემს საყვარელ ელექტრონიკის მაღაზიაში ვიპოვე სავსე ურნა მათგან 1,50 დოლარად ცალი. მაღაზიიდან რამდენიმესთან ერთად გამოვედი. ეს ინსტრუქცია გაჩვენებთ თუ როგორ უნდა დაუკავშიროთ ამ წერტილოვან მატრიცულ LED- ებს და აჩვენოთ სიმბოლოები AVR დაფუძნებული Arduino– ს გამოყენებით. თუ თქვენ წაიკითხეთ ჩემი რომელიმე წინა სახელმძღვანელო, შეიძლება გაგიჩნდეთ იდეა, რომ მე ხშირად ყველაზე მომთხოვნი გადაწყვეტილების მომხრე ვარ და არ შეცდებით, თუნდაც დროდადრო მიზანს არ ვაკლებ რა ამრიგად, მე ასევე გადავდგამ კიდევ ერთ ნაბიჯს ამ სასწავლო ინსტრუქციაში და გაჩვენებთ, თუ როგორ შეგიძლიათ შეამციროთ I/O პორტების რაოდენობა, რომლებიც საჭიროა ამ დიდი, ხმამაღალი წერტილოვანი მატრიცის LED- ების მართვისთვის.

ნაბიჯი 1: მიიღეთ საქონელი…

მიიღეთ საქონელი…
მიიღეთ საქონელი…

ამ მოკლე პროექტისთვის დაგჭირდებათ:

  • AVR დაფუძნებული მიკროკონტროლი, როგორიცაა არდუინო ან მისი მსგავსი. ეს ინსტრუქციები შეიძლება მორგებული იყოს თქვენს მიერ არჩეულ MCU– ზე.
  • DLO7135 წერტილოვანი მატრიცა LED ან სხვა იმავე ოჯახში
  • 8 ბიტიანი ცვლის რეგისტრი, როგორიცაა 74LS164, 74C299 ან 74HC594
  • პურის დაფა
  • დამაკავშირებელი მავთულები, მავთულის საჭრელები და ა.

გამაგრილებელი რკინა არ არის საჭირო, თუმცა მას მოგვიანებით ვიყენებ; თქვენ შეგიძლიათ გაუმკლავდეთ მის გარეშე.

ნაბიჯი 2: პირდაპირ დაუკავშირდით LED ეკრანს

პირდაპირ დაუკავშირდით LED ეკრანს
პირდაპირ დაუკავშირდით LED ეკრანს
პირდაპირ დაუკავშირდით LED ეკრანს
პირდაპირ დაუკავშირდით LED ეკრანს
პირდაპირ დაუკავშირდით LED ეკრანს
პირდაპირ დაუკავშირდით LED ეკრანს

ჩამოაყალიბეთ ნაწილების თქვენი მცირე სია და აიღეთ LED. განათავსეთ იგი პურის დაფაზე, რომელიც გარკვეულწილად არის ორიენტირებული, შუა ხაზის ღარზე. კავშირის პირველი ნაწილი ხდება LED- ის მარცხენა მხარეს. პინი #1 მდებარეობს მარცხენა ზედა ნაწილში, როგორც ეს მითითებულია სამკუთხედის/ისრის საშუალებით. მე დავამატებ პინის ფუნქციებს სურათზე თქვენი მითითებისთვის, როდესაც თქვენ კითხულობთ ან აკავშირებთ თქვენს LED- ს.

მარცხენა მხარე

პოზიტიური და ნეგატიური დაწყებული მარცხნიდან ზევით, დაუკავშირეთ Vcc 5V- ს. ეს შეიძლება იყოს კარგი იდეა, რომ არ გქონდეთ დაფა ჩართული სანამ არ დაასრულებთ მთელ მარცხენა მხარეს; LED შეიძლება იყოს ნათელი, თუ თქვენ ცდილობთ დაინახოთ მცირე ხვრელები მავთულხლართებში. შეაერთეთ ქვედა მარცხენა GND მიწასთან. ლამპის ტესტი, ჩიპის ჩართვა და ჩაწერა მე -2 და მე -3 ზემოდან მარცხნივ არის ლამპის ტესტი და ჩიპი ჩართვა. ეს ორივე ნეგატიური ლოგიკაა, რაც იმას ნიშნავს, რომ ისინი გააქტიურებულია, როდესაც ისინი ლოგიკურ 0 -ზე არიან 1. ნაცვლად 1. ჩემს ქვემოთ მოცემულ სურათზე უნდა იყოს გამოსახული ზოლები, მაგრამ მე არცერთ მათგანს არ მინიშნია. LT პინი ჩართვისას ანათებს წერტილოვან მატრიცის ყველა წერტილს 1/7 სიკაშკაშეზე. ეს უფრო პიქსელის გამოცდაა, მაგრამ LT პინის საინტერესო ის არის, რომ ის არ გადაწერს მეხსიერებაში არსებულ პერსონაჟს, ასე რომ თქვენ, თუკი რამდენიმე მათგანი გაქვთ ერთად (მათ აქვთ 20 ფუტიანი მანძილი), დაარტყამთ LT შეუძლია გამოიყურებოდეს კურსორის მსგავსი. მისი გამორთვის უზრუნველსაყოფად, დაუკავშირეთ მას 5V. CE და WR ქინძისთავები ასევე უარყოფითი ლოგიკაა და საჭიროა ჩართული იყოს ამ ჭკვიანი მოწყობილობის ჩაწერისთვის. თქვენ შეგიძლიათ მიკრო მართოთ ეს ქინძისთავები სათადარიგო I/O პორტებით თქვენს მიკროკონტროლერზე, მაგრამ ჩვენ აქ არ შეგაწუხებთ. უბრალოდ დააკავშირეთ ისინი მიწასთან, რომ ჩართოთ. სიკაშკაშის დონე DLO- ს LED- ების ოჯახში არის ოთხი პროგრამირებადი სიკაშკაშის დონე:

  • ცარიელი
  • 1/7 სიკაშკაშე
  • 1/2 სიკაშკაშე
  • სრული სიკაშკაშე

BL1 HIGH და BL0 LOW არის 1/2 სიკაშკაშე. ორივე HIGH არის სრული სიკაშკაშე. დააყენეთ ის, რაც მოგწონთ. კიდევ ერთხელ, თუ თქვენ გაქვთ დასაშვები I/O პორტები და ეს თქვენთვის მნიშვნელოვანია, ეს ასევე შეიძლება აკონტროლოთ თქვენი Arduino– ს მიერ. თუ თქვენ ენერგიას მოაქვთ თქვენს დაფაზე, თქვენ უნდა ნახოთ LED ნათურა. ითამაშეთ სიკაშკაშის კონტროლით და ნათურის ტესტით, რომ გაეცნოთ მას, თუ გაინტერესებთ.

მარჯვენა მხარე

მარჯვენა მხარე მთლიანად შეიცავს მონაცემთა პორტებს. ქვედა მარჯვენა, პინი 8 ან D0 უფრო ზუსტად, წარმოადგენს უმცირეს მნიშვნელოვან ბიტს 7-ბიტიან სიმბოლოში. ზედა მარჯვენა, პინ 14 ან D6 წარმოადგენს ყველაზე მნიშვნელოვან ბიტს. ეს გაძლევთ საშუალებას იცოდეთ რა ბრძანებით გადააადგილოთ თქვენი ბიტი LED- ზე წერისას. როდესაც მონაცემთა შეყვანის პორტები სადენიანი გაქვთ, იპოვეთ შვიდი ცარიელი ციფრული I/O პორტი თქვენს Arduino ან AVR და დააკავშირეთ ისინი. თქვენ ალბათ გინდათ დაიმახსოვროთ რა მონაცემების გამომავალი პორტი თქვენს AVR– ზე მიდის მონაცემთა შეყვანის პორტზე LED– ზე. ახლა თქვენ მზად ხართ გარკვეული მონაცემების გადასატანად იმ ჭკვიან შუქზე. ჯერ კიდევ არ ხარ კანკალი აღტკინებისგან? ვიცი რომ ვარ…

ნაბიჯი 3: საჩვენებელი პერსონაჟის დაზუსტება

გამოსაყენებელი პერსონაჟის დაზუსტება
გამოსაყენებელი პერსონაჟის დაზუსტება

სიმბოლოების ნაკრები, რომელიც გამოიყენება ამ CMOS LED- ში არის თქვენი გაშვებული ASCII დაწყებული 0x20 (ათობითი 32; სივრცე) და დამთავრებული 0x7F (ათობითი 127; წაშლა, თუმცა წარმოდგენილია LED- ზე კურსორის გრაფიკის სახით) რა ასე რომ, LED ჩვენების პერსონაჟი არაფერს ნიშნავს, ვიდრე ლოგიკა 1 ან 0 თქვენს მონაცემების გამომავალ ქინძისთავებზე, როგორც წესი, რასაც მოჰყვება WR პულსი, მაგრამ ამას ვამბობ ამ ვარჯიშისათვის. ასე რომ, თქვენ დაწერეთ ან დაიმახსოვრე რა ქინძისთავები მიდიან რა პორტებში, არა? მე ავირჩიე PD [2..7] და PB0 (ციფრული ქინძისთავები 2-დან 8-მდე არდუინო-ლაპარაკში). მე ჩვეულებრივ არ გირჩევთ PD [0..1] - ის გამოყენებას, რადგან მე მას ვუძღვნი ჩემს სერიულ კომუნიკაციას FreeBSD ყუთში და არდუინოს და სხვებს. შეაერთეთ ეს ქინძისთავები მათ FTDI USB საკომუნიკაციო არხზე და მიუხედავად იმისა, რომ "ისინი" ამბობენ, რომ 0 და 1 ქინძისთავები იმუშავებს, თუ თქვენ არ დაიწყებთ სერიული კომუნიკაციის ინიციალიზაციას, მე არასოდეს შემეძლო გამოვიყენო ეს ქინძისთავები, როგორც ჩვეულებრივი ციფრული I/O. სინამდვილეში, მე ორი დღე გავატარე პრობლემის გამოსწორებაზე, როდესაც ვცადე PD0 და PD1 გამოვიყენო და აღმოვაჩინე, რომ ისინი ყოველთვის მაღალი იყო. * მხრები აიჩეჩა* ალბათ კარგი იქნება რაიმე სახის გარე შეყვანა, მაგალითად, კლავიატურა, წამყვანი ან ცერა თითი, ან შესაძლოა ტერმინალიდან შეყვანა (ჩემი ArduinoTerm ჯერ არ არის მზად პრაიმტაიმისთვის ჯერ კიდევ …). Არჩევანი შენზეა. ჯერჯერობით, მე უბრალოდ ვაპირებ იმის ილუსტრირებას, თუ როგორ მივიღოთ კოდი, რომ მივიღოთ სასურველი ხასიათი LED- ზე. გადმოსატვირთად არის zipfile, მათ შორის წყაროს კოდი და Makefile, ასევე არის მოკლე ფილმი, რომელიც აჩვენებს LED ბეჭდვას მისი პერსონაჟების ნაკრებში. უკაცრავად ვიდეოს საშინელი ხარისხისთვის. ქვემოთ მოყვანილი კოდი ბეჭდავს სტრიქონს "Welcome to my Instructable!" შემდეგ ციკლდება მთელი პერსონაჟის ნაკრებში, რომელსაც LED მხარს უჭერს.

DDRD = 0xFF; // გამომავალი DDRB = (1 << DDB0); char msg = "მოგესალმებით ჩემს ინსტრუქტორში!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _ დაგვიანებით_ms (150); } for (i = 0x20; i <0x80; i ++) {Print2LED (i); _ დაგვიანებით_ms (150); } Print2LED (& apos*& apos);}პორტის გამომუშავებაზე ზრუნავს Print2Led () ფუნქცია

voidPrint2LED (uint8_t i) {PORTD = (i << 2); თუ (i & 0b01000000) PORTB = (1 <

კოდი და Makefile შედის zip ფაილში ქვემოთ.

ნაბიჯი 4: შეინახეთ I/O პორტები Shift რეგისტრით

შეინახეთ I/O პორტები Shift რეგისტრით
შეინახეთ I/O პორტები Shift რეგისტრით
შეინახეთ I/O პორტები Shift რეგისტრით
შეინახეთ I/O პორტები Shift რეგისტრით
შეინახეთ I/O პორტები Shift რეგისტრით
შეინახეთ I/O პორტები Shift რეგისტრით

ახლა ჩვენს მიკროკონტროლერს შეუძლია მონაცემების გაგზავნა წერტილოვანი მატრიცის LED- ზე, მაგრამ ის იყენებს რვა I/O პორტს. ეს გამორიცხავს ATtiny– ს გამოყენებას 8 პინიან DIP პაკეტში და თუნდაც უფრო ახალ Arduino– სთან ერთად, რომელსაც აქვს ATmega328p, ეს არის ბევრი I/O პორტი ერთი LED- ისთვის. ჩვენ შეგვიძლია ამის თავიდან აცილება, IC– ის გამოყენებით, რომელსაც ცვლის რეგისტრი ეწოდება. მომენტის გადაადგილების მომენტი … ცვლადი რეგისტრი საუკეთესოდ გვესმის, თუ ვიფიქრებთ მის სახელზე შემავალ ორ სიტყვაზე: „ცვლა“და „რეგისტრაცია“. სიტყვა ცვლა ეხება იმას, თუ როგორ მოძრაობს მონაცემები რეესტრში. აქ (როგორც ჩვენს არდუინოსა და მიკროკონტროლერებში, ზოგადად) რეგისტრი არის ადგილი, რომელიც ინახავს მონაცემებს. ამას ახორციელებს ციფრული ლოგიკური წრეების წრფივი ჯაჭვი, სახელწოდებით "ფლიპ ფლოპსი", რომელსაც აქვს ორი სტაბილური მდგომარეობა, რომელიც შეიძლება წარმოდგენილი იყოს როგორც 1 -ით, ისე 0. ასე რომ, რვა ფლიპ ფლოპს ერთმანეთთან ერთად თქვენ გაქვთ მოწყობილობა, რომელსაც შეუძლია დაიჭიროს და წარმოადგენს 8 ბიტიან ბაიტს. როგორც არსებობს რამოდენიმე სახის ფლიპ ფლოპები და რამდენიმე ცვალებადობა ცვლის რეგისტრატორების თემაზე (იფიქრეთ ზემოთ/ქვემოთ მრიცხველები და ჯონსონის მრიცხველები), ასევე არსებობს რამოდენიმე სახის ცვლის რეგისტრატორი მონაცემების მიხედვით ჩაწერილია რეესტრში და როგორ ხდება ამ მონაცემების გამოტანა. ამის საფუძველზე, განიხილეთ შემდეგი სახის ცვლის რეგისტრები:

  • სერიული შეყვანა / პარალელური გასვლა (SIPO)
  • სერიული შემოსვლა / სერიული გამოსვლა (SISO)
  • პარალელური/ სერიული გასვლა (PISO)
  • პარალელური შეყვანა / პარალელური გასვლა (PIPO)

ორი მათგანია SIPO და PISO. SIPO რეგისტრები იღებენ მონაცემებს სერიულად, ანუ ერთმანეთის მიყოლებით, წინა შეყვანის ბიტის გადატანა მომდევნო ფლიპ ფლოპზე და მონაცემების გაგზავნა ერთდროულად ყველა შეყვანისას. ეს ქმნის ლამაზ სერიალს პარალელურ გადამყვანად. PISO ცვლის რეგისტრებს, პირიქით, აქვთ პარალელური შეყვანა, ამიტომ ყველა ბიტი ერთდროულად არის შეყვანილი, მაგრამ გამოდის ერთდროულად. თქვენ მიხვდით, რომ ეს ქმნის მშვენიერ პარალელს სერიული გადამყვანისთვის. ცვლის რეგისტრი, რომლის გამოყენებაც ჩვენ გვინდა, რათა შევამციროთ I/O ქინძისთავები, მოგვცემს საშუალებას ავიღოთ ის 8 IO ქინძისთავი, რომლებიც ადრე გამოვიყენეთ და შევამციროთ ერთზე, ან შესაძლოა მხოლოდ რამოდენიმეზე, იმის გათვალისწინებით, რომ შეიძლება დაგვჭირდეს კონტროლის შეყვანის მეთოდი ბიტი ამიტომ, ცვლის რეგისტრი, რომელსაც ჩვენ გამოვიყენებთ, არის სერიული შემოსვლა / პარალელური გასვლა. შეაერთეთ ცვლადი რეგისტრი LED- სა და Arduino– ს შორის ცვლის რეგისტრატორის გამოყენება ადვილია. უმძიმესი ნაწილი არის მონაცემთა გამომავალი ქინძისთავების ვიზუალიზაცია და როგორ დასრულდება ორობითი ციფრები IC- ში და როგორ გამოჩნდება საბოლოოდ LED- ზე. ერთი წუთი დაუთმეთ ამის დაგეგმვას. 1. მიამაგრეთ 5V პინ 14 -ზე (ზედა მარჯვნივ) და აიღეთ პინ 7 (ქვედა მარცხნივ) ქვემოთ მიწაზე.2. ცვლის რეგისტრს აქვს ორი სერიული შეყვანა, მაგრამ ჩვენ მხოლოდ ერთს ვიყენებთ, ამიტომ დააკავშირეთ პინი ორი 5V3- თან. ჩვენ არ ვიყენებთ გამჭვირვალე პინს (გამოიყენება ყველა ამონაგების ნულოვანი გამოსატოვებლად), ასე რომ დატოვეთ ის მცურავი ან შეტევა 5V4- ზე. შეაერთეთ ერთი ციფრული IO პორტი ერთი ცვლის რეგისტრის დასაფიქსირებლად. ეს არის სერიული შეყვანის pin.5. შეაერთეთ ერთი ციფრული IO პორტი პინ 8 -თან (ქვედა მარჯვნივ). ეს არის საათის პინი.6. შეაერთეთ თქვენი მონაცემთა ხაზები Q0– დან Q6– მდე. ჩვენ ვიყენებთ მხოლოდ 7 ბიტს, რადგან ASCII სიმბოლოების ნაკრები იყენებს მხოლოდ შვიდ ბიტს. მე გამოვიყენე PD2 ჩემი სერიული მონაცემების გამოსაყვანად და PD3 საათის სიგნალისთვის. მონაცემთა ქინძისთავებისთვის, მე Q0- ს D6- ს ვუკავშირებდი LED- ს და ვაგრძელებდი ასე (Q1- დან D5- მდე, Q2- დან D4- მდე და ა.შ.). ვინაიდან ჩვენ ვგზავნით მონაცემებს სერიულად, ჩვენ უნდა გამოვიკვლიოთ თითოეული პერსონაჟის ორობითი წარმოდგენა, რომლის გაგზავნაც გვინდა, შევხედოთ 1 -სა და 0 -ს და თითოეული ბიტი გამოვყოთ სერიულ ხაზზე. მე ჩავრთე dotmatrixled.c წყაროს მეორე ვერსია, ასევე Makefile ქვემოთ. ის ციკლდება პერსონაჟების ნაკრებში და აჩვენებს ყველა ლუწი სიმბოლოს (თუ უცნაურია ვიფიქროთ, რომ ასო შეიძლება იყოს კენტი ან ლუწი, ერთი წუთით იფიქრეთ ორობითი წარმოდგენის შესახებ). შეეცადეთ გაერკვნენ, თუ როგორ უნდა მოხდეს მისი ციკლი ყველა უცნაური სიმბოლოების ჩვენების გზით. თქვენ შეგიძლიათ გააგრძელოთ ექსპერიმენტი ცვლათა რეგისტრატორთან, წერტილოვანი მატრიცის LED- სა და თქვენს არდუინოს შორის. LED- სა და რეგისტრს შორის არის რამოდენიმე საკონტროლო ფუნქცია, რომელიც საშუალებას მოგცემთ დაარეგულიროთ თქვენი კონტროლი მონაცემების ჩვენების დროს. ასე რომ …. ჩვენ რვა I/O პორტის გამოყენების აუცილებლობიდან მხოლოდ ორზე გადავედით!

ნაბიჯი 5: შეჯამება

Შემაჯამებელი
Შემაჯამებელი
Შემაჯამებელი
Შემაჯამებელი

ამ ინსტრუქციურად, მე წარმოვადგინე DLO7135 წერტილოვანი მატრიცის LED და როგორ გავააქტიურო ის. მე შემდგომ განვიხილე, თუ როგორ უნდა შემცირდეს საჭირო I/O პორტების რაოდენობა რვიდან მხოლოდ ორამდე ცვლის რეგისტრაციის გამოყენებით. DLO7135 წერტილოვანი მატრიცის LED შეიძლება ერთმანეთთან იყოს დაკავშირებული, რათა გახადოს ძალიან თვალშისაცემი და საინტერესო მარკეტები. ვიმედოვნებ, რომ გაერთეთ ამ სასწავლო ინსტრუქციის კითხვაში! თუ რაიმე გაუმჯობესება გგონიათ, რისი გაკეთებაც შემეძლო ან წინადადებები, რომელთაც გსურთ რომ მიაწოდოთ ეს ან ჩემი რომელიმე ხილვა, მოხარული ვარ მათი მოსმენა! ბედნიერი AVR'ing!

გირჩევთ: