Სარჩევი:

64 Pixel RGB LED ეკრანი - სხვა Arduino კლონი: 12 ნაბიჯი (სურათებით)
64 Pixel RGB LED ეკრანი - სხვა Arduino კლონი: 12 ნაბიჯი (სურათებით)

ვიდეო: 64 Pixel RGB LED ეკრანი - სხვა Arduino კლონი: 12 ნაბიჯი (სურათებით)

ვიდეო: 64 Pixel RGB LED ეკრანი - სხვა Arduino კლონი: 12 ნაბიჯი (სურათებით)
ვიდეო: როგორ გამოვიყენოთ SSD1306 128x32 OLED ჩვენება I2C Arduino კოდით 2024, ნოემბერი
Anonim
64 Pixel RGB LED ეკრანი - კიდევ ერთი Arduino კლონი
64 Pixel RGB LED ეკრანი - კიდევ ერთი Arduino კლონი
64 Pixel RGB LED ეკრანი - კიდევ ერთი Arduino კლონი
64 Pixel RGB LED ეკრანი - კიდევ ერთი Arduino კლონი
64 Pixel RGB LED ეკრანი - კიდევ ერთი Arduino კლონი
64 Pixel RGB LED ეკრანი - კიდევ ერთი Arduino კლონი

ეს ჩვენება დაფუძნებულია 8x8 RGB LED მატრიცაზე. ტესტირების მიზნით იგი იყო დაკავშირებული Arduino დაფაზე (Diecimila) 4 ცვლის რეგისტრატორის გამოყენებით. მუშაობის დაწყებისთანავე, ის პერმატიზირებულია ქარხნულ PCB– ზე. ცვლის რეგისტრები 8 ბიტიანი სიგანისაა და ადვილად ერწყმის SPI პროტოკოლს. პულსის სიგანის მოდულაცია გამოიყენება ფერების შერევის მიზნით, უფრო მოგვიანებით. MCU– ს ოპერატიული მეხსიერების ნაწილი გამოიყენება როგორც ჩარჩო ბუფერი სურათის შესანახად. ვიდეო ოპერატიული მეხსიერება გაანალიზებულია შეფერხებული რუტინით ფონზე, ასე რომ მომხმარებელს შეუძლია გააკეთოს სხვა სასარგებლო საქმეები, როგორიცაა კომპიუტერთან საუბარი, ღილაკების წაკითხვა და პოტენომეტრი. დამატებითი ინფორმაცია "არდუინოს" შესახებ: www.arduino.cc

ნაბიჯი 1: პულსის სიგანის მოდულაცია ფერების შერევისთვის

პულსის სიგანის მოდულაცია ფერების შერევისთვის
პულსის სიგანის მოდულაცია ფერების შერევისთვის

პულსის სიგანის მოდული - რა? პულსის სიგანის მოდულაცია არსებითად ძალიან სწრაფად ჩართავს და გამორთავს ელექტრო მოწყობილობას. გამოსაყენებელი სიმძლავრე არის კვადრატული ტალღის ფუნქციის მათემატიკური საშუალო, რომელიც აღებულია ერთი პერიოდის ინტერვალში. რაც უფრო დიდხანს რჩება ფუნქცია ჩართულ მდგომარეობაში, მით მეტ ენერგიას მიიღებთ. PWM– ს აქვს იგივე გავლენა LED– ების სიკაშკაშეს, როგორც დენის შუქზე AC განათებებზე. ამოცანაა ინდივიდუალურად გააკონტროლოს 64 RGB LED (= 192 ერთი LED) სიკაშკაშე იაფად და მარტივად, ასე რომ თქვენ შეგიძლიათ მიიღოთ მთელი ფერების სპექტრი. სასურველია არ არსებობდეს მბჟუტავი ან სხვა შემაშფოთებელი ეფექტები. ადამიანის თვალის მიერ გამოვლენილი სიკაშკაშის არაწრფივი აღქმა აქ არ იქნება გათვალისწინებული (მაგ. განსხვავება 10% და 20% სიკაშკაშეს შორის "უფრო დიდია" ვიდრე 90% და 100%). სურათი (1) ასახავს მუშაობის პრინციპს PWM ალგორითმი. თქვით, რომ კოდს ენიჭება 7 მნიშვნელობა LED სიკაშკაშისათვის (0, 0). გარდა ამისა, მან იცის, რომ სიკაშკაშეში არის მაქსიმუმ N საფეხური. კოდი აწარმოებს N მარყუჟებს სიკაშკაშის ყველა შესაძლო დონისთვის და ყველა საჭირო მარყუჟისათვის, რათა მოემსახუროს თითოეულ LED- ს ყველა რიგში. იმ შემთხვევაში, თუ სიკაშკაშის მარყუჟის მარყუჟის მრიცხველი x 7 -ზე მცირეა, LED ჩართულია. თუ ის 7 -ზე მეტია, LED გამორთულია. ამის გაკეთება ძალიან სწრაფად ყველა LED- ისთვის, სიკაშკაშის დონისთვის და ძირითადი ფერისთვის (RGB), თითოეული LED შეიძლება ინდივიდუალურად მორგებული იყოს სასურველი ფერის საჩვენებლად. ოსცილოსკოპით გაზომვებმა აჩვენა, რომ ჩვენების განახლების კოდს დაახლოებით 50% სჭირდება პროცესორის დრო. დანარჩენი შეიძლება გამოყენებულ იქნას კომპიუტერთან სერიული კომუნიკაციისთვის, ღილაკების წასაკითხად, RFID მკითხველთან სასაუბროდ, I- ის გასაგზავნად2C მონაცემები სხვა მოდულებზე…

ნაბიჯი 2: საუბარი Shift რეგისტრებთან და LED- ებთან

საუბარი Shift რეგისტრებთან და LED- ებთან
საუბარი Shift რეგისტრებთან და LED- ებთან
საუბარი Shift რეგისტრებთან და LED- ებთან
საუბარი Shift რეგისტრებთან და LED- ებთან

ცვლის რეგისტრი არის მოწყობილობა, რომელიც საშუალებას იძლევა მონაცემების სერიული და პარალელური გამომავალი ჩატვირთვა. საპირისპირო ოპერაცია ასევე შესაძლებელია შესაბამისი ჩიპით. არდუინოს ვებსაიტზე არის კარგი სამეურვეო ცვლა რეგისტრატორებზე. LED- ები ამოძრავებს 74HC595 ტიპის 8 ბიტიანი ცვლის რეგისტრებს. თითოეულ პორტს შეუძლია მიიღოს ან ჩაძიროს დენის დაახლოებით 25mA. ჩაძირულ ან წყაროს ჩიპზე მთლიანი დენი არ უნდა აღემატებოდეს 70mA. ეს ჩიპები ძალიან იაფია, ასე რომ ნუ გადაიხდით 40 ცენტზე მეტს ერთ ცალი. ვინაიდან LED- ებს აქვთ ექსპონენციალური მიმდინარე / ძაბვის მახასიათებელი, უნდა არსებობდეს მიმდინარე შეზღუდვის რეზისტორები. Ohm- ის კანონის გამოყენება: R = (V - Vf) / IR = შემზღუდველი რეზისტორი, V = 5V, Vf = LED- ის წინამორბედი ძაბვა, I = სასურველი მიმდინარე წითელი LED- ები აქვს ძაბვა დაახლოებით 1.8V, ლურჯი და მწვანე დიაპაზონი 2.5V– დან 3.5V– მდე. გამოიყენეთ მარტივი მულტიმეტრი ამის დასადგენად. სწორი ფერის რეპროდუქციისთვის უნდა გაითვალისწინოთ რამდენიმე რამ: ადამიანის თვალის სპექტრალური მგრძნობელობა (წითელი/ლურჯი: ცუდი, მწვანე: კარგი), LED- ის ეფექტურობა გარკვეულ ტალღის სიგრძეზე და დენზე. პრაქტიკაში უბრალოდ იღებთ 3 პოტენომეტრს და არეგულირებთ მათ სანამ LED არ აჩვენებს სათანადო თეთრ შუქს. რა თქმა უნდა, მაქსიმალური LED დენი არ უნდა აღემატებოდეს. რაც ასევე მნიშვნელოვანია აქ არის ის, რომ რიგების მამოძრავებელი ცვლის რეგისტრი უნდა უზრუნველყოფდეს დენს 3x8 LED- ებზე, ასე რომ უკეთესია, რომ დენი არ აიწიოს ძალიან მაღლა. მე წარმატებული ვიყავი ყველა LED- ისთვის 270Ohm რეზისტორების შეზღუდვით, მაგრამ ეს, რა თქმა უნდა, დამოკიდებულია LED მატრიცის დამზადებაზე. ცვლის რეგისტრები დაკავშირებულია SPI სერიასთან. SPI = სერიული პერიფერიული ინტერფეისი (სურათი (1)). კომპიუტერების სერიული პორტების საპირისპიროდ (ასინქრონული, საათის სიგნალის გარეშე), SPI- ს სჭირდება საათის ხაზი (SRCLK). შემდეგ არის სიგნალის ხაზი, რომელიც ეუბნება მოწყობილობას, როდესაც მონაცემები მოქმედებს (ჩიპის არჩევა / ჩამკეტი / RCLK). დაბოლოს, არსებობს ორი მონაცემთა ხაზი, ერთს ეწოდება MOSI (master out slave in), მეორეს MISO (master in slave out). SPI გამოიყენება ინტეგრირებული სქემების დასაკავშირებლად, ისევე როგორც მე2C. ამ პროექტს სჭირდება MOSI, SRCLK და RCLK. გარდა ამისა, ჩართვის ხაზი (G) ასევე გამოიყენება. SPI ციკლი იწყება RCLK ხაზის LOW– ზე დაწევით (სურათი (2)). MCU აგზავნის თავის მონაცემებს MOSI ხაზზე. მისი ლოგიკური მდგომარეობა შერჩეულია ცვლის რეგისტრით SRCLK ხაზის მზარდ ზღვარზე. ციკლი წყდება RCLK ხაზის HIGH- ზე დაბრუნებით. ახლა მონაცემები ხელმისაწვდომია ამონაწერებზე.

ნაბიჯი 3: სქემატური

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

სურათი (1) გვიჩვენებს, თუ როგორ არის გადართული რეგისტრები სადენიანი. ისინი მიჯაჭვულია ჯაჭვით, ასე რომ მონაცემები შეიძლება გადაიტანოს ამ ჯაჭვში და ასევე მისი მეშვეობით. ამიტომ ადვილია მეტი ცვლის რეგისტრის დამატება.

სურათი (2) გვიჩვენებს დანარჩენ სქემას MCU– სთან, კონექტორებთან, კვარცთან ერთად … თანდართული PDF ფაილი შეიცავს მთელ ნამუშევრებს, საუკეთესოა დასაბეჭდად.

ნაბიჯი 4: C ++ წყაროს კოდი

C ++ წყაროს კოდი
C ++ წყაროს კოდი
C ++ წყაროს კოდი
C ++ წყაროს კოდი
C ++ წყაროს კოდი
C ++ წყაროს კოდი

C/C ++ - ში, როგორც წესი, საჭიროა მათი პროტოტიპირება კოდირების დაწყებამდე. } Arduino IDE არ საჭიროებს ამ ნაბიჯს, რადგან ფუნქციების პროტოტიპები წარმოიქმნება ავტომატურად. ამრიგად, ფუნქციის პროტოტიპები არ გამოჩნდება აქ ნაჩვენები კოდში. სურათი (1): setup () ფუნქცია სურათი (2): spi_transfer () ფუნქცია ATmega168 ჩიპის აპარატურის SPI გამოყენებით (მუშაობს უფრო სწრაფად) სურათი (3): framebuffer კოდი გამოყენებით ტაიმერი 1 გადავსების შეწყვეტა. კოდის ნაწილები, რომლებსაც დამწყებთათვის ოდნავ გასაიდუმლოებული სახე აქვთ, მაგ ხოლო (! (SPSR & (1 << SPIF))) {} გამოიყენეთ MCU– ს რეგისტრები პირდაპირ. ეს მაგალითია სიტყვებით: "სანამ SPPS ბიტი რეგისტრირებული SPSR არ არის დაყენებული არაფერს აკეთებს". მე უბრალოდ მინდა ხაზი გავუსვა, რომ სტანდარტული პროექტებისთვის ნამდვილად არ არის აუცილებელი ამ საკითხებთან გამკლავება ტექნიკასთან ასე მჭიდროდ დაკავშირებული. დამწყებთათვის ეს არ უნდა შეშინდეს.

ნაბიჯი 5: დასრულებული გაჯეტი

დასრულებული გაჯეტი
დასრულებული გაჯეტი
დასრულებული გაჯეტი
დასრულებული გაჯეტი
დასრულებული გაჯეტი
დასრულებული გაჯეტი

ყველა პრობლემის გადაჭრის და კოდის გაშვების შემდეგ, მე უბრალოდ უნდა შევქმნა PCB განლაგება და გავაგზავნო ის მშვენიერ სახლში. ძალიან სუფთა ჩანს:-) სურათი (1): სრულად დასახლებული კონტროლერის დაფა სურათი (2): შიშველი PCBI– ს წინა მხარე სურათი (2): უკანა მხარე არის კონექტორები, რომლებიც არღვევს ATmega168/328 ჩიპის PORTC და PORTD და 5V/GND რა ეს პორტები შეიცავს სერიულ RX, TX ხაზებს, I2C ხაზები, ციფრული I/O ხაზები და 7 ADC ხაზი. ეს გამიზნულია დაფის დასალევად დაფის უკანა მხარეს. ინტერვალი შესაფერისია პერფორდის (0.1 ინ) გამოყენებისათვის. ჩატვირთვის ჩამტვირთავი შეიძლება ICSP სათაურის გამოყენებით (მუშაობს adafruit's USBtinyISP). ამის გაკეთებისთანავე გამოიყენეთ სტანდარტული FTDI USB/TTL სერიული ადაპტერი ან მსგავსი. მე ასევე დავამატე ავტომატური გადატვირთვის გამორთვა jumper. მე ასევე მოვამზადე პატარა Perl სკრიპტი (იხილეთ ჩემი ბლოგი), რომელიც საშუალებას იძლევა ავტომატური გადატვირთვა FTDI კაბელებით, რომელიც ჩვეულებრივ არ მუშაობს ყუთში (RTS vs. DTR ხაზი). ეს მუშაობს Linux– ზე, შესაძლოა MAC– ზე. დაბეჭდილი მიკროსქემის დაფები და რამდენიმე წვრილმანი ნაკრები ხელმისაწვდომია ჩემს ბლოგში. საჭიროა SMD- ის შედუღება! იხილეთ PDF ფაილები მშენებლობის ინსტრუქციებისა და წყაროებისათვის LED მატრიცებისთვის.

ნაბიჯი 6: პროგრამა: CPU Load Monitor for Linux Perl

ეს არის ძალიან ძირითადი დატვირთვის მონიტორი ისტორიის შეთქმულებით. ის დაფუძნებულია Perl სკრიპტზე, რომელიც აგროვებს სისტემის "საშუალო დატვირთვას" ყოველ 1 წამში iostat- ის გამოყენებით. მონაცემები ინახება მასივში, რომელიც გადადის ყოველ განახლებაზე. ახალი მონაცემები ემატება სიის სათავეში, უძველესი ჩანაწერი ამოღებულია. უფრო დეტალური ინფორმაცია და გადმოწერა (კოდი…) ხელმისაწვდომია ჩემს ბლოგში.

ნაბიჯი 7: პროგრამა: საუბარი სხვა მოდულებთან I²C გამოყენებით

განაცხადი: საუბარი სხვა მოდულებთან I²C გამოყენებით
განაცხადი: საუბარი სხვა მოდულებთან I²C გამოყენებით

ეს არის მხოლოდ პრინციპის მტკიცებულება და არა უმარტივესი გადაწყვეტა ამ სამუშაოსთვის. I- ის გამოყენებით2C საშუალებას გაძლევთ პირდაპირ მიმართოთ 127 -მდე "მონა" დაფას. ვიდეოში მარჯვენა მხარეს არის დაფა "ოსტატი" (რომელიც იწყებს ყველა გადაცემას), მარცხენა დაფა არის მონა (ელოდება მონაცემებს). მე2C– ს სჭირდება 2 სიგნალის ხაზი და ჩვეულებრივი ელექტროგადამცემი ხაზი (+, -, SDA, SCL). ვინაიდან ეს არის ავტობუსი, ყველა მოწყობილობა მას პარალელურად უკავშირდება.

ნაბიჯი 8: პროგრამა: "თამაშის კუბი":-)

განაცხადი
განაცხადი

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

ნაბიჯი 9: სურათების / ანიმაციების ჩვენება მატრიცაზე - Quick Hack

სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი
სურათების / ანიმაციების ჩვენება მატრიცაზე - სწრაფი ჰაკი

ამრიგად, მას აქვს მხოლოდ 8x8 პიქსელი და რამდენიმე ფერი. ჯერ გამოიყენეთ Gimp- ის მსგავსი რამ, რომ შეამციროთ თქვენი საყვარელი სურათი ზუსტად 8x8 პიქსელზე და შეინახოთ იგი ".ppm" ნედლეულის ფორმატში (არა ASCII). PPM ადვილად იკითხება და დამუშავებულია Perl სკრიპტში. ImageMagick- ისა და ბრძანების ხაზის "კონვერტაციის" გამოყენება არ იმუშავებს სწორად. ატვირთეთ ახალი arduino კოდი, შემდეგ გამოიყენეთ Perl სკრიპტი კონტროლერში ასატვირთად. ციმციმა მხოლოდ LED განახლების და ჩემი კამერის კადრების სიხშირის შეუსაბამობაა. მას შემდეგ, რაც კოდი ოდნავ განახლდება, ის მუშაობს საკმაოდ სწრაფად. ყველა სურათი გადაეცემა პირდაპირ სერიალს, როგორც ხედავთ. უფრო გრძელი ანიმაციები შეიძლება ინახებოდეს გარე EEPROM– ში, როგორც ეს კეთდება სხვადასხვა სპიკ-დაფაზე.

ნაბიჯი 10: შენახული ანიმაციების ინტერაქტიული კონტროლი

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

ნაბიჯი 11: ცოცხალი ვიდეოს ჩვენება

Perl სკრიპტისა და რამდენიმე მოდულის გამოყენებით საკმაოდ ადვილია კვაზი ცოცხალი ვიდეოს ჩვენება X11 სისტემებზე. ის დაშიფრულია Linux– ზე და შეიძლება მუშაობდეს MAC– ზეც. ის ასე მუშაობს:- მიიღეთ მაუსის კურსორის პოზიცია- დაიჭირეთ კურსორის ცენტრში NxN პიქსელის ყუთი- გამოსახულების მასშტაბი 8x8 პიქსელზე- გააგზავნეთ LED დაფაზე- გაიმეორეთ

ნაბიჯი 12: მეტი შუქი თითქმის უფასოდ

მეტი შუქი თითქმის უფასოდ
მეტი შუქი თითქმის უფასოდ

მხოლოდ ორი საფეხურით სიკაშკაშე შეიძლება საკმაოდ გაიზარდოს. შეცვალეთ 270Ω რეზისტორები 169Ω -ით და ჩაყარეთ კიდევ 74HC595 ცვლის რეგისტრი IC5– ზე.

გირჩევთ: