Სარჩევი:

Lapcade Arcade Controller: 6 ნაბიჯი (სურათებით)
Lapcade Arcade Controller: 6 ნაბიჯი (სურათებით)

ვიდეო: Lapcade Arcade Controller: 6 ნაბიჯი (სურათებით)

ვიდეო: Lapcade Arcade Controller: 6 ნაბიჯი (სურათებით)
ვიდეო: 07 29 81 2024, ივნისი
Anonim
ლაპკადის არკადული კონტროლერი
ლაპკადის არკადული კონტროლერი

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

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

ნაბიჯი 1: მიმოხილვა

მიმოხილვა
მიმოხილვა
მიმოხილვა
მიმოხილვა

რა არის ეს საქმე?

პირველ რიგში, გთხოვთ გაითვალისწინოთ რა არ არის Lapcade:

  • ეს არ არის სათამაშო კონსოლი.
  • მას არ აქვს თამაშები და არ აქვს თამაშები ჩატვირთვისა და თამაშის უნარი.
  • ის არ უკავშირდება ტელევიზორს ან მონიტორს.

Lapcade არის Bluetooth კლავიატურა. მეტი არაფერი, არც ნაკლები.

მე ამას განვმარტავ, რადგან ამ საკითხის ირგვლივ გარკვეული დაბნეულობა წარმოიშვა. მე მქონდა ბევრი კითხვა იმის შესახებ, თუ რა თამაშები შეიძლება ჩატვირთოს მასზე და რა სახის ვიდეო ინტერფეისს იყენებს - არ შეუძლია და არა! ის მთლიანად დამოკიდებულია კომპიუტერზე, რომელთანაც მას აკავშირებთ და, ამ მხრივ, ცა არის ლიმიტი. თუ თქვენს მოწყობილობას შეუძლია მიიღოს Bluetooth კლავიატურა, მაშინ Lapcade უნდა იმუშაოს მასთან. მე არ მიცდია, მაგრამ მინახავს სხვა პროექტები, რომლებმაც გამოიყენეს EZ-Key (ქვემოთ აღწერილი) ხელის მოწყობილობებთან დაკავშირებული. ასე რომ, თეორიულად, თქვენ შეგიძლიათ დაუკავშიროთ ეს მოწყობილობა ნებისმიერ კომპიუტერს, რომელსაც აქვს Windows, Linux, ChromeOS, MAC და ა.შ. ასევე Raspberry Pi, Android, iOS და სხვა, რომლებიც მხარს უჭერენ Bluetooth v2.1. თუმცა შეიძლება საჭირო გახდეს საკვანძო კოდების მოდიფიკაცია.

წინასწარი ვერსია 1

თავდაპირველად, აღმოვაჩინე პროდუქტი სახელწოდებით Adafruit Bluefruit EZ -Key bluetooth HID (ადამიანის ინტერფეისის მოწყობილობა - იფიქრეთ კლავიატურაზე), რომელიც საშუალებას მომცემდა შემეერთებინა ნაცნობი დაწკაპუნების ღილაკები და გაეგზავნა კლავიშები კლავიატურის მსგავსად. როდესაც მე პირველად შევიმუშავე კონტროლერი EZ-Key- ის საფუძველზე, მე მივყევი მითითებებს, მარტივი და სწორი კონტროლერის შესაქმნელად და ის მშვენივრად მუშაობდა. მე ვიყენებდი კონტროლერს მძიმე ხის ჩარჩოში უპრობლემოდ რამდენიმე თვის განმავლობაში. თუმცა, თქვენ შემოიფარგლებით 12 შეყვანით და არ არსებობს საშუალება შეცვალოთ მოწყობილობით გადაცემული საკვანძო კოდი EZ-Key შეყვანის პინების გადაპროგრამების გარეშე.

როდესაც მე ვიყენებდი ჩემს Kodi მედია ცენტრს დაინსტალირებული თამაშების საჩვენებლად, მინდოდა მედია ცენტრის კონტროლსა და თამაშის თამაშს შორის გადართვა მრავალი კონტროლერის / დისტანციური მართვის გამოყენების გარეშე. მე ასევე მინდოდა მოწყობილობის მორგება, რათა ჩემს მარცხენა ხელიან შვილს შეეძლო გამოეყენებინა ის, როგორც მას მოსწონდა.

მე ასევე ვიყენებდი 4 AA ბატარეას მოწყობილობის გასაძლიერებლად და ყუთიდან არ გამოჩნდა დაბალი ენერგიის რეჟიმი. ბატარეები მშრალი იქნება ერთი -ორი დღის განმავლობაში, თუნდაც ის არ იყოს გამოყენებული.

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

დრო იყო განახლების.

ვერსია 1 დიზაინი პროექტის მიზნები:

  • მოქნილი
  • დასატენად
  • მემარცხენეებისა და მემარჯვენეებისათვის
  • კაბელები არ არის
  • მსუბუქი

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

EZ-Key არ იყო პირდაპირ პროგრამირებადი რეალურ დროში, ამიტომ შემდეგი გამოსავალი იქნება Arduino– ს მსგავსი კონტროლერის გამოყენება ფუნქციონირების მართვისთვის. EZ- გასაღები მხოლოდ გამოყენებული იქნება კლავიშების კოდის გადასატანად კომპიუტერზე Bluetooth- ით. მე ავირჩიე Arduino Pro Mini UNO– სთან უშუალო თავსებადობის გამო (რაც მე უკვე მქონდა გამოცდილება) და მისი კომპაქტური ზომების გამო.

მე არ მინდოდა ამ ახალი ყუთის ბატარეებთან გამკლავება, როგორც ეს გავაკეთე Lapcade– ის წინამორბედთან, ასე რომ, მე ავირჩიე ლითიუმ პოლიმერის მრავალჯერადი დატენვის ბატარეის და დამტენის/მომარაგების დაფის გამოყენება. ეს ნიშნავს, რომ მე შემიძლია უბრალოდ გამოვიყენო სტანდარტული USB დამტენი. ეს ასევე იმას ნიშნავდა, რომ მე არ მომიწევდა საქმის გახსნა ყოველ ჯერზე, როდესაც ბატარეები იკვებებოდა. EZ-Key- ს და PowerBoost 500C- ს აქვთ ინდიკატორები, რომლებიც უნდა გადავიდეს კონტროლერის თავზე დაწყვილების სტატუსის და დაბალი ბატარეის მითითებისთვის. მე დავამატე რამდენიმე LED- ები დიზაინზე, რათა მე შემეძლოს ამ მოსახერხებელი სტატუსის ინდიკატორების ასახვა მომხმარებლისათვის ოპერაციის დროს.

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

ნაბიჯი 2: რაც გჭირდებათ

ელექტრონული ნაწილების სია

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

1 Arduino Pro Mini 5V - მე მომწონს Pro, რადგან ის კომპაქტურია. თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი Uno pin/interrupt თავსებადი დაფა მოწოდებული კოდით

1 Adafruit Bluefruit EZ -Key bluetooth HID - როგორც ზემოთ აღვნიშნეთ, ეს არის bluetooth HID, რომელიც საშუალებას აძლევს საკვანძო კოდების გადაცემას მასპინძელ კომპიუტერზე.

1 MCP23017 - i2c 16 შეყვანის/გამომავალი პორტის გაფართოება - ეს ჩიპი გამოიყენება Arduino– ს 16 დამატებითი შეყვანის დასამატებლად I2C საკომუნიკაციო პროტოკოლის საშუალებით

1 Adafruit PowerBoost 500 + დამტენი - ეს არის დენის კონტროლის დაფა Lapcade– ის დასატენად და LiPo– ს დასატენად

1 ლითიუმის პოლიმერული ბატარეა (მე გამოვიყენე 2500 mAh, მაგრამ თქვენ შეგიძლიათ გამოიყენოთ უფრო მაღალი / დაბალი ტევადობა)

1 8 -გზის არკადული ჯოისტიკი - გთხოვთ იხილოთ ქვევით განყოფილება "აზრები ვერსიისთვის 2" ჯოისტიკებთან დაკავშირებით

9 არკადული ღილაკი - ფერების ასორტიმენტი და ეკრანის ანაბეჭდები

2 განათებული მომენტალური ღილაკი - მე გამოვიყენე ეს 2 ღილაკი ცენტრის 4 და 5 ღილაკებისთვის და არის ადაფრუტიდან: წითელი (ცენტრი 4), ლურჯი (ცენტრი 5)

1 განათებული საკეტი ღილაკი მე ეს გამოვიყენე ადაფრუტის დენის ღილაკისთვის: მწვანე

2 LED- ები გამოიყენება წყვილის სიგნალის და დაბალი ბატარეის მითითებისთვის. მე გამოვიყენე ორი RadioShack ნაწილი 2760270 და 2760271

1 16 x 2 LCD ეკრანი

1 I2C/SPI LCD ზურგჩანთა - გამოიყენება I2C კომუნიკაციისთვის 16x2 ეკრანზე.

1 პანელი მთა USB გაფართოების კაბელი - გამოიყენება კაბელის კედელზე PowerBoost– ის მიკრო- b USB კონექტორის გასავრცელებლად.

1 Adafruit Perma-Proto სრული ზომის Breadboard PCB-არ არის აუცილებელი, მაგრამ ამარტივებს მუდმივ მონტაჟს.

5 220 Ohm რეზისტორები

7 1K Ohm რეზისტორები

2 2.2K Ohm რეზისტორები

1 4.7K Ohm რეზისტორი

18 #10 ქალი ყვავის კონექტორები - არკადული ღილაკის კონტაქტებთან დასაკავშირებლად. რეკომენდებულია შედუღებაზე, რადგან ღილაკები საბოლოოდ გაიცრება.

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

შემდეგი ნივთები არ არის საჭირო, მაგრამ გაგიადვილებთ ხუმრობას და, თუ კომპონენტის შემწვარს გახდით, გაადვილებს ჩანაცვლებას:

  • IC სოკეტი - 28 პინიანი 0.3 ინჩიანი ჩიპებისთვის
  • IC სოკეტი - 28 პინიანი 0.6 "ჩიპებისთვის
  • 0.1 "ქალი სათაური (მინიმუმ 1 36 პინიანი სათაური)

კაბინეტის ნაწილები:

  • 3 12 x 24 1/8th inch არყის პანელები
  • 1 12 x 24 1/8 ინჩიანი გამჭვირვალე აკრილის პანელი

ფაილები:

  • Lapcade V1.xlsx - ქვემოთ ნახსენები ცხრილი, რომელსაც აქვს წრიული კავშირები.
  • LapcadeV1-code.zip - ამ პროექტისთვის დაწერილი Arduino კოდის შემცველი ZIP ფაილი.
  • Lapcade_v1.zip - ZIP ფაილი, რომელიც შეიცავს svg ნახატებს კაბინეტისთვის.
  • LapcadeV1-Circuit_Diagram_Large.zip - ZIP ფაილი, რომელიც შეიცავს ქვემოთ ნაჩვენები გამაგრილებელი წრიული დიაგრამის მაღალი გარჩევადობის ვერსიას.

ბმულები მეტ რესურსზე:

  • Adafruit Bluefruit EZ-Key დოკუმენტაცია
  • Adafruit PowerBoost 500 + დოკუმენტაცია
  • I2C/SPI LCD ზურგჩანთა დოკუმენტაცია
  • MCP23017 I2C პორტი გაფართოების დოკუმენტაცია
  • Adafruit MCP23017 Arduino ბიბლიოთეკა

ნაბიჯი 3: ასამბლეა - კაბინეტი

ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი
ასამბლეა - კაბინეტი

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

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

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

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

გთხოვთ გაითვალისწინოთ: ეს არის მრავალ ფენის ნახაზი და თითოეული ფენა წარმოადგენს ერთ ჭრილს ერთ მასალაზე. როდესაც თქვენ აგზავნით ბეჭდვას თქვენს საჭრელზე, დარწმუნდით, რომ ყველა სხვა ფენა დამალულია ჭრის წინ.

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

მესამე შენიშვნა: მე არ ჩავრთე USB დატენვის კაბელის წყვეტა ორიგინალ ნახატში, მხოლოდ იმიტომ, რომ არ ვიყავი დარწმუნებული სად მინდოდა მისი დაყენება, რათა არ შემეშალა გამოყენება. მოგვიანებით დავჭრა ხვრელები მარცხენა მხარეს ძალიან ახლოს, სადაც ხედავთ სიტყვას "ლაპკადი" ქვემოთ მოცემულ სურათებში. მე -2 ვერსიას ექნება დატენვის პორტი სხვაგვარად.:)

ნაბიჯი 4: შეკრება - ელექტრონიკა

ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა
ასამბლეა - ელექტრონიკა

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

პირველი, რაც აქ უნდა აღინიშნოს, არის ის, რომ პურის დაფის ძალა და მიწის რელსები. რელსები ლურჯი ხაზით არის დაფქული (-) და რელსები წითელი ხაზით არის ძალა (+). ეს არის სტანდარტული, მაგრამ მე ამას ვაკეთებ იმის გამო, რომ ჯოისტიკის (შავი მავთულის) საერთო ხაზი დაკავშირებულია ენერგიასთან და არა მიწასთან. Fritzing– ში მე ვიყენებ ჯოისტიკის მავთულის ფერს და არა კონვენციის ფერს და ვფიქრობდი, რომ ამან შეიძლება გამოიწვიოს გარკვეული დაბნეულობა - ასე რომ უმჯობესია, ეს გზიდან გამოვიდეს.

კომპონენტის კავშირები

იმის ნაცვლად, რომ ვცადო ყველა კავშირი გრძელი ფორმით აქ (Arduino– ს ანალოგური pin 0 გადის 220 ohm რეზისტორს PowerBoost Bat pin– ზე), მე შევქმენი ცხრილი, რომელიც შეიცავს ყველა კავშირს კომპონენტის თვალსაზრისით. ასე რომ, ცხრილის Arduino ჩანართზე ნახავთ APM A0 -> 2.2K OHM -> PB Bat და PowerBoost ჩანართზე ნახავთ PB BAT -> 2.2K OHM -> APM A0. გთხოვთ იხილოთ ქვემოთ მოცემული რესურსების სექცია ამ პროექტთან დაკავშირებული ყველა ფაილისთვის.

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

თითოეულ არკადულ ღილაკს აქვს საერთო (com), ჩვეულებრივ ღია (არა) და ჩვეულებრივ დახურული (nc) კონტაქტი. თითოეული ამ ღილაკისთვის მე ვიყენებ com და nc კავშირებს.

ნაბიჯი 5: კოდი

კოდი
კოდი

უპირველეს ყოვლისა, მე უნდა მივცე კრედიტი იქ, სადაც უნდა. მე დიდწილად ვეყრდნობი შემდეგ სტატიას Lapcade– ის კოდირებისთვის:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid განსაკუთრებული მადლობა ბენჯამინ გულდს კარგად დაწერილი და დოკუმენტირებული პროექტისთვის!

ამრიგად, ამ პროექტის გულში არის კლავიატურა. კომპიუტერის თვალსაზრისით, Lapcade არის კლავიატურა, რომელიც დაკავშირებულია bluetooth– ით, რაც არის EZ-Key იმდენად კარგი. იგი იღებს რთულ Bluetooth პროტოკოლებს, ვადებს და კოდებს და ათავსებს მათ ისე, რომ ერთადერთი რაც მჭირდება arduino– სთან ერთად არის მისი გასაღები კოდების გაგზავნა. ამისათვის მე გამოვიყენე კოდის რუქები პროექტში ზემოთ და ჩემი საკუთარი მასივები ოპერაციული რეჟიმების შესაქმნელად. თითოეული რეჟიმი ცვლის იმას, რასაც აკეთებს ერთი და იგივე ღილაკი ლაპკადზე და რას უგზავნის კომპიუტერს. არსებობს სამი "ჩაშენებული" ოპერაციული რეჟიმი და ყველა ეს რეჟიმი არის პროგრამის რეჟიმები.

საოპერაციო რეჟიმები

ქვემოთ მოცემულია ლაპკადის ოპერაციული რეჟიმების შეჯამება:

  1. გაშვება - ეს რეჟიმი ამოწმებს კომპიუტერთან დაკავშირებას და ადგენს გაშვების ცვლადებს. თუ EZ- გასაღები არ არის დაწყვილებული კომპიუტერთან, ის იცვლება დაწყვილების რეჟიმში
  2. დაწყვილება - ამ რეჟიმში EZ -Key ელოდება კომპიუტერთან დაწყვილებას.
  3. რეჟიმის არჩევა - ეს რეჟიმი მომხმარებელს აძლევს საშუალებას აირჩიოს რომელი პროგრამის რეჟიმი გამოიყენოს. ამ რეჟიმში კომპიუტერზე არ იგზავნება საკვანძო კოდები. ასევე არსებობს სწრაფი რეჟიმის არჩევა წინა განაცხადის რეჟიმიდან გამომდინარე. მაგალითად, დაჭერით რეჟიმი და შემდეგ პლეერი ორი ღილაკი, როდესაც Mame player 1 რეჟიმში უბრალოდ ცვლის რეჟიმს ეკრანზე Mame Player 2 – ის ძებნისა და არჩევის გარეშე.

განაცხადის რეჟიმები

პროგრამის რეჟიმები გამოიყენება კომპიუტერში შესაბამისი საკვანძო კოდების გასაგზავნად, იმისდა მიხედვით, თუ რომელ პროგრამაშია მომხმარებელი. მაგალითად, კოდის რეჟიმში მოქმედების 2 ღილაკი აგზავნის "P" -ს, რომელიც არის პაუზა. მამეში, იგივე ღილაკი აგზავნის მარცხენა Alt ღილაკს. თუ ვინმეს სურდა კონტროლერის გამოყენება Minecraft– ის კომპიუტერისთვის, მაშინ ყველაფერი რაც უნდა გაკეთდეს არის დაამატოთ შესაბამისი მასივის რუქები.

თითოეული პროგრამა უნდა განისაზღვროს მონაცემთა 4 მასივში.

  • რეჟიმი - ეს მასივი შეიცავს ტექსტს, რომელიც ეკრანზე იქნება წარმოდგენილი თითოეული რეჟიმისთვის. ჩვენების მეორე სტრიქონის გამოსაყენებლად, უბრალოდ მოათავსეთ ~ მასივში, როგორც ხაზის შესვენება.
  • keyModes [14] - ეს მატრიცული მასივი შეიცავს კომპიუტერში გაგზავნილ საკვანძო კოდებს. თითოეული ელემენტის 14 ხაზი წარმოადგენს ცალკეულ ღილაკებს საკვანძო კოდის შესადგენად.
  • keyModifiers [14] - ეს მატრიცა მასივი შეიცავს გასაღების კოდის მოდიფიკატორებს თითოეული ღილაკისათვის, როგორიცაა ცვლის ღილაკის დაჭერა.
  • quickMode [3] - ეს მატრიცული მასივი შეიცავს მიმდინარე რეჟიმის სწრაფი რეჟიმის შერჩევის შაბლონს.

ძირითადი ოპერაცია

როდესაც სისტემა ჩართულია, ის გადადის გაშვების რეჟიმში, სადაც Bluetooth კავშირის სტატუსი შემოწმებულია და ნაჩვენებია მომხმარებლისთვის. Arduino იღებს EZ- გასაღების სტატუსს EZ-Key- ის L1 პინიდან პულსის დათვლისა და დროის მიხედვით. არსებობს ოთხი ქვე-სტატუსი გაშვების რეჟიმში:

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

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

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

რეჟიმის არჩევისას, ჯოისტიკის ზემოთ და ქვემოთ მოქმედებები გადაგიყვანთ LCD ეკრანზე არსებული აპლიკაციის რეჟიმში. ერთ -ერთი რეჟიმის ასარჩევად, დააჭირეთ ღილაკს "შესვლა" (ცენტრი 5).

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

სწრაფი რეჟიმები

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

მაგალითად, მიმდინარე კონფიგურაციაში, Mame– ის გამოყენებისას მოთამაშე 1 რეჟიმში (რეჟიმი 4 ან მეხუთე რეჟიმი განსაზღვრულია), შემდეგ დააჭირეთ ღილაკს რეჟიმი და შემდეგ პლეერი ორი ღილაკი იტვირთება სწრაფი მასის [4] [1] მასივის ელემენტს (არდუინო იყენებს 0 ბაზის მასივის ინდექსაცია) რაც არის 5. სისტემა შემდეგ გადადის განაცხადის რეჟიმში 5 რომელიც არის Mame, player 2.

ნაბიჯი 6: იდეები მე -2 ვერსიისთვის

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

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

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

მარჯვენა და მარცხენა "Flipper" ღილაკები - ვერსია 2 აუცილებლად დაამატებს თითო ღილაკს კაბინეტის მარცხენა და მარჯვენა მხარეს. ერთი შესაძლო გამოყენება იქნება პინბოლის ფლიპერებისთვის.

სხვა კონტროლი - მე ვუყურებ მომდევნო ვერსიაში სხვა საერთო კონტროლის დამატების სიცოცხლისუნარიანობას, როგორიცაა ტრეკბოლი და / ან სპინერი. ვინაიდან EZ-Key- ს შეუძლია მაუსის კოორდინატების გადაცემა, ეს არ უნდა იყოს ძალიან რთული.

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

უკაბელო კონკურსი
უკაბელო კონკურსი
უკაბელო კონკურსი
უკაბელო კონკურსი

მეორე პრიზი უკაბელო კონკურსში

გირჩევთ: