Სარჩევი:
- ნაბიჯი 1: მასალები
- ნაბიჯი 2: პროტოტიპირება
- ნაბიჯი 3: კორპუსის ლაზერული ჭრა
- ნაბიჯი 4: არკადული ღილაკების შედუღება
- ნაბიჯი 5: დააწყვეთ ღილაკები და შეაერთეთ ისინი თქვენს დაფაზე
- ნაბიჯი 6: ჯოჯოხეთის კოდირება
- ნაბიჯი 7: ყველაფერი მუშაობს
ვიდეო: ჩართეთ და ითამაშეთ არკადული ღილაკები: 7 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
მე ახლახანს დავიწყე Arduino– ს გამოყენება ჩემი პროექტების შესაქმნელად. როგორც დიზაინერს, მე მიყვარს ჩემი თამაშების/ინტერაქტიული პროექტების პერსონალური ინტერფეისის შექმნა.
ერთი პრობლემა, რომელიც მე წავაწყდი იმაში, რომ სერიული კომუნიკაციის გამოყენება საკმაოდ რთული და მიდრეკილია პრობლემებისა და შეცდომებისკენ და მინდოდა სწრაფი და მარტივი გადაწყვეტა, რომელიც საშუალებას მომცემდა გამომეყენებინა გარე ღილაკები ჩემი თამაშების გასაკონტროლებლად.
როგორც მე მინდოდა plug and play მოწყობილობა, რომლის გამოყენებაც მყისიერად ნებისმიერ კომპიუტერთან შეგეძლო, შევიძინე Arduino Leonardo. ის თითქმის იდენტურია Uno– ს, მაგრამ რამდენიმე განსხვავებით. მთავარი განსხვავება, რომელსაც მე გამოვიყენებ ამ პროექტისათვის, არის ის, რომ ვიმოქმედო როგორც HID. HID, ანუ ადამიანის ინტერფეისის მოწყობილობა არის USB პროტოკოლი, რომელიც საშუალებას აძლევს თქვენს კომპიუტერს ამოიცნოს და მიიღოს კლავიატურებიდან და კომპიუტერის მაუსიდან თითოეული მოწყობილობისთვის მორგებული დრაივერების დაყენების გარეშე.
შენიშვნა: თქვენ ასევე შეგიძლიათ გამოიყენოთ Uno, თუ განაახლეთ firmware, როგორც ეს ნაჩვენებია აქ.
ნაბიჯი 1: მასალები
ამ პროექტისთვის დაგჭირდებათ:
1x HID უნარიანი მიკროკონტროლი (არის რამდენიმე Arduino micro, Due & leonardo, მე ვიყენებ Arduino Leonardo- ს)
1x USB to arduino კაბელი (ლეონარდოსთვის ეს არის USB მიკრო)
3x Arcade ღილაკები (მე ეს ვიყიდე)
1x solderless breadboard
3x 10k ohm რეზისტორები
3x 220 ohm რეზისტორები
ჯუმბერის მავთულები
თქვენ, რა თქმა უნდა, შეგიძლიათ დაამატოთ მეტი ღილაკი, ან ყველაფერი ჩასვათ პურის დაფაზე, რათა ყველაფერი უფრო მუდმივი გახდეს.
ნაბიჯი 2: პროტოტიპირება
ასე რომ, სანამ შევიძენდი არკადულ ღილაკებს, რომელთა გამოყენებაც მინდოდა, მე გამოვცადე ეს სტანდარტული ღილაკებით. დააკავშირეთ ღილაკები სტანდარტული გზით, მე მჯერა, რომ მე გამოვიყენე 10K ohm რეზისტორები.
ლეონარდოს წყალობით პროგრამირება საკმაოდ მარტივია. თქვენ უნდა შეიტანოთ კლავიატურის ბიბლიოთეკა. მე გამოვიყენე Arduino სტანდარტული მაგალითი "კლავიატურის შეტყობინება", როგორც ჩემი კოდის საფუძველი.
ახლა კითხვაა, როგორ გსურთ თქვენი ღილაკების მუშაობა. თქვენ ძირითადად გაქვთ ორი არჩევანი, ერთი ღილაკის დაჭერა და ასოების უწყვეტი ნაკადი, თუ დააჭერთ. ეს ნამდვილად დამოკიდებულია თქვენს პროექტზე, რა გსურთ.
თუ გსურთ, რომ გასაღების დაჭერისას მოხდეს რაიმე შემთხვევის შემთხვევა, როგორიცაა ნახტომი ან ჩართვა/გამორთვა, თქვენ აირჩევთ ერთიანი ბიძგის მეთოდს. ამ მეთოდით თქვენ უყურებთ ღილაკის მდგომარეობას, ის მაღლაა თუ ქვევით? შემდეგ შეადარებ მას წინა მდგომარეობას, უკვე ზემოთ იყო თუ ქვევით? თუ წინა ღილაკის მდგომარეობა იგივეა, რაც ამჟამინდელი ღილაკი, არაფერი მოხდება. მაგრამ თუ ღილაკის მდგომარეობა იცვლება, როგორც თქვენ დააჭერთ ან გაათავისუფლებთ ღილაკს, რაღაც მოხდება. ჩემს კოდში ის მხოლოდ ასოებს აკრიფებს ღილაკის დაჭერისას და არა გათავისუფლებისას, მაგრამ შეგიძლია შეცვალო.
#მოიცავს "კლავიატურას.ჰ"
const int buttonLeft = A0; // შესასვლელი პინი ღილაკზე
const int buttonRight = A1; const int buttonUp = A2;
int previousButtonStateLeft = მაღალი; // pushButton- ის მდგომარეობის შესამოწმებლად
int previousButtonStateRight = მაღალი; int previousButtonStateUp = მაღალი;
void setup () {
// გააკეთეთ pushButton pin შეყვანა: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // კლავიატურაზე კონტროლის ინიციალიზაცია: Keyboard.begin (); }
ბათილი მარყუჟი () {
// წაიკითხეთ ღილაკი: int buttonStateLeft = digitalRead (buttonLeft); // თუ ღილაკის მდგომარეობა შეიცვალა, თუ ((buttonStateLeft! = previousButtonStateLeft) // და ის ამჟამად დაჭერილია: && (buttonStateLeft == HIGH)) {// ჩაწერეთ შეტყობინება Keyboard.print ("a"); } // შეინახეთ მიმდინარე ღილაკის მდგომარეობა შედარებისთვის შემდეგ ჯერზე: previousButtonStateLeft = buttonStateLeft;
// წაიკითხეთ ღილაკი:
int buttonStateRight = digitalRead (ღილაკი მარჯვენა); // თუ ღილაკის მდგომარეობა შეიცვალა, თუ ((buttonStateRight! = previousButtonStateRight) // და ის ამჟამად დაჭერილია: && (buttonStateRight == HIGH)) {// ჩაწერეთ შეტყობინება Keyboard.print ("w"); } // შეინახეთ მიმდინარე ღილაკის მდგომარეობა შედარებისთვის შემდეგ ჯერზე: previousButtonStateRight = buttonStateRight;
// წაიკითხეთ ღილაკი:
int buttonStateUp = digitalRead (buttonUp); // თუ ღილაკის მდგომარეობა შეიცვალა, თუ ((buttonStateUp! = previousButtonStateUp) // და ის ამჟამად დაჭერილია: && (buttonStateUp == HIGH)) {// ჩაწერეთ შეტყობინება Keyboard.print ("d"); } // შეინახეთ მიმდინარე ღილაკის მდგომარეობა შედარებისთვის შემდეგ ჯერზე: previousButtonStateUp = buttonStateUp; }
თუ გსურთ რაღაც განუწყვეტლივ მოხდეს მანამ, სანამ ღილაკს დააჭერთ, როგორც თქვენ გინდათ თქვენ მარცხენა ან მარჯვენა მოძრაობისთვის, უბრალოდ მიეცით უფლება დაწეროს წერილი წინა ღილაკის მდგომარეობის შემოწმების გარეშე. დაიმახსოვრე, რომ დაამატე მცირედი შეფერხება, რომ არ გაგიჟდეს და შეეწინააღმდეგო შენს ღილაკებს. ამ პრობლემის გადაჭრის უფრო ელეგანტური გზები არსებობს, მაგრამ ეს არის მარტივი და სწრაფი.
#მოიცავს "კლავიატურას.ჰ"
const int buttonLeft = A0; // შესასვლელი პინი ღილაკზე
const int buttonRight = A1; const int buttonUp = A2;
void setup () {
// გააკეთეთ pushButton pin შეყვანა: pinMode (buttonLeft, INPUT); pinMode (buttonRight, INPUT); pinMode (buttonUp, INPUT); // კლავიატურაზე კონტროლის ინიციალიზაცია: Keyboard.begin (); }
ბათილი მარყუჟი () {
// წაიკითხეთ ღილაკი: int buttonStateLeft = digitalRead (buttonLeft); თუ (buttonStateLeft == HIGH) // თუ ღილაკზე დაჭერილია {// ჩაწერეთ შეტყობინება Keyboard.print ("a"); დაგვიანება (50); // გადახტომა დაგვიანებისთვის და კომპიუტერის დასაძლევად
// წაიკითხეთ ღილაკი:
int buttonStateRight = digitalRead (ღილაკი მარჯვენა); თუ (buttonStateRight == HIGH) // თუ ღილაკზე დაჭერილია {// ჩაწერეთ შეტყობინება Keyboard.print ("w"); დაგვიანება (50); // გადახტომა დაგვიანებისთვის და კომპიუტერის დასაძლევად
// წაიკითხეთ ღილაკი:
int buttonStateUp = digitalRead (buttonUp); თუ (buttonStateUp == HIGH) // თუ ღილაკზე დაჭერილია {// ჩაწერეთ შეტყობინება Keyboard.print ("d"); დაგვიანება (50); // გადახტომა დაგვიანებულია და საშუალებას მოგცემთ კომპიუტერს დაეწიოთ}}
თქვენ ყოველთვის შეგიძლიათ გამოიყენოთ ორივე მეთოდის ნაზავი, ეს დამოკიდებულია იმაზე, რაც საუკეთესოდ შეესაბამება თქვენს საჭიროებებს.
ნაბიჯი 3: კორპუსის ლაზერული ჭრა
შემთხვევისთვის გამოვიყენე 3 მმ mdf, 2 მმ პლექსიგლასის ჩასადებით. მე დავამატე ჩანართი, რადგან მინდა დავამატო რამდენიმე შუქდიოდი საქმის შიგნიდან შემდგომ ეტაპზე, რათა ის ლამაზი და ბრწყინვალე იყოს.
მე ჩავწერე ჩემი ზომები makercase და გადმოვწერე svg ფაილი. გავხსენი ილუსტრატორში და დავამატე ხვრელები იქ, სადაც მინდოდა. თუ თქვენ არ გაქვთ Illustrator, შეგიძლიათ გამოიყენოთ Inkscape ამ ნაბიჯისათვის.
რა თქმა უნდა, თქვენ არ გჭირდებათ ლაზერული საჭრელის გამოყენება, რადგან ეს არის მარტივი ყუთი, რომელშიც რამდენიმე ხვრელია. საკმაოდ მარტივი უნდა იყოს მისი შექმნა უფრო ტრადიციული დენის ინსტრუმენტების გამოყენებით (ან თუნდაც ხელის ინსტრუმენტებით!) მე უბრალოდ ძალიან ზარმაცი ვარ და მქონდა წვდომა ლაზერულ საჭრელზე.
ნაბიჯი 4: არკადული ღილაკების შედუღება
არკადული ღილაკი (ან მინიმუმ ჩემი) სამი ნაწილისგან შედგება. პლასტიკური გარსაცმები, LED დამჭერი (მასში LED) და მიკრო გადამრთველი. მიკრო გადამრთველი არის ღილაკის ფაქტობრივი ღილაკი და არის ის, რაც დაგჭირდებათ თქვენს არდუინოსთან დასაკავშირებლად. მიკრო გადამრთველზე არის სამი ტერმინალი (ლითონის ნაჭრები, რომლებიც იჭრება, სადაც თქვენ შეაერთებთ მავთულხლართებს). ერთი თავზე (ან ბოლოში, რაც გინდა) არის მიწა. დანარჩენი ორი ტერმინალი არის ნორმალური ღია (NO) და ნორმალური დახურული (NC). NO ნიშნავს, რომ თუ გადამრთველი დაჭერილია ის ქმნის კავშირს. NC ნიშნავს, რომ ღილაკზე დაჭერის შემთხვევაში ის წყვეტს კავშირს. ჩვენ გამოვიყენებთ არა ამ პროექტს. მე დავნიშნე მიწა, NO და NC ჩემს მიკრო შეცვლაზე სურათებში.
ჩემი ღილაკები განათებულია, ასე რომ მე შემაერთეთ მავთულები LED დამჭერზე. დარწმუნდით, რომ დააკოპირეთ თქვენი მავთულები ისე, რომ იცოდეთ რომელი მხარეა ანოდი და რომელი კათოდი (LED- ის დადებითი და უარყოფითი მხარეები).
სათაურის ქინძისთავები დავამაგრე ჩემს მავთულხლართებზე, რათა მათი გამოყენება გამიადვილდეს გამწოვ დაფაზე. მე უბრალოდ გავამაგრე მავთული სათაურის პინზე და დავაყენე ცოტა სითბოს შესამცირებელი მილი, რათა უფრო გამძლე იყოს.
ნაბიჯი 5: დააწყვეთ ღილაკები და შეაერთეთ ისინი თქვენს დაფაზე
ახლა დროა დააწყოთ თქვენი არკადული ღილაკები თქვენს საქმეში. ამოიღეთ ჩამკეტი რგოლი პლასტმასის გარსაცმებიდან და ჩადეთ იგი ხვრელში. მიამაგრეთ ჩაკეტვის ბეჭედი მეორე მხარეს, რათა დააჭიროთ ღილაკს. მიამაგრეთ LED დამჭერი და გადაუგრიხეთ, რომ ჩაკეტოს ადგილზე. გადაადგილდით მიკრო კონცენტრატორებში (არის პატარა ბუდეები და ხვრელები, რომლებიც ერთმანეთთან გასწორებულია, რათა შეინარჩუნოს იგი).
კონცენტრატორების დაფაზე დასაკავშირებლად ამოიღეთ ღილაკები, რომლებიც თქვენ შეიძლება დაამატოთ ან არ დაამატოთ. შეაერთეთ მავთული მიკრო გადართვის მიწიდან არდუინოს მიწასთან და რეზისტორთან (სადაც იყო ღილაკის ფეხი). შეაერთეთ მავთული მიკრო გადამრთველის NO– დან Arduino– ს 5v– ზე.
LED მავთულისთვის დააკავშირეთ უარყოფითი მავთული მიწასთან და პოზიტიური 220OHM რეზისტორის საშუალებით 5 ვ. თუ თქვენ დააკავშირებთ მათ ასე, ისინი ყოველთვის ჩართულები იქნებიან. თქვენ შეგიძლიათ დაამატოთ ისინი კოდში და, თუ გსურთ, ღილაკებთან სინქრონიზებული ჩართვა და გამორთვა.
ნაბიჯი 6: ჯოჯოხეთის კოდირება
ასე რომ, ახლა თქვენ მიამაგრეთ თქვენი საყვარელი ახალი ღილაკები თქვენს ძველ კოდს და მოულოდნელად ის აღარ მუშაობს ისე, როგორც უნდა. ასოები ერთდროულად ორი ან სამი გამოჩნდება და ის არ მუშაობს ისე, როგორც უნდა მარტივი HTML5 თამაშებით. კეთილი იყოს თქვენი მობრძანება ჯოჯოხეთის გამოცხადებაში.
უპირველეს ყოვლისა. კოდი, რომელიც დავწერეთ პროტოტიპის დროს? მუშაობს კარგად და მარტივია, მაგრამ არ არის ელეგანტური. თუ გსურთ დაამატოთ მეტი ღილაკი, თქვენ უნდა დააკოპიროთ და ჩასვათ კოდის ფრაგმენტები და შეცვალოთ ყველა მნიშვნელობა მათ შიგნით. თუ დაივიწყებთ ერთ მათგანს, შეხვალთ შეცდომების გამოსწორების ჯოჯოხეთში. აქ გამოავლინე თემა? კოდირება ჯოჯოხეთია, მაგრამ ძალიან სახალისო, ჯოჯოხეთის პრობლემის გადაჭრა.
ჩვენ გვინდა ლამაზი, მოკლე კოდი. ასე რომ, ჩვენ შევცვლით ყველა ცალკეულ ღილაკს მთელ რიცხვს მასივებში. ამ გზით, თუ გსურთ დაამატოთ მეტი ღილაკი, თქვენ მხოლოდ უნდა შეცვალოთ ღილაკის რაოდენობა, ქინძისთავები, სადაც ისინი მდებარეობს და მათი გამომავალი. ჩვენ ასევე ვცვლით ASCII– ის საკვანძო მონაცემებს, რადგან… ის უკეთესად მუშაობს?
ახლა თუ თქვენ ჩემნაირი ხართ, თქვენ დაწერთ ღილაკების გამოყენების მარტივ და მარტივ გზას და ის არ იმუშავებს ისე, როგორც გსურთ. ასე რომ თქვენ ქმნით ახალ ვერსიებს (გაიხსენეთ ბავშვები, დამატებითი სარეზერვო ასლები!), სცადეთ სხვადასხვა რამ, დაწერეთ მუდმივად უფრო რთული კოდი, რომელიც ჯერ კიდევ არ მუშაობს კარგად და საბოლოოდ დაუბრუნდებით იმ უბრალო კოდს, რომელიც თქვენ დაწერეთ საათის წინ და შეამჩნევთ მცირე შეცდომას მყისიერად აფიქსირებს ყველაფერს.
ნება მომეცით დაგზოგოთ ეს მოგზაურობა, აქ არის სამუშაო კოდი:
პასუხისმგებლობის შეზღუდვის განაცხადი: ეს ტექსტი დაიწერა რამდენიმე საათის განმავლობაში კოდირებისა და შეცდომების დაფიქსირების შემდეგ ძალიან მარტივი კოდი. გთხოვთ, უგულებელყოთ იმედგაცრუების ნიშნები და გაამახვილოთ ყურადღება ქვემოთ განთავსებულ სამუშაო კოდზე;)
#ჩართეთ "Keyboard.h"#განსაზღვრეთ ღილაკი თანხა 3
int ღილაკი Pin = {
A0, A1, A2}; // სად არის ღილაკები? int asciiLetter = {97, 100, 119}; // წერილები ASCII– ში, აქ: a, d, w int buttonState [buttonAmount]; // ღილაკი დაჭერილია თუ არა?
void setup () {
for (int i = 0; i <buttonAmount; i ++) {// ციკლის გავლით მასივის pinMode (buttonPin , INPUT); // დააყენეთ ყველა ქინძისთავები შესაყვანად}}
ბათილი მარყუჟი () {
for (int i = 0; i <buttonAmount; i ++) // მასივის გავლით {buttonState = digitalRead (buttonPin ); // რას აკეთებენ ღილაკები? if (buttonState == HIGH) {// თუ ღილაკზე დაჭერილია Keyboard.press (asciiLetter ); // გაუგზავნე შესაბამისი წერილი} სხვას // თუ ღილაკს არ დაჭერილი {Keyboard.release (asciiLetter ); // გაათავისუფლე წერილი}}
}
ნაბიჯი 7: ყველაფერი მუშაობს
ისიამოვნეთ თქვენი plug & play მორგებული კონტროლერით!
თუ ეს ინსტრუქცია მოგეწონათ, გთხოვთ გაითვალისწინოთ ხმის მიცემა კონკურსში!
გირჩევთ:
უკაბელო კომპიუტერის ჯოისტიკი/ბორბლის ღილაკები: 4 ნაბიჯი (სურათებით)
უკაბელო კომპიუტერის ჯოისტიკი/ბორბლის ღილაკები: მე ვაშენებ ახალ სარბოლო სიმს ბოლო წლების განმავლობაში და გადავწყვიტე წასვლა DIY Direct Drive საჭით. მიუხედავად იმისა, რომ მხოლოდ ეს პროექტი შეიძლება იყოს რამოდენიმე ინსტრუქტაჟი თავისთავად, ეს არის სასწავლო ყველა ღილაკის გაკეთების შესახებ
მენიუ არდუინოში და როგორ გამოვიყენოთ ღილაკები: 10 ნაბიჯი (სურათებით)
მენიუ Arduino– ში და როგორ გამოვიყენოთ ღილაკები: ჩემს Arduino 101 გაკვეთილში თქვენ გასწავლით თუ როგორ უნდა შექმნათ თქვენი გარემო Tinkercad– ში. მე ვიყენებ Tinkercad– ს, რადგან ეს არის საკმაოდ მძლავრი ონლაინ პლატფორმა, რომელიც მაძლევს საშუალებას გამოვავლინო რიგი უნარ -ჩვევები სტუდენტებისთვის სქემების შესაქმნელად. მოგერიდებათ
NFC საკეტი - როდესაც PCB ასევე არის ღილაკები, ანტენა და სხვა : 7 ნაბიჯი (სურათებით)
NFC საკეტი - როდესაც PCB ასევე არის ღილაკები, ანტენა და სხვა …: თქვენ შეგიძლიათ აიღოთ ორიდან ერთი რამ ამ ინსტრუქციიდან. თქვენ შეგიძლიათ მიყევით და შექმნათ თქვენი საკუთარი კომბინაცია რიცხვითი კლავიატურისა და NFC მკითხველისთვის. სქემა აქ არის. PCB განლაგება აქ არის. თქვენ ნახავთ მასალებს, რათა შეუკვეთოთ
საბაჟო Arduino- ს შეუძლია შეინარჩუნოს საჭის ღილაკები ახალი მანქანის სტერეოთი: 9 ნაბიჯი (სურათებით)
საბაჟო Arduino– ს შეუძლია შეინარჩუნოს საჭის ღილაკები ახალი მანქანის სტერეოთი: მე გადავწყვიტე შეცვალო ორიგინალური მანქანის სტერეო ჩემს Volvo V70 -02– ში ახალი სტერეოთი, ასე რომ მე შევძლებ ისარგებლო ისეთი ნივთებით, როგორიცაა mp3, bluetooth და handsfree. ჩემს მანქანას აქვს საჭის კონტროლი სტერეოსთვის, რომლის გამოყენებაც მაინც მსურს
წვრილმანი თამაშის პასუხის ღილაკები: 8 ნაბიჯი (სურათებით)
წვრილმანი თამაშის პასუხის ღილაკები: ამ წრიული საშუალებით თქვენ შეძლებთ გაუშვათ თქვენი საკუთარი თამაშის შოუ. როდესაც დააჭირეთ ყუთის ორივე მხარეს ერთ -ერთ პლეერის ღილაკს, მისი შესაბამისი შუქი ანათებს და მეორე ღილაკი გამორთულია, რათა ნახოთ ვინ უპასუხა კითხვებს