Სარჩევი:

5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და ჩარლიპლექსი: 7 ნაბიჯი
5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და ჩარლიპლექსი: 7 ნაბიჯი

ვიდეო: 5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და ჩარლიპლექსი: 7 ნაბიჯი

ვიდეო: 5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და ჩარლიპლექსი: 7 ნაბიჯი
ვიდეო: 5x4 Charlieplexed LED grid, powered by ATTiny85 2024, ივლისი
Anonim
5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და Charlieplexing
5x4 LED ჩვენების მატრიცა ძირითადი ბეჭდის გამოყენებით 2 (bs2) და Charlieplexing

გაქვთ ძირითადი შტამპი 2 და რამდენიმე დამატებითი LED ნათურა? რატომ არ ვითამაშოთ charlieplexing– ის კონცეფციით და არ შევქმნათ გამომავალი მხოლოდ 5 ქინძისთავის გამოყენებით.

ამ ინსტრუქციისთვის მე ვიყენებ BS2e– ს, მაგრამ BS2 ოჯახის ნებისმიერი წევრი უნდა მუშაობდეს.

ნაბიჯი 1: შარლიპლექსი: რა, რატომ და როგორ

მოდით გავიგოთ რატომ გზიდან პირველი. რატომ გამოიყენოთ charlieplexing ძირითადი ბეჭდით 2? --- კონცეფციის მტკიცებულება: ისწავლეთ როგორ მუშაობს შარლიპლექსი და ისწავლეთ რამე BS2– ის შესახებ. ეს შეიძლება სასარგებლო იყოს ჩემთვის უფრო სწრაფი 8 პინიანი ჩიპების გამოყენებით (მათგან მხოლოდ 5 იქნება i/o).--- სასარგებლო მიზეზი: ძირითადად არ არსებობს. BS2 ძალიან ნელა აჩვენებს შესამჩნევი ციმციმის გარეშე. რა არის ჩარლიპლექსი? --- ჩარლიპლექსი არის მეთოდი, რომელიც მართავს დიდი რაოდენობით LED- ებს მცირე რაოდენობის მიკროპროცესორული i/o ქინძისთავებით. მე გავიგე ჩარლიპლექსინგის შესახებ www.instructables.com– დან და თქვენც შეგიძლიათ: Charlieplexing LED- ები- თეორია როგორ მართოთ ბევრი ები რამდენიმე მიკროკონტროლის ქინძისთავებიდან. ასევე ვიკიპედიაში: Charlieplexing როგორ შემიძლია ვისრიალოთ 20 led 5 i/o ქინძისთავებით? --- გთხოვთ წაიკითხოთ სამი ბმული "რა არის ჩარლიპლექსი?". ეს იმაზე უკეთ ხსნის ვიდრე ოდესმე შემეძლო. Charlieplexing განსხვავდება ტრადიციული მულტიპლექსისაგან, რომელსაც სჭირდება ერთი i/o pin თითოეული სტრიქონისთვის და თითოეული სვეტისთვის (ეს იქნება სულ 9 i/o ქინძისთავები 5/4 ჩვენებისთვის).

ნაბიჯი 2: აპარატურა და სქემატური

აპარატურა და სქემატური
აპარატურა და სქემატური

მასალების ჩამონათვალი: 1x - ძირითადი მარკა 220x - ერთი და იგივე ტიპის სინათლის დიოდები (ები) (ფერი და ძაბვის ვარდნა) 5x - რეზისტორები (იხილეთ ქვემოთ რეზისტორის მნიშვნელობასთან დაკავშირებით) დამხმარე/არასავალდებულო: თქვენი BS2 პროგრამირების მეთოდი გადატვირთვის გადართვის ფუნქცია 6v -9v ენერგიის წყარო დამოკიდებულია BS2– ის თქვენს ვერსიაზე (წაიკითხეთ თქვენი სახელმძღვანელო) სქემატური სქემა: ეს სქემა შედგენილია მექანიკური განლაგების გათვალისწინებით. თქვენ დაინახავთ LED- ების ბადეს მარცხნივ დაყენებული, ეს არის ორიენტაცია, რომელზედაც დაწერილია BS2 კოდი. გაითვალისწინეთ, რომ LED- ების თითოეულ წყვილს აქვს ანოდი, რომელიც დაკავშირებულია მეორის კათოდთან. შემდეგ ისინი დაკავშირებულია ხუთ ი/ო ქინძისთავთან. Resistor Values: თქვენ უნდა გამოთვალოთ თქვენი საკუთარი რეზისტორის მნიშვნელობები. შეამოწმეთ თქვენი LED- ების მონაცემთა ფურცელი ან გამოიყენეთ LED პარამეტრი თქვენს ციფრულ მულტიმეტრზე, რომ იპოვოთ თქვენი LED- ების ძაბვის ვარდნა. მოდი გავაკეთოთ რამდენიმე გათვლა: მომარაგების ძაბვა - ძაბვის ვარდნა / სასურველი მიმდინარე = რეზისტენტული მნიშვნელობა მიმდინარე. ჩემს LED- ებს აქვთ 1.6v ვარდნა და მოქმედებენ 20ma.5v - 1.6v /.02amps = 155ohms თქვენი BS2 დასაცავად თქვენ უნდა გამოიყენოთ მომდევნო უფრო მაღალი რეზისტორის მნიშვნელობა, რასაც მიიღებთ გაანგარიშებით, ამ შემთხვევაში მე მჯერა, რომ ეს იქნება 180ohms. მე გამოვიყენე 220 Ohms, რადგან ჩემს განვითარების დაფას აქვს რეზისტორის მნიშვნელობა ჩამონტაჟებული თითოეული i/o pin- ისთვის. შენიშვნა: მე მჯერა, რომ რადგან თითოეულ პინზე არის რეზისტორი, ეს ეფექტურად აორმაგებს წინააღმდეგობას თითოეულ led– ზე, ვინაიდან ერთი პინი არის V+ და მეორე არის Gnd. თუ ეს ასეა, თქვენ უნდა შეამციროთ რეზისტორის მნიშვნელობები ნახევარით. ძალიან მაღალი რეზისტორული მნიშვნელობის უარყოფითი ეფექტი არის დაბნელებული LED. შეუძლია ვინმეს გადაამოწმოს ეს და დამიტოვოს PM ან კომენტარი, ასე რომ მე შემიძლია ამ ინფორმაციის განახლება? პროგრამირება: მე ვიყენებ დეველოპერის დაფას, რომელსაც აქვს DB9 კონექტორი ჩიპის დასაპროგრამებლად პირდაპირ დაფაზე. მე ასევე ვიყენებ ამ ჩიპს ჩემს გამაცხელებელ პურის დაფაზე და შევიტანე In Circuit Serial Programming (ICSP) სათაური. სათაური არის 5 ქინძისთავით, ქინძისთავები 2-დან 5-მდე უკავშირდება ქინძისთავებს 2-5 DB9 სერიულ კაბელზე (პინი 1 გამოუყენებელია). გთხოვთ გაითვალისწინოთ, რომ ამ ICSP სათაურის გამოყენება DB9 კაბელზე 6 და 7 უნდა იყოს დაკავშირებული ერთმანეთთან. გადატვირთვა: მომენტალური გადატვირთვის ღილაკი არჩევითია. ეს უბრალოდ გაიყვანს პინ 22 -ს მიწაზე დაჭერისას.

ნაბიჯი 3: პურის დაფა

პურის დაფა
პურის დაფა
პურის დაფა
პურის დაფა

ახლა დროა ავაშენოთ მატრიცა პურის დაფაზე. მე გამოვიყენე ტერმინალის ზოლები, რომ ერთი ფეხი დავუკავშირო თითოეულ წამყვან წყვილს ერთმანეთთან და პატარა ჯამპერის მავთულს სხვა ფეხების დასაკავშირებლად. ეს დეტალურად არის აღწერილი დახურულ ფოტოში და სიღრმისეულად არის ახსნილი აქ: 1. ორიენტაცია გაუწიეთ პურის დაფას უფრო დიდ სურათს 2. განათავსეთ LED 1 ანოდთან (+) თქვენსკენ და კათოდის (-) თქვენგან მოშორებით.3. განათავსეთ LED 2 იგივე ორიენტაციით ანოდთან (+) LED 1 კათოდის დამაკავშირებელ ტერმინალურ ზოლში.4. გამოიყენეთ პატარა ჯუმბერის მავთული LED 1 -ის ანოდის დასაკავშირებლად LED 2.5 -ის კათოდთან. გაიმეორეთ სანამ LED– ის თითოეული წყვილი დაემატება დაფას. მე ვიყენებ ჩვეულებრივ პურის დაფის დენის ავტობუსებს, როგორც ავტობუსის ზოლებს BS2 I/O ქინძისთავებისთვის. რადგან არის მხოლოდ 4 ავტობუსის ზოლები, მე ვიყენებ ტერმინალურ ზოლს P4– სთვის (მეხუთე I/O კავშირი). ეს ჩანს ქვემოთ მოცემულ დიდ სურათზე.6. შეაერთეთ ტერმინალის ზოლი LED 1 კათოდისთვის P0 ავტობუსის ზოლთან. გაიმეორეთ თითოეული კენტი დანომრილი შუქდიოდურით, რომელიც ცვლის შესაბამის P* თითოეულ წყვილს (იხ. სქემატური).7. შეაერთეთ ტერმინალის ზოლი LED 2 კათოდისთვის P1 ავტობუსის ზოლთან. გაიმეორეთ თითოეული კენტი დანომრილი შუქდიოდურით, რომელიც ცვლის შესაბამის P* თითოეულ წყვილს (იხ. სქემატური სქემა).8. შეაერთეთ თითოეული ავტობუსის ზოლი შესაბამის I/O პინთან BS2 (P0-P4).9. შეამოწმეთ ყველა კავშირი, რათა დარწმუნდეთ, რომ ისინი ემთხვევა სქემატურს.10. იზეიმეთ. შენიშვნა: ახლოდან ნახავთ, რომ არ ჩანს, რომ მე მივყევი მე -7 ნაბიჯს, რადგან მეორე I/O პინთან კავშირი არის უცნაური დანომრილი LED- ების ანოდზე. გახსოვდეთ, რომ ლუწი დანომრილი LED- ების კათოდი დაკავშირებულია კენტი დანომრილი LED- ების ანოდთან, ასე რომ კავშირი ერთნაირია. თუ ეს შენიშვნა დაგაბნევთ, უბრალოდ იგნორირება გაუკეთეთ მას.

ნაბიჯი 4: პროგრამირების საფუძვლები

Charlieplexing მუშაობისთვის თქვენ ჩართავთ მხოლოდ ერთ led დროს. ჩვენს BS2– თან მუშაობისთვის ჩვენ გვჭირდება ორი ძირითადი ნაბიჯი: 1. დააყენეთ გამომავალი რეჟიმები ქინძისთავებისთვის OUTS ბრძანების გამოყენებით. უთხარით BS2- ს, რომელი ქინძისთავები გამოიყენოს გამოსავლად DIRS ბრძანების გამოყენებით ეს მუშაობს იმიტომ, რომ BS2- ს შეუძლია გითხრათ რომელი ქინძისთავები უნდა მართოს მაღლა და დაბლა და დაელოდება ამას სანამ არ დააკონკრეტებთ რომელი ქინძისთავებია გამომავალი. ვნახოთ, ყველაფერი სწორად არის შეკრული უბრალოდ ცდილობს მოციმციმე LED 1. თუ გადახედავთ სქემატურს, თქვენ ხედავთ, რომ P0 მიმაგრებულია LED 1-ის კათოდზე (-) და P1 უკავშირდება იმავე LED- ის ანოდს. ეს იმას ნიშნავს, რომ ჩვენ გვინდა P0 დაბალი და P1 მაღალი სიარული. ეს შეიძლება გაკეთდეს ასე: "OUTS = % 11110", რომელიც მართავს P4-P1 მაღალს და P0 დაბალს.) BS2 ინახავს ამ ინფორმაციას, მაგრამ არ იმოქმედებს მასზე, სანამ არ გამოვაცხადებთ რომელი ქინძისთავები არის შედეგები. ეს ნაბიჯი მნიშვნელოვანია, რადგან მხოლოდ ორი ქინძისთავები უნდა იყოს ერთდროულად. დანარჩენი უნდა იყოს შესასვლელი, რაც აყენებს ამ ქინძისთავებს მაღალი წინაღობის რეჟიმში, რათა არ ჩაძირონ ნებისმიერი დენი. ჩვენ გვჭირდება P0 და P1 ავტომობილის მართვა, ასე რომ ჩვენ დავაყენებთ მათ გამომავალს და დანარჩენს შეყვანისას ასე: "DIRS = % 00011". (% მიუთითებს ორობითი რიცხვის შესასრულებლად. ყველაზე დაბალი ორობითი ციფრი ყოველთვის მარჯვნივ არის. 0 = INPUT, 1 = OUTPUT) მოდით ეს ერთად შევიტანოთ სასარგებლო კოდში: '{$ STAMP BS2e}' {$ PBASIC 2.5} DOUTS = %11110 'Drive P0 low and P1-P4 high DIRS = %00011' Set P0- P1 როგორც გამომავალი და P2-P4 როგორც შეყვანისთვის პაუზა 250 'პაუზა რომ LED დარჩეს DIRS = 0' დააყენეთ ყველა ქინძისთავები შეყვანისთვის. ეს გამორთავს LED პაუზას 250 'პაუზა, რომ LED დარჩეს გამორთული LOOP

ნაბიჯი 5: განვითარების ციკლი

ახლა, როდესაც ჩვენ ვნახეთ ერთი pin სამუშაო დრო, რათა დავრწმუნდეთ, რომ ყველა მუშაობს. 20led_Zig-Zag.bse ეს თანდართული კოდი უნდა ანათებდეს თითოეული 20 LEDS- დან ზიგზაგის ნიმუშს. თქვენ შეამჩნევთ, რომ ყოველი ბინის განათების შემდეგ მე ვიყენებ "DIRS = 0" - ს, რათა ყველა ქინძისთავები შემობრუნდეს შესასვლელებად. თუ თქვენ შეცვლით OUTS გამომავალი ქინძისთავების გამორთვის გარეშე, შეიძლება მიიღოთ რაღაც "აჩრდილი", სადაც led, რომელიც არ უნდა იყოს განათებული, შეიძლება ციმციმდეს ციკლებს შორის. თუ თქვენ შეცვლით W1 ცვლადს ამ კოდის დასაწყისში "W1 = 1" იქ იქნება მხოლოდ 1 მილიწამიანი პაუზა თითოეულ LED მოციმციმეს შორის. ეს გამოიწვევს ხედვის (POV) ეფექტის მუდმივობას, რაც გამოიყურება, როგორც ყველა LED ნათურა. ამან შეიძლება გავლენა მოახდინოს LED- ების დაბნელებაზე, მაგრამ ეს არის არსი იმისა, თუ როგორ გამოვაჩინოთ პერსონაჟები ამ მატრიცაზე. LED- ები გამოსაყენებელ ნიმუშად. ეს ფაილი არის ჩემი პირველი მცდელობა. თქვენ ნახავთ, რომ ფაილის ბოლოში სიმბოლოები ინახება ოთხნიშნა 5 ციფრიანი ორობითი სახით. თითოეული სტრიქონი იკითხება, გაანალიზებულია და ქვეგანყოფილებას ეწოდება ყოველ ჯერზე, როდესაც led უნდა იყოს განათებული. ეს კოდი მუშაობს, ცვლის ციფრებს 1-0. თუ თქვენ ცდილობთ გაუშვათ, შეამჩნევთ, რომ მას აწუხებს განახლების ძალიან ნელი მაჩვენებელი, რის გამოც პერსონაჟები თითქმის ძალიან ნელა ციმციმებენ, რომ აღიარონ. ეს კოდი ცუდია მრავალი მიზეზის გამო. პირველ რიგში, ორობითი ხუთ ციფრს EEPROM- ში იმდენივე ადგილი უკავია, რამდენიც ორობითი 8 ციფრი, რადგან ყველა ინფორმაცია ინახება ოთხ ბიტიან ჯგუფებში. მეორეც, SELECT CASE გამოიყენება იმის გადასაწყვეტად, თუ რომელი პინი უნდა იყოს განათებული, მოითხოვს 20 შემთხვევას. BS2 შემოიფარგლება 16 შემთხვევით SELECT ოპერაციაზე. ეს ნიშნავს, რომ მე მომიწია ამ შეზღუდვის გარჩევა IF-THEN-ELSE განცხადებით. უკეთესი გზა უნდა არსებობდეს. რამოდენიმე საათის თავზე გახეხვის შემდეგ აღმოვაჩინე.

ნაბიჯი 6: უკეთესი თარჯიმანი

ჩვენი მატრიცის თითოეული მწკრივი შედგება 4 LED- ებისაგან, თითოეული შეიძლება იყოს ჩართული ან გამორთული. BS2 ინახავს ინფორმაციას თავის EEPROM– ში ოთხი ბიტის ჯგუფებში. ამ კორელაციამ უნდა გაგვიადვილოს ყველაფერი. ამ ფაქტის გარდა, ოთხი ბიტი შეესაბამება 0-15 ათობითი რიცხვებს ჯამში 16 შესაძლებლობისთვის. ეს ბევრად ამარტივებს ან ირჩევს საქმეს. აქ არის EEPROM- ში შენახული ციფრი 7: '7 %1111, %1001, %0010, %0100, %0100, თითოეულ სტრიქონს აქვს ათწილადის ტოლი 0-15, ასე რომ ჩვენ ვკითხულობთ ჩაწერეთ მეხსიერებიდან და მიაწოდეთ იგი პირდაპირ SELECT CASE ფუნქციას. ეს ნიშნავს, რომ ადამიანის მიერ წაკითხული ორობითი მატრიცა, რომელიც გამოიყენება თითოეული პერსონაჟის შესაქმნელად (1 = led on, 0 = led off) არის თარჯიმნის გასაღები. იმისათვის, რომ გამოვიყენო იგივე SELECT CASE თითოეული 5 სტრიქონისთვის, მე გამოვიყენე სხვა შერჩეული შემთხვევა ცვლადებად DIRS და OUTS დაყენება. მე პირველად წავიკითხე პერსონაჟის ხუთ ხაზში ცვლადი ROW1-ROW5. მთავარი პროგრამა შემდეგ მოუწოდებს ქვეპროგრამას პერსონაჟის გამოსახატავად. ეს ქვეპროგრამა იღებს პირველ რიგს და ანიჭებს ოთხ შესაძლო OUTS კომბინაციას ცვლადი outp1-outp4 და ორ შესაძლო DIRS კომბინაციას direc1 & direc2. LED- ები ანათებენ, რიგის მრიცხველი იზრდება და იგივე პროცესი ტარდება თითოეული დანარჩენი ოთხი რიგისთვის. ეს ბევრად უფრო სწრაფია, ვიდრე პირველი თარჯიმნის პროგრამა. როგორც ითქვა, ჯერ კიდევ შესამჩნევი ციმციმაა. გადახედეთ ვიდეოს, კამერა ციმციმს გაცილებით უარესს ხდის, მაგრამ თქვენ გექნებათ იდეა. ამ კონცეფციის გადატანა ბევრად უფრო სწრაფ ჩიპზე, მაგალითად picMicro ან AVR ჩიპზე, შესაძლებელი გახდება ამ სიმბოლოების ჩვენება შესამჩნევი ციმციმის გარეშე.

ნაბიჯი 7: სად წავიდეთ აქედან

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

სხვა შესაძლებლობები: 1. გადაიტანეთ ეს სხვა ჩიპზე. ეს მატრიცის დიზაინი შეიძლება გამოყენებულ იქნას ნებისმიერ ჩიპთან, რომელსაც აქვს 5 i/o ქინძისთავები, რომელთაც აქვთ სამი მდგომარეობა (ქინძისთავები, რომლებიც შეიძლება იყოს მაღალი, დაბალი ან შეყვანის (მაღალი წინაღობა)). 2. უფრო სწრაფი ჩიპის გამოყენებით (შესაძლოა AVR ან picMicro) შეგიძლიათ გაზარდოთ მასშტაბი. 20 პინიანი ჩიპით შეგიძლიათ გამოიყენოთ 14 ქინძისთავი 8x22 ეკრანის ჩარლიპლექსისთვის და დარჩენილი ქინძისთავები გამოიყენოთ სერიული ბრძანებების კომპიუტერიდან ან სხვა კონტროლერისგან. გამოიყენეთ კიდევ სამი 20 პინიანი ჩიპი და შეგიძლიათ გქონდეთ გადახვევის ჩვენება, რომელიც არის 8x88, სულ 11 სიმბოლოზე ერთდროულად (რა თქმა უნდა, თითოეული პერსონაჟის სიგანეზეა დამოკიდებული). Გისურვებთ წარმატებას გაერთეთ!

გირჩევთ: