İçindekiler:
- Gereçler
- Adım 1: Elektrik Devresi
- 2. Adım: Montaj
- Adım 3: Programlama
- 4. Adım: Kısayolları Yapılandırma
- Adım 5: İyileştirmeler
Video: Programlanabilir Tuş Takımı: 5 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu projede, en çok kullandığınız klavye kısayollarını, uygulamalarını ve daha fazlasını eşleştirmek için nispeten basit ve ucuz programlanabilir tuş takımını nasıl yapacağınızı göstereceğim.
Bu tuş takımı, tüm ana işletim sistemlerinde klavye olarak algılanır, ek sürücü gerekmez.
Gereçler
- Döner kodlayıcı.
- Çok sayıda (ihtiyaçlarınıza bağlı olarak) butonlar.
- Arduino Pro Micro, Arduino Leonardo veya Atmega32U4 MCU'lu başka bir geliştirme kartı.
- Tel, lehim, havya vb.
- (İsteğe bağlı) Tuş takımının kaymasını önlemek için biraz ağır taban, eski 3.5" HDD kullanıyorum
Adım 1: Elektrik Devresi
Arduino Pro Micro dev kartını Atmega32U4 MCU ile 18 adet kullanılabilir dijital pin ile kullanmayı tercih ettim.
Basmalı butonları ve döner kodlayıcıyı bağlamak için kullanılan pinler belirli bir sıra gözetilmeksizin seçilmiştir, ancak bazı noktalara dikkat edilmelidir:
- Tüm dijital okuma özellikli pinler, harici aşağı çekme dirençlerini azaltmaya izin veren dahili pull-up'lara sahiptir. Elbette kod buna göre güncellenmelidir, çünkü butonlara basıldığında pinin durumunun düşükten yükseğe gitmesini bekler.
- Encoder.h kitaplığı örneğinde, kodlayıcının en iyi performansına, her iki pin de MCU kesme özellikli pinlere bağlandığında ulaşıldığı not edilmiştir. Atmega32U4'ün analog pinlerinin çoğu kesme özelliğine sahip değildir.
- Tam aşağı çekme direnci değerleri çok önemli değil, 1 kΩ ile 100 kΩ arasındaki herhangi bir şey iyi çalışacaktır. Daha büyük direnç değerleri, daha küçük güç tüketimine izin verir, ancak voltaj değişikliklerine daha yavaş pin tepkisi verir. En çok sahip olduğunuz değer dirençlerini seçin.
- Mekanik kodlayıcılar, temas aşınması ve sıçraması nedeniyle en güvenilir şeyler değildir. Bu yüzden iyi bir geri tepme çözümüne ihtiyaç vardır. Seçtiğim kapasitör değerleri ve koddaki gecikme süreleri muhtemelen sizin için en iyi sonuçları vermeyecektir. Bu yüzden biraz denemeye ihtiyaç var. Veya optik kodlayıcı gibi bir şeye geçin, ancak fiyatı önemli ölçüde daha yüksek.
2. Adım: Montaj
Tuş takımının olabildiğince temiz görünmesini istedim, bu yüzden tüm bileşenleri prototip kartının arkasına lehimledim. Küçük bir açıyla yükseltilmiş olarak kullanılırsa tuş takımının daha ergonomik olacağını düşündüm. Bu yüzden Arduino Pro Micro'yu ayrı bir kart üzerine lehimledim ve tüm dijital pinleri tel ile butonlara bağladım. USB kablosunu bu şekilde bağlamak daha uygundur.
Tuş takımı için bir taban olarak kullanmak için eski 3,5 HDD buldum, oldukça ağır ve çalışırken tahta formunun masa üzerinde kaymasını engelliyor (kaymayı önleyici pedler de yardımcı oluyor. Ayrıca pirinç ayırıcıları vidaladığım uygun 3 mm vida delikleri var ve tahtayı hafif bir açıyla sabitleyin.
Adım 3: Programlama
Arduino IDE ile kod yazılır. 2 kitaplık kurmanız gerekecek:
- Paul Stoffregen tarafından kodlayıcı
- Arduino tarafından klavye
Atmega32U4'ü derlemek için Arduino Pro Micro board dosyasını da yüklemeniz gerekiyor, Sparkfun'da bunun nasıl yapılacağı konusunda harika bir öğretici var.
Önceden dikkat edilmesi gereken bir şey, kodunuzda "tuşlara basılı" bırakmamaya dikkat etmektir. Bu benim başıma geldi ve MCU sürekli olarak bazı tuş kombinasyonlarını spam gönderiyordu. Bunu nasıl düzelteceğimi bilmemin tek yolu, önyükleyiciyi MCU'ya yeniden yazmaktır. Eğer benim gibi olacaksanız, boot-loader yakmak için bu kılavuzu takip edebilirsiniz, programcı olarak kullanmak için başka bir arduino kartına ihtiyacınız olacak.
Ana döngüde MCU önce her bir düğme durumunu okur, DÜŞÜK'ten YÜKSEK'e durum değişikliği algılanırsa, klavye_kısayol(i) işlevi yürütülür. Değişken i, basılan düğmenin kimliğidir, toplam basma düğmesi sayısı ALL_BUTTONS tarafından tanımlanır (benim durumumda 15). Çalıştırıldığında, keyboard_shortcut(i) CTRL+SHIFT'i ve ardından düğme kimliğine eşlenen bir harf gönderir: 1->A, 2->B, 3->C vb. CTRL+SHIFT+N gibi bazı kombinasyonlar atlanır çünkü Windows10'da varsayılan olarak zaten kullanılıyor (bu durumda yeni bir klasör oluşturmak için). İşte tüm varsayılan Windows kısayollarının listesi. Kısa bir gecikmeden sonra MCU, tüm tuşları serbest bırakmak için sinyal gönderir ve fonksiyon ana döngüye geri döner.
Tüm butonlar kontrol edildikten sonra MCU, döner enkoder pozisyonunun değişip değişmediğini kontrol eder ve eğer değişirse, klavye_shortcut(i) benzersiz id ile yürütülür.
Kodlayıcı düğmesine basmak, kodlayıcıButtonFlag boole değişkenini tersine çevirir. Encoder döndürüldüğünde, dönüş yönüne ve encoderButtonFlag değerine bağlı olarak PC'ye farklı kısayollar gönderilir.
debugFlag 1 olarak ayarlanırsa, UART üzerinden seri monitöre hata ayıklama mesajları gönderilir.
4. Adım: Kısayolları Yapılandırma
Her kısayolun yaptığı da size kalmış, hepimizin farklı tercihleri var. Kendim için yapılandırdığım kısayolları örnek olarak vereceğim. Linux Mint 19.3'ü xfce4 masaüstü yöneticisi ile kullanıyorum, bu yüzden örneklerim çoğunlukla bash betiklerini içeriyor, ancak Windows10 için de bazı temel örnekler göstereceğim.
İlk resimde hangi scriptleri hangi kısayollarla eşleştirdiğimi görebilirsiniz. Xfce ayarlar menüsünden yapılır, bunun için işlem basittir. Bu komut dosyalarını GitHub depomda bulabilirsiniz.
Alt kısımdaki daha küçük 6 basma düğmesi, web tarayıcısı veya dosya yöneticisi gibi uygulamaları başlatmak içindir, bu uygulamalardan bazıları, başlatılan tüm uygulama adlarını alan ve başlatmak istediğiniz uygulamayı arayan start_only_one_app.sh komut dosyasından çağrılır. Uygulama penceresi zaten varsa odaklanır, aksi takdirde uygulamanın yeni örneği başlatılır.
Diğer komut dosyaları:
- 2nd_display_control.sh - ikinci monitörü açar/kapatır.
- moon_lamp.sh - Ay Lambamı AÇAR/KAPATIR.
- pc_load.sh - mevcut CPU ve GPU kullanımı ve sıcaklıkları ile bildirim balonu oluşturur.
- kapatma.sh - PC kapatma işlemini 1 dakikalık gecikmeyle başlatır ve kalan sürenin görüntülendiği bir bildirim balonu oluşturur.
- spec_vpn.sh - belirli bir OpenVPN sunucusuna bağlanır veya bağlantı zaten varsa, sunucuyla bağlantıyı keser.
- kısayol_kontrol.sh - argüman olarak komutu (artı, eksi, sekme, kapat) alır, şimdi hangi pencerenin odaklandığını algılar ve belirli bir uygulama aktif bulunursa kontrol eylemini yürütür. Örneğin, yüce metin düzenleyicide yeni sekme açmak için varsayılan kısayol "CTRL+N" ve xfce terminalinde - "CTRL+T"'dir, bu nedenle bu komut dosyası, aynı düğme ile yüce ve terminalde yeni sekme açmaya izin verir.
Döner kodlayıcının ilk işlevi ses seviyesini kontrol etmektir, ikinci işlevi ise kısayol_kontrollü.sh aracılığıyla aktif pencere yakınlaştırmasını kontrol etmektir.
Windows işletim sistemi için, ikinci resimde gösterildiği gibi program özellikleri penceresi aracılığıyla uygulamalara kısayollar atayabilirsiniz. Başka bir şey için AutoHotkey'i kullanmak isteyeceksiniz. Windows için otomasyon komut dosyası dilidir.
AHK sözdiziminin bazı basit örnekleri:
;Ses kontrol
^+t::{Volume_Up} Gönder
dönüş
^+v:: Gönder {Volume_Down}
dönüş
;Etkin pencereyi kapat
^+h::WinGetTitle, Başlık, A
PostMessage, 0x112, 0xF060,,, %Title%
dönüş
;Bilgisayarı kapat
^+b::Kapatmayı çalıştır /s
Adım 5: İyileştirmeler
Bazı olası iyileştirmeler:
- Daha kaliteli butonlar.
- Prototip PCB, düğmelere basıldığında oldukça fazla esner.
- Döner kodlayıcının hangi işleve ayarlandığına bağlı olarak rengi değiştirmek için RGB aydınlatma.
- Daha fazla düğme (IO genişletici IC'yi kullanın).
- Daha iyi döner kodlayıcı (veya daha iyi geri tepme çözümü).
Önerilen:
Arduino Mekanik Tuş Takımı: 5 Adım (Resimli)
Arduino Mekanik Tuş Takımı: Başka bir proje için pin pad'e ihtiyacım vardı, bu yüzden evde sahip olduğum parçalarla bir tuş takımı yapmaya karar verdim
Arduino ve İşlemeli 4x4 Tuş Takımı: 4 Adım (Resimli)
Arduino ve İşlemeli 4x4 Tuş Takımı: LCD ekranları sevmiyor musunuz? Projelerinizin çekici görünmesini mi istiyorsunuz? İşte çözüm. Bu Eğitilebilir Kitapta, Arduino'nuzdaki içeriği görüntülemek için bir LCD ekran kullanmanın zorluklarından kendinizi kurtarabilecek ve aynı zamanda projenizi gerçekleştirebileceksiniz
Karton Programlanabilir Tuş Takımı: 8 Adım (Resimli)
Karton Programlanabilir Tuş Takımı: Teknoloji geliştikçe, insanlar her şeyin daha sanal olmasını istiyor, ancak bazen kendi ellerinizle gerçekten dokunabileceğiniz ve etkileşime girebileceğiniz fiziksel bir şeye sahip olmak çok daha pratik ve kullanışlı. Bir örnek
16x2 LCD için Ön Plaka + Tuş Takımı Kalkanı: 8 Adım (Resimli)
16x2 LCD için Ön Plaka + Tuş Takımı Kalkanı: Ne yapacağız: Bu eğitimde Adafruit 16x2 LCD + Tuş Takımı Kalkanı (Arduino versiyonu) için lazerle kesilmiş akrilik bir ön plaka oluşturacağız. Basit bir ayar sayesinde, tüm tuş takımı düğmelerine rahat erişime sahip olacaksınız. Bunu yapmazsanız
Arayüz 16x2 Alfanümerik LCD And4x4 Matris Tuş Takımı Raspberry Pi3 ile: 5 Adım (Resimli)
Raspberry Pi3 ile 16x2 Alfanümerik LCD ve 4x4 Matris Tuş Takımı Arayüz: Bu talimatta, 16x2 LED ve 4x4 matris tuş takımının Raspberry Pi3 ile nasıl arayüzleneceğini açıklıyoruz. Yazılımı geliştirmek için Python 3.4 kullanıyoruz. Küçük değişikliklerle Python 2.7'yi de seçebilirsiniz