İçindekiler:
- Adım 1: Malzemeler
- 2. Adım: Prototipleme
- Adım 3: Kasayı Lazerle Kesme
- Adım 4: Arcade Düğmelerini Lehimleme
- Adım 5: Düğmeleri Yığınlayın ve Onları Panonuza Bağlayın
- Adım 6: Cehennemi Kodlamak
- Adım 7: Her Şey Çalışıyor
Video: Tak ve Çalıştır Arcade Düğmeleri: 7 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Yakın zamanda projelerimi yapmak için Arduino kullanmaya başladım. Bir tasarımcı olarak oyunlarım/etkileşimli projelerim için özel arayüzler yapmayı seviyorum.
Seri iletişim kullanırken karşılaştığım tek sorun oldukça karmaşık ve sorunlara ve hatalara açık ve oyunlarımı kontrol etmek için harici düğmeleri kullanmama izin verecek hızlı ve kolay bir çözüm istedim.
Herhangi bir bilgisayarla anında kullanabileceğiniz bir tak ve çalıştır cihazı istediğim için Arduino Leonardo aldım. Bir Uno ile neredeyse aynı, ancak birkaç fark var. Bu proje için avantajım için kullanacağım temel fark, HID olarak hareket edebilmesidir. HID veya insan arabirim aygıtı, her aygıt için özel sürücüler yüklemeye gerek kalmadan bilgisayarınızın klavyelerden ve bilgisayar faresinden gelen girişi tanımasını ve kabul etmesini sağlayan bir USB protokolüdür.
not: Firmware'i burada gösterildiği gibi güncellerseniz bir Uno da kullanabilirsiniz.
Adım 1: Malzemeler
Bu proje için ihtiyacınız olacak:
1x HID özellikli mikrodenetleyici (Arduino micro, Due & leonardo gibi birkaç tane var, Arduino Leonardo kullanacağım)
1x USB - arduino kablosu (Leonardo için USB mikro)
3x Arcade düğmeleri (bunları aldım)
1x lehimsiz devre tahtası
3x 10k ohm dirençler
3x 220 ohm dirençler
Atlama telleri
İşleri daha kalıcı hale getirmek için elbette daha fazla düğme ekleyebilir veya her şeyi bir devre tahtasına lehimleyebilirsiniz.
2. Adım: Prototipleme
Bu yüzden, kullanmak istediğim arcade butonlarını satın almadan önce bunu standart butonlarla test ettim. Düğmeleri standart şekilde bağlayın, sanırım 10K ohm dirençler kullandım.
Leonardo sayesinde programlama oldukça basittir. Klavye kitaplığını dahil etmeniz gerekir. Kodumun temeli olarak Arduino standart örneğini "Klavye mesajı" kullandım.
Şimdi soru, düğmelerinizin nasıl çalışmasını istediğinizdir. Temel olarak iki seçeneğiniz var, tek tuşa basmak ve basıldığında sürekli bir harf akışı. Gerçekten ne isteyeceğiniz projenize bağlı.
Atlama veya açma/kapama düğmesi gibi bir tuşa basıldığında bir şeyin tek bir örneğinin olmasını istiyorsanız, tek basma yöntemini seçersiniz. Bu yöntemle butonun durumuna bakıyorsunuz, yukarı mı aşağı mı? Sonra onu önceki durumla karşılaştırırsınız, zaten yukarı mı yoksa aşağı mı? Önceki düğme durumu mevcut düğme durumuyla aynıysa hiçbir şey olmaz. Ancak düğme durumu değişirse, bir düğmeye bastığınızda veya bıraktığınızda olduğu gibi bir şey olur. Kodumda sadece düğmeye basıldığında bir harf yazıyor, bırakıldığında değil ama bunu değiştirebilirsiniz.
#include "Klavye.h"
const int buttonLeft = A0; // buton için giriş pini
const int düğmeSağ = A1; const int buttonUp = A2;
int öncekiButtonStateLeft = YÜKSEK; // bir pushButton'un durumunu kontrol etmek için
int öncekiButtonStateRight = YÜKSEK; int öncekiButtonStateUp = YÜKSEK;
geçersiz kurulum() {
// pushButton pinini bir giriş yapın: pinMode(buttonLeft, INPUT); pinMode(düğmeSağ, GİRİŞ); pinMode(buttonUp, INPUT); // klavye üzerindeki kontrolü başlat: Keyboard.begin(); }
boşluk döngüsü () {
// butonu okuyun: int buttonStateLeft = digitalRead(buttonLeft); // düğme durumu değiştiyse, if ((buttonStateLeft != öncekiButtonStateLeft) // ve şu anda basılıysa: && (buttonStateLeft == HIGH)) { // bir mesaj yazın Keyboard.print("a"); } // bir dahaki sefere karşılaştırma için mevcut düğme durumunu kaydedin: öncekiButtonStateLeft = buttonStateLeft;
// butonu oku:
int buttonStateRight = digitalRead(buttonRight); // düğme durumu değiştiyse, if ((buttonStateRight != öncekiButtonStateRight) // ve şu anda basılıysa: && (buttonStateRight == HIGH)) { // bir mesaj yazın Keyboard.print("w"); } // bir dahaki sefere karşılaştırma için mevcut düğme durumunu kaydedin: öncekiButtonStateRight = buttonStateRight;
// butonu oku:
int buttonStateUp = digitalRead(buttonUp); // düğme durumu değiştiyse, if ((buttonStateUp != öncekiButtonStateUp) // ve şu anda basılıysa: && (buttonStateUp == HIGH)) { // bir mesaj yazın Keyboard.print("d"); } // bir dahaki sefere karşılaştırma için mevcut düğme durumunu kaydedin: öncekiButtonStateUp = buttonStateUp; }
Düğmeye basıldığı sürece bir şeyin sürekli olmasını istiyorsanız, sağa veya sola hareketi istediğiniz gibi, önceki düğme durumunu kontrol etmeden bir harf yazmasına izin verin. Çılgına dönüşmesini önlemek ve düğmelerinizin sahip olabileceği herhangi bir sıçramaya karşı koymak için küçük bir gecikme eklemeyi unutmayın. Bu sorunu çözmenin daha zarif yolları var, ancak bu kolay ve hızlı.
#include "Klavye.h"
const int buttonLeft = A0; // buton için giriş pini
const int düğmeSağ = A1; const int buttonUp = A2;
geçersiz kurulum() {
// pushButton pinini bir giriş yapın: pinMode(buttonLeft, INPUT); pinMode(düğmeSağ, GİRİŞ); pinMode(buttonUp, INPUT); // klavye üzerindeki kontrolü başlat: Keyboard.begin(); }
boşluk döngüsü () {
// butonu okuyun: int buttonStateLeft = digitalRead(buttonLeft); if (buttonStateLeft == HIGH) //düğmeye basılırsa { // bir mesaj yazın Keyboard.print("a"); gecikme(50); //Sıçramayı geciktirmek ve bilgisayarınızın sizi yakalamasını sağlamak için }
// butonu oku:
int buttonStateRight = digitalRead(buttonRight); if (buttonStateRight == HIGH) //düğmeye basılırsa { // bir mesaj yazın Keyboard.print("w"); gecikme(50); //Sıçramayı geciktirmek ve bilgisayarınızın sizi yakalamasını sağlamak için }
// butonu oku:
int buttonStateUp = digitalRead(buttonUp); if (buttonStateUp == HIGH) //düğmeye basılırsa { // bir mesaj yazın Keyboard.print("d"); gecikme(50); //Sıçramayı geciktirmek ve bilgisayarınızın sizi yakalamasını sağlamak için } }
İhtiyaçlarınıza en uygun olana bağlı olarak, her zaman her iki yöntemin bir karışımını kullanabilirsiniz.
Adım 3: Kasayı Lazerle Kesme
Durum için 2 mm Pleksiglas ek parçası ile 3 mm mdf kullandım. Kasanın içine daha sonra güzel ve ışıltılı hale getirmek için bazı LED'ler eklemek istediğim için eki ekledim.
Boyutlarımı makercase'e girdim ve svg dosyasını indirdim. Illustrator'da açtım ve istediğim yerlere delikler ekledim. Illustrator'ınız yoksa bu adım için Inkscape'i kullanabilirsiniz.
Elbette bir lazer kesici kullanmanıza gerek yok, çünkü bu içinde birkaç delik bulunan basit bir kutu. Daha geleneksel elektrikli aletler (hatta el aletleri!) kullanarak oluşturmak yeterince kolay olmalı. Çok tembelim ve bir lazer kesiciye erişimim var.
Adım 4: Arcade Düğmelerini Lehimleme
Bir arcade düğmesi (veya en azından benimki) üç bölümden oluşur. Plastik kasa, LED tutucu (içinde LED'li) ve mikro anahtar. Mikro anahtar, düğmenin asıl düğme kısmıdır ve Arduino'nuza bağlanmak için ihtiyaç duyacağınız şeydir. Mikro anahtarda üç terminal (kablolarınızı lehimleyeceğiniz metal uçlar) vardır. Üstteki (veya alttaki, ne istersen) zemindir. Diğer iki terminal, Normal Açık (NO) ve Normal Kapalı (NC). HAYIR, anahtara basılırsa bağlantı kurduğu anlamına gelir. NC, düğmeye basıldığında bağlantıyı kestiği anlamına gelir. Bu proje için HAYIR'ı kullanacağız. Resimlerde mikro anahtarımda zemin, NO ve NC etiketledim.
Düğmelerim yanıyor, bu yüzden kabloları LED tutucuya lehimledim. Hangi tarafın anot ve hangi tarafın katod olduğunu (LED'in pozitif ve negatif tarafları) bilmeniz için kablolarınızı renk kodladığınızdan emin olun.
Lehimsiz bir devre tahtası ile kullanımlarını kolaylaştırmak için kablolarıma başlık pimleri lehimledim. Teli bir başlık pimine lehimledim ve onları daha esnek hale getirmek için biraz ısıyla daralan makaron koydum.
Adım 5: Düğmeleri Yığınlayın ve Onları Panonuza Bağlayın
Şimdi arcade düğmelerinizi kasanıza koymanın zamanı geldi. Kilitleme halkasını plastik kasadan çıkarın ve kasadaki delikten geçirin. Düğmeyi yerine sabitlemek için diğer taraftaki kilitleme halkasını geçirin. LED tutucuya yapıştırın ve yerine kilitlemek için döndürün. Mikro anahtarları oynatın (yerinde tutmak için birbiriyle hizalanan küçük çıkıntılar ve delikler vardır).
Anahtarları panoya bağlamak için eklemiş olabileceğiniz veya eklememiş olabileceğiniz basmalı düğmeleri çıkarın. Mikro anahtarın toprağından çıkan kabloyu Arduino'nun toprağına ve rezistöre (düğmenin ayağının olduğu yer) bağlayın. Mikro anahtarın NO'undan giden kabloyu Arduino'nun 5v'sine bağlayın.
LED kablolar için negatif kabloyu toprağa ve pozitif kabloyu 220OHM'lik bir dirençle 5v'ye bağlayın. Onları bu şekilde bağlarsan, her zaman açık olacaklar. Bunları koda ekleyebilir ve isterseniz düğmelerle senkronize olarak açılıp kapanmasını sağlayabilirsiniz.
Adım 6: Cehennemi Kodlamak
Böylece, şimdi eski kodunuza yeni süslü düğmelerinizi iliştirdiniz ve aniden artık olması gerektiği gibi çalışmıyor. Harfler bir seferde iki veya üç görünür ve basit HTML5 oyunlarında olması gerektiği gibi çalışmaz. Cehennemden kurtulmaya hoş geldiniz.
Her şey sırayla. Prototipleme sırasında yazdığımız kod? iyi çalışıyor ve basit ama zarif değil. Daha fazla düğme eklemek istiyorsanız, kod parçacıklarını kopyalayıp yapıştırmanız ve içindeki tüm değerleri değiştirmeniz gerekir. Bunlardan birini unutursanız, hata düzeltme cehennemine girersiniz. Burada bir tema tespit edilsin mi? Kodlama cehennem ama çok eğlenceli, problem çözme cehennemi.
Güzel, kısa kod istiyoruz. Bu yüzden tüm bireysel düğme tamsayılarını dizilere değiştireceğiz. Bu şekilde, daha fazla buton eklemek isterseniz, sadece buton miktarını, bulundukları pinleri ve çıktılarını değiştirmeniz yeterlidir. Anahtar girdileri de ASCII olarak değiştiriyoruz çünkü… daha iyi mi çalışıyor?
Şimdi benim gibiyseniz, düğmeleri kullanmanın basit ve kolay bir yolunu yazacaksınız ve bu istediğiniz gibi çalışmayacak. Böylece yeni sürümler yaratırsınız (çocukları, artımlı yedeklemeleri unutmayın!), farklı şeyler deneyin, sürekli olarak hala iyi çalışmayan daha karmaşık kodlar yazın ve sonunda saatler önce yazdığınız basit koda geri dönün VE küçük bir hata fark edin. her şeyi anında düzeltir.
Sizi bu yolculuktan kurtarmama izin verin, işte çalışma kodu:
Feragatname: Bu metin, saatlerce kodlama ve çok basit bir kodun hata düzeltmesinden sonra yazılmıştır. Lütfen herhangi bir hayal kırıklığı belirtisini göz ardı edin ve aşağıda yayınlanan çalışma koduna odaklanın;)
#include "Keyboard.h"#define buttonMiktar 3
int buttonPin = {
A0, A1, A2 }; // Düğmeler nerede? int asciiLetter = { 97, 100, 119}; //ASCII'deki harfler, burada: a, d, w int buttonState[buttonAmount]; //Düğmeye basıldı mı, basılmadı mı?
geçersiz kurulum() {
for (int i = 0; i < buttonAmount; i++) { //pinMode(buttonPin, INPUT); // tüm pinleri girilecek şekilde ayarlayın } }
boşluk döngüsü () {
for (int i = 0; i < buttonAmount; i++) //dizide dolaş { buttonState = digitalRead(buttonPin); //Düğmeler ne yapıyor? if (buttonState == HIGH){ //Düğmeye basılırsa Keyboard.press(asciiLetter); //ilgili harfi gönder } else //buton basılı değilse { Keyboard.release(asciiLetter); //harfi bırakın } }
}
Adım 7: Her Şey Çalışıyor
Tak ve çalıştır özel denetleyicinizin keyfini çıkarın!
Bu talimatı beğendiyseniz, lütfen yarışmada bana oy vermeyi düşünün!
Önerilen:
Tak ve Çalıştır Tiny Raspberry Pi Network Server: 6 Adım (Resimlerle)
Tak ve Çalıştır Tiny Raspberry Pi Ağ Sunucusu: Son zamanlarda elime iki adet Raspberry Pi 1 Model A+ aldım. Pi Model A'yı duymadıysanız, Raspberry Pi'nin Pi Zero'dan daha büyük ve standart bir Raspberry Pi'den daha küçük olan en eski form faktörlerinden biridir. Ben her zaman istiyorum
GamePi XS - Tak ve Çalıştır Öykünme İstasyonu: 13 Adım (Resimlerle)
GamePi XS - Tak ve Çalıştır Öykünme İstasyonu: Giriş: Bu talimat, tümü bir SNES denetleyicisi içinde Raspberry Pi Zero W ile güçlendirilmiş bir konsolun yapısını açıklar. HDMI ile herhangi bir ekranda kullanılabilir. 3 saate kadar dayanan bir akıllı telefon Lityum İyon pil ile çalışır (
2-4 Oyunculu Tak ve Çalıştır Raspberry Pi Arcade: 11 Adım
2-4 Oyunculu Tak ve Çalıştır Raspberry Pi Arcade: Tak ve çalıştır, yalnızca yerel Walmart'ınızdan satın aldığınız o berbat plastik oyun konsolları için bir terim değil. Bu tak ve çalıştır arcade kabini, Retropie çalıştıran bir Raspberry Pi 3 tarafından desteklenen çalışmalara sahiptir, bu makine tam özelleştirme yeteneklerine sahiptir ve
Tak ve Çalıştır Retro Arcade Konsolu: 5 Adım (Resimlerle)
Tak ve Çalıştır Retro Arcade Konsolu: Tak ve Çalıştır Retro Arcade Konsolu, en sevdiğiniz klasik konsolların ve oyunların çoğunu tek bir cihazda toplar. En iyi yanı, tüm ihtiyacınızın keyfini çıkarmak için konsolunuzu TV'nizin video girişine ve bir güç kaynağına bağlamanızdır
DIY Build Mini USB Tak ve Çalıştır Hoparlörler (Mikrofon Seçenekli): 3 Adım (Resimlerle)
DIY Build Mini USB Tak ve Çalıştır Hoparlörler (Mikrofon Seçenekli): Merhaba arkadaşlar.!Size taşınabilir hoparlör için kullandığım en basit yöntemi göstermek istedim. Bu yöntem gerçekten çok benzersiz çünkü "bu tür konuşmacı konuları hakkında herhangi bir eğitim yok". Birkaç neden: Hiç sou ile karşılaştınız mı?