Სარჩევი:

PixelWall: 7 ნაბიჯი (სურათებით)
PixelWall: 7 ნაბიჯი (სურათებით)

ვიდეო: PixelWall: 7 ნაბიჯი (სურათებით)

ვიდეო: PixelWall: 7 ნაბიჯი (სურათებით)
ვიდეო: AnyPixel.js - a web friendly way for anyone to make unusual displays 2024, სექტემბერი
Anonim
PixelWall
PixelWall

იცით თუ არა Pixel-Table პროექტი? მე მქონდა იდეა ასეთი პიქსელის რეალიზების მიზნით, მაგრამ არა როგორც მაგიდა, სამაგიეროდ კედელზე დაკიდება.

ასე რომ შემიძლია დივანზე წამოწოლილი და დასვენების დროს ვითამაშო.:)

განხორციელებული თამაშები არის:

  • ტეტრისი
  • ონლაინ თამაში Space Invaders
  • გველი
  • პიქსელის დახაზვა

დამატებითი ფუნქციებია:

  • მიმდინარე დროის ჩვენება
  • აჩვენეთ ფერადი ანიმაციები

PixelWall– ს აქვს ESP8266, ასე რომ მას შეუძლია დაუკავშირდეს ჩემს სახლს-WLAN. მაგრამ ასევე შესაძლებელია PixelWall- ის გამოყენება როგორც წვდომის წერტილი და უშუალოდ მასთან დაკავშირება.

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

გარდა ამისა, არის NES კონტროლერი, რაც აადვილებს თამაშების თამაშს.

Საჯარო წყარო

ყველა პროგრამული და მექანიკური ნახატი მე ჩავდე github– ზე: https://github.com/C3MA/PixelWallFeel თავისუფლად გამოიყენოთ იგი საკუთარი პროექტისათვის.

ნაბიჯი 1: დაიწყეთ ელექტრონიკით

დაწყებული ელექტრონიკით
დაწყებული ელექტრონიკით
დაწყებული ელექტრონიკით
დაწყებული ელექტრონიკით
დაწყებული ელექტრონიკით
დაწყებული ელექტრონიკით

სხვა პროექტიდან არის არსებული PCB WS2812 LED- ებით. PCB– ს აქვს 3 მწკრივი, თითოეული LED– ით 12 LED– ით.

მე გადავწყვიტე ამ PCB– ს გამოყენება 6 – ჯერ. მე ვიღებ 12x18 LED მატრიქსს.

პირველი ნაბიჯი იყო 216 LED- ის გამაგრება, დაახლოებით 100 კონდენსატორი და ESP8266.

ხელით შედუღებას დაახლოებით 10 საათი დასჭირდა.

პირველი სწრაფი გამოცდის შემდეგ გაირკვა: ყველაფერი მუშაობს.

ჩვენ შეგვიძლია გადავიდეთ მექანიკურ ნაწილზე.

ნაბიჯი 2: მექანიკის შექმნა

მექანიკოსის შექმნა
მექანიკოსის შექმნა
მექანიკოსის შექმნა
მექანიკოსის შექმნა
მექანიკოსის შექმნა
მექანიკოსის შექმნა
მექანიკოსის შექმნა
მექანიკოსის შექმნა

უპირველეს ყოვლისა, ჩვენ გვჭირდება გამყოფი თითოეული პიქსელისთვის. იდეა არის ჰორიზონტალური და ვერტიკალური ზოლის V- გაჭრის ერთად გაერთიანება.

თითოეული ზოლის სისქე 3 მმ და სიმაღლე 17 მმ. ისინი HDF ფირფიტიდან ამოჭრილია ლაზერული საჭრელით.

ლაზერმჭრელის ყველა ესკიზი შედგენილია FreeCad– ში (სახელად „ლეისტე“github პროექტის მექანიკურ საქაღალდეში)

ქსელი მოცემულია PCB– ის განლაგებით. მას აქვს 28 მმ სვეტის სიგანე და 31 მმ რიგის სიმაღლე.

შემდეგი კითხვაა: როგორ დავაფიქსიროთ ზოლები PCB- ზე? შეხება არ არის ისეთი კარგი იდეა, რადგან მისი დემონტაჟი უნდა იყოს შესაძლებელი, თუ რაიმე დეფექტია. ასე რომ, მე გადავწყვიტე მისი გაფუჭება. მაგრამ ხრახნი გაყოფს 3 მმ -იან თხელ ზოლს. ამიტომ 3D პრინტერით დავბეჭდე ჯიბე ჯგუფისათვის (ეს არის ნაწილი სახელწოდებით "Halter" github პროექტში). ეს საკმაოდ კარგად მუშაობდა მათ PCB– ზე დასაფიქსირებლად.

შემდეგი ნაბიჯი არის ჩარჩოს შექმნა. არის ონლაინ მაღაზიები, რომლებიც გვთავაზობენ ინდივიდუალური სურათების ჩარჩოების მოჭრას. ამიტომ შევუკვეთე ჩარჩო ზომა 343 მმ x 565 მმ.

ჩარჩო იღებს დამატებით ხვრელს ქვედა მხარეს დენის წყაროსთვის.

პლექსიგლასის წინა ფირფიტა მეც ონლაინ რეჟიმში შევუკვეთე. ეს არის WN770 ოპალი Milchglasoptik LD45% ზომა: 567x344x2 მმ

მას აქვს გამჭვირვალობა 45%.

ჩადეთ ყველა ნაწილი ჩარჩოში.

დასასრულს დაიხურება უკანა ზოლები, ისე რომ ყველაფერი დაფიქსირდეს და ვერ ამოვარდეს.

PixelWall– ის ფუნქციონირების ვარიანტის გარეშე WLAN კომუნიკაციის გარეშე, მე შევქმენი მართვადი პანელი, რომელიც შეიძლება სურვილისამებრ ჩასვათ ჩარჩოს მარჯვენა მხარეს (სახელწოდებით „Bedieneinheit“github პროექტში).

ნაბიჯი 3: პროგრამული უზრუნველყოფა - საფუძვლები

პროგრამული უზრუნველყოფა - საფუძვლები
პროგრამული უზრუნველყოფა - საფუძვლები

ერთ -ერთი გამოყენება არის თამაში PixelWall– ზე.

მაგრამ პიქსელის თამაშის წერას ყოველთვის დასჭირდება გამართული გარემოს გამოსაყენებლად სასარგებლო გარემო. მე არ ვიცი რაიმე გზა ESP8266 კონტროლერის გამართულად გამოსწორების მიზნით. ასე რომ, მე გადავწყვიტე ჩემი კომპიუტერის მთელი კოდის სიმულაცია. ESP კოდი დაწერილია Arduino C ++ - ში, ამიტომ მე გამოვიყენე Visual Studio C ++/CLI ენა კომპიუტერზე სიმულაციისთვის. არსებობს გარკვეული განსხვავებები სტანდარტულ C ++ და C ++/CLI ენებს შორის. მაგალითად C ++/CLI– ში თქვენ ვერ შექმნით სიმებიანი ტიპის ობიექტს, ნაგვის შეგროვების გამო დაუშვებელია ასეთი ობიექტის ობიექტის ან მითითების/მაჩვენებლის შექმნა. C ++/CLI– ში თქვენ უნდა გამოიყენოთ სახელურები: სიმებიანი^. მაგრამ ასეთი სახელურები არ არსებობს C ++ სტანდარტში. ასე რომ, მე უნდა ვიყო შემოქმედებითი, რომ ორივე სამყარო გავაერთიანო. მე ეს მოვაგვარე სიმულაციისთვის საკუთარი Arduino.h ფაილის შექმნით. ეს ფაილი უბრალოდ გადალახავს სიმულაციას ყველა სტრიქონზე განსაზღვრის გზით "#განსაზღვრეთ სიმებიანი სტრიქონი^". ეს არ არის ჩვეულებრივი გზა, მაგრამ მუშაობს:) მცირე ზომის შემდგენლის გარდა, ყველა ESP კოდი უფრო ხელმისაწვდომია, ვიდრე Visual Studio C ++/CLI.

LED მატრიცა

პირველი კლასი, რომელიც დავწერე არის LED-Matrix კლასი. ეს კლასი ახორციელებს WS2812 LED- ების კონტროლსა და რუქას.

ეს კლასი დაიწერა ორჯერ: ერთხელ ESP8266 კონტროლერისთვის (LEDMatrixArduino.cpp) და მეორე, რომელიც გააკონტროლებს ფორმებს ფორმის GUI სიმულაციაში (LEDMatrixGUI.cpp).

ეს კლასი გთავაზობთ ძირითად მეთოდებს ინდივიდუალური LED- ის დაყენებისა და გასუფთავებისათვის მისი სვეტით და მწკრივით.

დამატებით ის უზრუნველყოფს setBrightness ფუნქციას. ეს მნიშვნელობა ჩაითვლება, თუ LED დაყენდება. ასე რომ, ყველა LED მითითებული ბრძანება შეიძლება შესრულდეს სრული სიკაშკაშე. მაგალითად: თუ სიკაშკაშე დაყენებულია 50% -ზე და setLed () ფუნქცია ეწოდება RGBColor (255, 255, 255) ის დააყენებს LED 127, 127, 127.

LED პანელი

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

დამატებით პანელი იძლევა

printImage - ზოგიერთი ხატის დასაბეჭდად სმაილიკების ან WLAN სიმბოლო ბეჭდვის ციფრის დაბეჭდვა ერთ ციფრზე კონკრეტულ პოზიციაზე ბეჭდვის ფორმატირებული რიცხვი - რიცხვის დაბეჭდვა პრეფიქსებით

ნაბიჯი 4: პროგრამული უზრუნველყოფა - განაცხადის კონცეფცია

პროგრამული უზრუნველყოფა - განაცხადის კონცეფცია
პროგრამული უზრუნველყოფა - განაცხადის კონცეფცია

პიქსელის კედლის ზოგადი კონცეფციაა:

  • თითოეულ განაცხადს აქვს საკუთარი სახელი
  • განაცხადის დაწყება ხდება pixel– ის კედლის URL– ის გამოძახებით, პროგრამის სახელის ჩათვლით (მაგალითად: 192.168.4.1/tetris)
  • URL– ს ასევე შეიძლება ჰქონდეს GET პარამეტრები, რომლებიც გადაეგზავნება აპლიკაციას
  • თითოეულმა პროგრამამ უნდა უზრუნველყოს ვებ - გვერდი, რომელიც ნაჩვენებია ბრაუზერში.
  • ამ ვებსაიტს შეუძლია სურვილისამებრ გახსნას ვებსაიტის კავშირი აპლიკაციასთან სწრაფი ურთიერთობისთვის
  • პროგრამას შეუძლია გამოიყენოს ეს ქსელური კავშირი ვებ – გვერდის ფრონტონდთან დასაკავშირებლად.
  • ვებ ინტერფეისის გარდა, პროგრამა იღებს დამატებით ღილაკს მოვლენებს მართვის პანელიდან და NES კონტროლერისგან.

განაცხადის ინტერფეისი

PixelWall– ისთვის ახალი პროგრამების შემუშავების გასაადვილებლად, მე შევქმენი ინტერფეისი პროგრამებისთვის სახელწოდებით „IPixelApp.h“. ეს ინტერფეისი შეიცავს 8 განმარტებას:

  • ვირტუალური სიცარიელის დაწყება () = 0;
  • ვირტუალური სიცარიელის დასასრული () = 0;
  • ვირტუალური ბათილი მარყუჟი () = 0;
  • ვირტუალური სიცარიელე newWebsocketData (uint8_t * დატვირთვა, ზომა_ სიგრძე) = 0;
  • ვირტუალური WebsiteResponse_t getWebsiteResponse (სიმებიანი პარამეტრი) = 0;
  • ვირტუალური void buttonEvent () = 0;
  • ვირტუალური void timerTick () = 0;
  • ვირტუალური სიმებიანი getName () = 0;

დაწყება / დასრულება - ეს ფუნქცია ეწოდება იმ შემთხვევაში, თუ პროგრამა იწყება / მთავრდება, რადგან იწყება სხვა პროგრამა

მარყუჟი - ამ ფუნქციას ეწოდება ძირითადი პროგრამის ძირითადი მარყუჟი. ეს ზარი არარეგულარულია და შეწყვეტის გარეშეა.

newWebsocketData - ეს ფუნქცია ეწოდება, თუ ვებ frontend გაგზავნილი მონაცემები.

getWebsiteResponse - ეს გამოიყენება ძირითადი პროგრამის მიერ ვებ – გვერდის მისაღებად, რომელიც უნდა პასუხობდეს მოთხოვნას.

buttonEvent - ამას ჰქვია, თუ საკონტროლო პანელზე რაიმე ღილაკი იყო დაჭერილი ან გათავისუფლებული.

timerTick - ამ ფუნქციას ეწოდება თითოეული 10 ms, გამოწვეული ტაიმერის შეფერხებით. ის შეიძლება გამოყენებულ იქნას დროისათვის, მაგრამ არ უნდა შეიცავდეს რაიმე დროის ინტენსიურ ნივთებს, რადგან ეს არის შეწყვეტის კონტექსტი.

getName - ეს უნდა დააბრუნოს პროგრამის სახელი URL- ისთვის

ნაბიჯი 5: პროგრამული უზრუნველყოფა - პროგრამები

პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები
პროგრამული უზრუნველყოფა - პროგრამები

შემდეგი 7 პროგრამა ახორციელებს მიმდინარე ვერსიას:

ნაგულისხმევი აპლიკაცია

ეს არის სპეციალური პროგრამა, რომელიც აჩვენებს PixelWall– ის ამჟამინდელ WLAN მდგომარეობას. თუ კედელს შეეძლო ახლანდელ WLAN- თან დაკავშირება, ის აჩვენებს IP მისამართს, რომელიც მიიღო ქსელიდან.

თუ ეს შეუძლებელი იყო (არ აქვს ssid დაყენებული ან WLAN არ არის ან პაროლი არასწორია) ის გახსნის Accesspoint- ს. ამ შემთხვევაში შეგიძლიათ დაუკავშირდეთ PixelWall– ს ნაგულისხმევი Accesspoint IP– ით ESP8266– დან: 192.168.4.1

Webinterface– ზე ეს აპლიკაცია წარმოგიდგენთ 6 ღილაკს. ღილაკის დაჭერით შეგიძლიათ დაიწყოთ შესაბამისი აპლიკაცია.

პარამეტრების აპლიკაცია

ეს აპლიკაცია WLAN SSID და პაროლის დასაყენებლად. უბრალოდ ჩადეთ თქვენი WLAN- ის რწმუნებათა სიგელები და PixelWill– ის მომდევნო დაწყებისას ის შეეცდება დაუკავშირდეს ამ WLAN– ს.

თამაშები

სამი კლასიკური თამაშია დაპროგრამებული PixelWall– ში:

  • ტეტრისი
  • გველი
  • ონლაინ თამაში Space Invaders

ყველა თამაშის თამაში შესაძლებელია ვებ ინტერფეისის საშუალებით ან NES კონტროლერის საშუალებით.

გამოსახულების აპლიკაცია

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

Pixel It

ამ აპლიკაციის საშუალებით თქვენ შეგიძლიათ თითოეული პიქსელი ცალკე დააყენოთ Webinterface– ზე თითის დაჭერით. ასე რომ თქვენ შეგიძლიათ დახაზოთ რამდენიმე კრახის სურათი:)

ნაბიჯი 6: აკონტროლეთ Twitch Extension– ის საშუალებით

აკონტროლეთ Twitch Extension– ის საშუალებით
აკონტროლეთ Twitch Extension– ის საშუალებით

Twitch– ზე არის გაფართოება სახელწოდებით GetInTouch. ეს გაფართოება იძლევა Arduino– ს პროექტების ინტეგრირებას თქვენს პირდაპირ ეთერში, რათა მაყურებელს შეეძლოს გააკონტროლოს თქვენი arduino ნაკადის დროს.

არდუინოს ბიბლიოთეკა ამისთვის არის დაწერილი არდუინოსთვის. მაგრამ აღმოჩნდა, რომ ის ასევე მუშაობს ESP8266– ზე.

ნაკადში გამოსაყენებლად აუცილებელია შემდეგი ნაბიჯები:

  • GetInTouch ბიბლიოთეკის ინტეგრირება კოდში (იხ. გაკვეთილი)
  • დააკავშირეთ pixelWall თქვენს კომპიუტერთან USB/RS232 გადამყვანის საშუალებით (რომელიც ასევე გამოიყენება ESP განათებისათვის)
  • დააინსტალირეთ GetInTouch პროგრამა ვებ გვერდიდან
  • დააინსტალირეთ GetInTouch გაფართოება თქვენს Twitch არხზე (იხ. გაკვეთილი)

ნაბიჯი 7: კონტროლი Nintendo NES კონტროლერის მიერ

კონტროლი Nintendo NES კონტროლერის მიერ
კონტროლი Nintendo NES კონტროლერის მიერ

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

ამიტომ გადავწყვიტე ვიყიდო ძველი Nintendo NES კონტროლერი. ამ კონტროლერს აქვს ძალიან მარტივი ინტერფეისი. ეს მხოლოდ 4021 ცვლის რეგისტრია, რომელიც მუშაობს 3, 3 ვ. ასე რომ, ის შეიძლება პირდაპირ იყოს დაკავშირებული ESP8266- თან.

ყველა ღილაკის მოვლენა კონტროლერზე გადაეცემა გაშვებულ პროგრამას buttonEvent () ფუნქციის საშუალებით.

გირჩევთ: