Lazyboard: Üşengeç ama Üretken Kişiler İçin Kişiselleştirilebilir Macropad
Selamlar! Umarım Lazyboard projesi hoşunuza gitmiştir. Eğer beğenirseniz ve kendinize bir tane yapmak isterseniz diye size bu rehberi hazırladım. Bu yazı sürecin başından sonuna kadar size yol gösterecek ve temel konularda çeşitli kaynaklara yönlendirerek sadece Lazyboard’u inşa etmeye değil, bu kültüre bir giriş yapmanıza da olanak sağlamasını umuyorum. Eğer anlamadığınız yerler ya da sorularınız olursa lütfen yorumlar kısmında paylaşın. Bunları da yazıya eklerim. Buyurun başlayalım.
Digispark Kurulumu ve Arduino IDE eklenmesi
Lazyboard’un kalbinde ATtiny85 mikrodenetleyici bulunur. Bu arkadaş 8 bacağı ve küçük yapısı ile sizi aldatmasın bir hayli kuvvetlidir. Bu mikrodenetleyici günümüzde bu kadar popüler yapan proje ise Digispark’tır. Digispark ATtiny85 tabanlı bir mikrodenetleyici geliştirme kartıdır.
Digispark tamamen Arduino uyumludur ve üzerindeki ATtiny85 içerisinde micronucleus bootloader’ı bulunur. Bu bootloader sayesinde Attiny85, USB üzerinden kod yüklenmesi gibi çeşitli özellikler kazanır. Lazyboard da aynı mikrodenetleyici ve aynı bootloader’ı kullandığı için Arduino IDE üzerinden Digispark kartı gibi programlanabilir. Bu yüzden ilk olarak Arduino IDE üzerine Digispark kartını tanıtmalı ve bilgisayarınıza gerekli driver kurulumunu yapmalısınız. Bu süreci anlatan detaylı videomuzdan faydalanabilirsiniz.
Kurulumları yaptıktan sonra mümkünse bir Digispark temin ederek içine test kodlarını atmayı denemenizi şiddetle tavsiye ederim. Lazyboard’u programlamaya geçmeden önce bilgisayarınızdaki işleri doğru bir şekilde hallettiğinizden bu sayede emin olabilirsiniz.
Lazyboard’u ve Komponentleri Temin Etme
Lazyboard’u temin etmek için 2 seçeneğiniz var. Birincisi hazır satın almak, ikincisi ise ürettirmek.
Lazyboard tüm Lezzetli Robot Tarifleri projelerinde olduğu gibi açık kaynak kod kültürü benimsenerek ve bu kültürden faydalanarak geliştirilmiş bir projedir. Ticari olmayan faaliyetler doğrultusunda bireyler kendi istek ve arzularına göre kaynak dosyaları kullanabilir ve değişiklikler yapabilir. Bu bağlamda dilerseniz projenin gerber dosyalarını ücretsiz indirerek kendi tercih ettiğiniz pcb üretim servisinden sipariş geçebilirsiniz. Projenin eagle tasarım ve gerber dosyalarına aşağıdaki bağlantıdan ulaşabilirsiniz.
Eğer pcb üretimi konusunda tecrübesizseniz ya da basit ifadeyle bununla uğraşmak istemezseniz Robo90.com üzerinden de Lazyboard temin edebilirsiniz.
Lazyboard’u robo90.com üzerinden çeşitli şekillerde temin edebilirsiniz. Bunlar:
- Sadece Boş PCB
- Boş PCB + gerekli komponentler
- Kullanıma Hazır Lazyboard
Her 3 seçenekte de Robo90 filamentleri ile üretilmiş rastgele renkte basit bir muhafaza hediyesi vardır.
Projeyi çalışır hale getirmek için gereken komponentler aşağıda listelenmiştir. robo90.com üzerinden demonte set ile aşağıdaki komponentlerin tamamı gönderilmektedir.
- 1 Adet Lazyboard PCB
- 6 Adet Outemu Mekanik Klavye Switchi
- 1 Adet Tsop2238 Kızılötesi Alıcı
- 1 Adet USB B Dişi Konnektör
- 2 Adet 0.1uF mercimek kondansatör
- 1 Adet 1.5kohm
- 1 Adet 100ohm
- 3 Adet 10kohm
- 1 Adet 1kohm
- 1 Adet 1n5819 Diyot
- 1 Adet 2.2kohm
- 6 Adet 220ohm
- 1 Adet 3.3kohm
- 2 Adet 3.6V 500mW Zener
- 1 Adet 33kohm
- 1 Adet 4.7kohm
- 2 Adet 68ohm
- 1 Adet Attiny85 MCU
- 1 Adet 8’li entegre yatağı
- 1 Adet 2n2222
- 6 Adet 3mm Mavi led
3D Model Dosyaları
Kutu için .3mf uzantılı dosyayı indirip dilimleyici programınızda (Cura vb.) parça parça düzenleyebilirsiniz.
Lehimleme
Lazyboard normalde olması gerekenden daha büyük komponent padleriyle tasarlanması ve tamamen dip komponentlerden oluşması sayesinde gelişmiş lehimleme ekipmanları ve lehimleme tekniklerine gerek duymadan rahatlıkla lehimlenebilir.
Elektronik konusunda tecrübesi olmayan kişiler bile basit bir eğitim ve temel ekipmanlar ile Lazyboard’u toparlayabilir. Hatta bende bu kartı kendi atölyemdeki profesyonel ekipmanlarım yerine robo90.com üzerinden sunduğumuz uygun fiyatlı bir lehimleme seti ile lehimledim. Bu lehimleme setini incelediğim ve temel seviyede lehimin nasıl yapıldığını anlattığım videoyu izlemek isterseniz aşağıdaki bağlantıyı kullanabilirsiniz.
Bu video içerisinde lehim teli alakalı özel bir bölüm bulunuyor. O kısmı özellikle izlemenizi ve mümkünse kaliteli bir lehim teli temin etmenizi şiddetle tavsiye ederim. Ayrıca ben de videoda kullandığım kendi Lazyboard’umu bu set ile lehimledim ve tüm süreci video olarak kaydettim.
Lehimleme Tablosu
Lazyboard’u lehimlemek için aşağıdaki tabloyu kullanabilirsiniz. Hangi komponentin nereye lehimleneceği aşağıdaki tabloda belirtilmiştir. Kişisel önerim lehimleme sırasında tabloyu referans alarak, tablodaki sırayla komponentleri lehimlerseniz daha kolay bir lehimleme süreci yaşarsınız.
Mekanik switchlerin ledlerini eklemek isterseniz önce switchleri sonra switchlerin üstüne ledleri lehimlemeniz gerektiğini unutmayın.
R10, R11, R12, R13, R14, R15 | 220 ohm direnç ( kırmızı-kırmızı-kahve-altın) |
R1, R3, R18 | 10k ohm direnç ( kahve-siyah-turuncu-altın) |
R17 | 1k ohm direnç ( kahve-siyah-kırmızı-altın) |
R16 | 100 ohm ( kahve-siyah-kahve-altın) |
R9 | 1.5k ohm ( kahve-yeşil-kırmızı-altın ) |
R6 | 2.2k ohm ( kırmızı-kırmızı-kırmızı-altın) |
R5 | 3.3k ohm ( turuncu-turuncu-kırmızı-altın) |
R2 | 33k ohm ( turuncu-turuncu-turuncu-altın) |
R4 | 4.7k ohm ( sarı-mor-kırmızı-altın) |
R7, R8 | 68 ohm ( mavi-gri-siyah-altın) |
J1 | ( USB-B Dişi konnektör) |
D1 | 1N5819 Diyot Komponent Yönüne Dikkat!! (görsel 1)* |
D2, D3 | 3.6V 500mW Zener Diyot Komponent Yönüne Dikkat!! (görsel 1)* |
U1 | Entegre Yatağı Komponent Yönüne Dikkat!! (görsel 2)** |
U2 | Tsop2235 Kızılötesi Alıcı Nazik İşçilik Gerekiyor!! (görsel 3)** |
Q1 | 2n2222 Transistör Komponent Yönüne Dikkat!! (görsel 4)** |
S1, S2, S3, S4, S5, S6 | Outemu Mekanik Switch Açıklamayı Okuyunuz (görsel 5)** |
C1, C2 | 0.1uF mercimek kondansatör ( 104 ) |
J2 | 2×3 Header Açıklamayı Okuyunuz (görsel 6)** |
Ledler | 3mm Mantar Led Açıklamayı Okuyunuz (görsel 5)** |
Görsel 1 – Diyotlar kutuplu komponentlerdir. Lehimlerken yönlerine dikkat etmek gerekir. Görseldeki gibi lehimlediğinizden emin olunuz.
Görsel 2 – Entegre yatağının üzerindeki çentik U1 yazısına denk gelecek şekilde görseldeki gibi lehimlenmelidir. İlerleyen aşamalarda Attiny85 yine bu entegre üzerine çentikler denk gelecek şekilde takılacaktır.
Görsel 3 – Tsop2238 kızılötesi alıcı şekildeki gibi deliğine takıldıktan sonra kendine ayrılan yere bacakları bükülerek yatırılmalıdır. İsteğe göre komponent daha yüksekte kalacak şekilde de lehimlenerek alıcının görüşü arttırılabilir.
Görsel 4 – Transistör yönlü bir komponenttir ve görseldeki gibi lehimlenmelidir. Bacaklarını yuvasına girecek şekilde nazikçe bükebilirsiniz. Hafif havada kalarak lehimlenecektir.
Görsel 5 – Lazyboard Outemu switchler ile tanıtılsa da çok sayıda mekanik switch destekleyecek şekilde tasarlanmıştır. Hem farklı switchleri desteklemesi hem de kolay lehimlenebilmesi için padleri büyük çizilmiştir. Komponenti lehimlerken switch pcb üzerinde kayabilir ve yamuk lehimlenebilir ve ledlerin girişi zorlanabilir. Switch’i düz bir şekilde lehimlemek için dikkat ediniz. Yukarıda bahsettiğim Lazyboard lehimleme videosunda bu durum ile alakalı bir tüyo verdim, bakmak isteyebilirsiniz.
Ledler switchlerin üzerine kendi yuvalarına oturtulduktan sonra lehimlenecektir. Tüm ledlerin uzun bacakları PCB üzerinde USB konnektörün olduğu tarafa bakacak şekilde lehimlenmelidir.
Görsel 6 – Bu header’i lehimlemenize gerek yok. İleri seviye kullanıcılar farklı ihtiyaçları için dışarıdan ATtiny85 pinlerine erişmek isterlerse diye bırakılmış bir kısım. Eagle dosyaları üzerinden pinlerin detayları incelenebilir.
Lehimleme işlemi bittikten sonra elektronikçi yan keskisi ile komponentlerin uzun bacaklarını kesmeyi unutmayın.
Micronucleus Bootloader Kurma
Lazyboard USB üzerinden doğrudan programlabilir şekilde geliştirilmiştir. Bunun için ATtiny85 mikrodenetleyici içerisine özel bir bootloader yani önyükleyici kurmak gerekiyor. Micronucleus adındaki bu özel bootlader sayesinde ATtiny85 USB üzerinden programlanabilir hale geliyor.
Eğer robo90.com üzerinden demonte ya da kullanıma hazır lehimlenmiş bir Lazyboard satın aldıysanız bu bootlader bizim tarafımızdan kurulmuş ve Lazyboard içerisine ledleri açıp kapatan örnek bir kod yüklenmiş halde size gelir. USB kabloyu bağladığınızda direkt ledler yanıp sönmeye başlar. Fakat kendinize ait ya da başka bir yerden satın aldığınız ATtiny85’ler için bu bootloader’ı sizin yüklemeniz gerekir. Merak etmeyin bu işlem içinde detaylı bir video hazırladık aşağıdaki video da işinizi görecektir.
ATtiny85 üzerine bootlader kurduktan sonra artık Lazyboard üzerine mikrodenetleyiciyi takabilirsiniz. Çip üzerindeki çentik, kart üzerindeki entegre yatağının çentiği ile aynı yönde olmalıdır. Yani U1 yazısına bakacak şekilde takmalısınız.
Lazyboard’u Kodlama
Lazyboard’u kodlamak aslında Digispark kodlamak ile aynı. Digispark ile alakalı temeller Lazyboard için de birebir geçerlidir. Aslında Lazyboard’u çeşitli çevre bileşenlerinin eklendiği bir Digispark kartı gibi görebilirsiniz ve bu üzerindeki donanımları asgari düzeyde çalıştırmak son derece basittir. Fakat onu macropad olarak kullanmak ve bilgisayar ortamında istediğiniz işleri yaptırmak kodlama bilginiz ile alakalıdır.
Bu kısımda Lazyboard üzerindeki donanımların nasıl kontrol edileceğini anlatıp sizlere bazı örnek kullanımlar göstereceğim. Sizler de kendi örneklerinizi yorumlar kısmında ya da [email protected] üzerinden paylaşırsanız yazıya eklerim.
Hazırlamış olduğunuz kodları Lazyboard’a yüklemek için 2. kısımda verdiğim Digispark kurulumunu anlatılan videodaki metodu kullanmanız gerekiyor. Arduino IDE üzerindeki gerekli ayarlamalar yapıldıktan sonra yükleme tuşuna basınca editörün kartı tak uyarısı ile beraber takarak yükleme işlemi yapılabilir.
Lazyboard en temel manada 3 birimden oluşur. Bunlar mekanik switchler, kızılötesi alıcı ve led’lerdir. Devre şeması ve aşağıdaki örnek kodlardan faydalanarak bu donanımların nasıl kontrol edilebileceğini anlayabilirsiniz.
Önemli not: digispark üzerinde dijital işlemler direkt pin ismi ile yapılır. Analog işlemler için ise analog port numarasını kullanmanız gerekiyor. Lazyboard’da mekanik tuşlar PB2 pinine bağlıdır. Bu pin “input 1” portunu kullanır. Bu yüzden analog işlemlerde pin referansı için 1 kullanmamız gerekiyor. Daha detaylı bilgi için Digispark’ın ilgili wiki sayfasının linki bırakıyorum:
http://digistump.com/wiki/digispark/tutorials/basics
Önemli not 2: Lazyboard kartınızı aldıktan sonra aşağıda sizler için hazırlamış olduğumuz kodları doğrudan deneyebilirsiniz. Ancak küçük bir ihtimallede olsa tekrardan kalibre etmeniz gerekebilir. Bu durumda tek yapmanız gereken Analog Değer Okuma maddesindeki kodu kullanarak butonlarınızdan gelen verilere göre koddaki değerleri değiştirmeniz yeterli olacaktır.
Kütüphane Kurulumu
Lazyboard’ı kodlamadan önce Türkçe klavye desteği için kütüphane kurmamız gerekmekte. Kütüphaneyi buradan indirebilirsiniz github, kütüphane kurmayı bilmiyor iseniz buradaki içeriğimize göz atabilirsiniz.
Kütüphaneyi kullanırken türkçe klavye düzeni kullandığımızı belirtmemiz gerekiyor bunun içinde kodun başına aşağıdaki kodu yazmamız gerekmekte.
#define kbd_tr_tr
#include "DigiKeyboard.h"
Ledlerin Kontrolü
Ledler ATtiny85’in PB1 portuna bağlanmış bir transistör yardımı ile topluca kontrol edilebilir. Ledleri birbirinden bağımsız tek tek sürmek mümkün değil. Aşağıdaki örnek kod ile ledleri kontrol edebilirsiniz.
#define led 1
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led, LOW);
delay(500);
}
Analog Değer Okuma
Lazyboard üzerindeki Attiny85 dahili bir uart birimi ya da usb uart dönüştürücüsü olmadığı için analog okuduğumuz değerleri doğrudan seri monitöre aktaramayız. Ancak bununda bir hilesi var. Lazyboard’u bir klavye olarak tanıtıp bilgisayara komut gönderir gibi değerleri yazdırabiliriz.
// Türkçe klavye desteği ve kütüphanemizi ayarlıyoruz
#define kbd_tr_tr
#include "DigiKeyboard.h"
void setup() {
// Lazyboardın kendisini ayarlaması ve kaza ile rastgele tuş göndermemesi
// için gerekli başlangıç kodları
DigiKeyboard.delay(2500);
DigiKeyboard.sendKeyStroke(0);
}
void loop() {
// Mekanik switchlerden okunan değer data isimli değişkene kayıt edilir
int data = analogRead(1);
// Okunan değer 100den büyük ise
if ( data > 100)
{
// Klavyeden "Okunan Deger" yazısı ve data verisinin yazdırılması
// ÖNEMLİ: kütüphane oluşan hatalardan dolayı ğ harfini desteklememektedir
DigiKeyboard.print("Okunan Deger: ");
DigiKeyboard.print(data);
// Enter tuşuna basılması
DigiKeyboard.sendKeyStroke(KEY_ENTER);
while (analogRead(1) > 100);
}
// Analog okumadaki karasızlıkları engellemek için kısa bir bekleme
DigiKeyboard.delay(50);
}
Mekanik Switch Kontrolü
ATtiny85 çok yetenekli bir mikrodenetleyici olsa da bacak sayılarının azlığı onu çoğu zaman kısıtlar. Lazyboard projesinde de butonlar birbirine dirençler ile seri bağlanmış buton mantığı ile okunur. Aslında bu durumu devre şeması üzerinden daha rahat gözlemleyebilirsiniz.
Şemadan da gözlemleyebileceğiniz üzere S6 tuşuna bastığınızda 2.2K bir direnç ile 10K üzerinden bir gerilim bölücü sayesinde değer okuması gerçekleşiyor. S5 tuşuna bastığınızda ise 3.3K + 2.2K = 5.5K üzerinden bir gerilim bölücü çalışıyor ve ona göre bir voltaj ATtiny85 tarafına iletiyor. İşte bu iletilen voltaj değerlerini tespit ederek hangi butona basıldığını anlamamız mümkün. Aşağıdaki kodu incelerseniz bu değerleri görebilir ve hangi butona ne yaptırmak istiyorsanız bunun için kodun neresini değiştirmeniz gerektiğini anlayabilirsiniz.
#define kbd_tr_tr
#include "DigiKeyboard.h"
void setup() {
DigiKeyboard.delay(2500);
DigiKeyboard.sendKeyStroke(0);
}
void loop() {
int data = analogRead(1);
if ( data > 100)
{
if (data > 933) {
DigiKeyboard.print("buton 6 basıldı");
//buton 6 basılınca yapılacak faaliyetler
}
else if (data > 747) {
DigiKeyboard.print("buton 5 basıldı");
//buton 5 basılınca yapılacak faaliyetler
}
else if (data > 577) {
DigiKeyboard.print("buton 4 basıldı");
//buton 4 basılınca yapılacak faaliyetler
}
else if (data > 421) {
DigiKeyboard.print("buton 3 basıldı");
//buton 3 basılınca yapılacak faaliyetler
}
else if (data > 249) {
DigiKeyboard.print("buton 2 basıldı");
//buton 2 basılınca yapılacak faaliyetler
}
else {
DigiKeyboard.print("buton 1 basıldı");
//buton 1 basılınca yapılacak faaliyetler
}
DigiKeyboard.sendKeyStroke(KEY_ENTER); // enter tuşuna basar
while (analogRead(1) > 100);
}
}
Kumanda ile Kontrol
Kumanda Tuş Tanıtımı
Lazyboard üzerindeki kızılötesi alıcı sayesinde kumandadan gelen sinyalleri okuyabilir. Bu özelliğini kullanarak örneğin film veya dizi izlerken kumanda yardımı ile bilgisayarınızın sesini azaltıp arttırabilirsiniz. Ancak bu özelliği kullanmadan önce kumandamızın tuşlarının HEX kodlarını bulmalıyız. Bunun için aşağıdaki örnek kodu kullanabilirsiniz.
//Klavye özelliği için klavye kütüphanelerini ekliyoruz
#define kbd_tr_tr
#include "DigiKeyboard.h"
//IR okuyucumuzun bağlı olduğu pini yazıyoruz. Lazyboard için 0 pinidir
const byte IRpin = 0;
//IR okuma fonksiyonunun doğru çalışması için gerekli değişkenleri tanımlıyoruz
volatile boolean remote = false;
volatile unsigned long irCode = 0;
void setup() {
//IR okuyucumuzun bağlı olduğu pini giriş olarak ayarlıyoruz
pinMode(IRpin, INPUT);
// Lazyboardın kendisini ayarlaması ve kaza ile rastgele tuş göndermemesi
// için gerekli başlangıç kodları
DigiKeyboard.delay(2500);
DigiKeyboard.sendKeyStroke(0);
}
void loop() {
//IR okuyucumuz sinyal algılamadığında HIGH yani 1 verir
if (digitalRead(IRpin)) {
remoting();
} else {
//Sinyal algılamaya başladığında okuduğu veriyi Klavye yardımı ile bilgisayarımıza yazdırıyoruz
DigiKeyboard.println(irCode, HEX);
}
// Okuma fonksiyonunun doğru çalışması için bu kodu eklememiz gerekmekte
remote = true;
}
//IR okuma fonksiyonu
void remoting()
{
if (remote) {
remote = false;
unsigned long T;
for (byte n = 0; n < 32; n++) {
do {
T = pulseIn(IRpin, HIGH, 2200);
} while (T < 64);
bitWrite(irCode, n, T > 1120);
}
}
}
Kumanda ile Klavye Kontrolü
Lazyboard’a kumandamızın tuşlarını tanıttıktan sonra örnek kodumuzdaki gibi eklemeler yaparak istediğiniz tuşa bastırabilirsiniz.
Önemli Not: Fonksiyonları fazla uzatmamaya dikkat ediniz çünkü Attiny85 bazen sizin gönderdiğiniz verilere yetişemeyebilir.
//Klavye özelliği için klavye kütüphanelerini ekliyoruz
#define kbd_tr_tr
#include "DigiKeyboard.h"
//IR okuyucumuzun bağlı olduğu pini yazıyoruz. Lazyboard için 0 pinidir
const byte IRpin = 0;
//IR okuma fonksiyonunun doğru çalışması için gerekli değişkenleri tanımlıyoruz
volatile boolean remote = false;
volatile unsigned long irCode = 0;
void setup() {
//IR okuyucumuzun bağlı olduğu pini giriş olarak ayarlıyoruz
pinMode(IRpin, INPUT);
// Lazyboardın kendisini ayarlaması ve kaza ile rastgele tuş göndermemesi
// için gerekli başlangıç kodları
DigiKeyboard.delay(2500);
DigiKeyboard.sendKeyStroke(0);
}
void loop() {
//IR okuyucumuz sinyal algılamadığında HIGH yani 1 verir
if (digitalRead(IRpin)) {
remoting();
} else {
// 1. Tuşa basıldı ise
if (irCode == 0xE718FF00) {
DigiKeyboard.println("Up");
irCode = 0;
}
// 2. Tuşa basıldı ise
else if(irCode == 0xAD52FF00)
{
DigiKeyboard.println("Down");
irCode = 0;
}
}
// Okuma fonksiyonunun doğru çalışması için bu kodu eklememiz gerekmekte
remote = true;
}
//IR okuma fonksiyonu
void remoting() {
if (remote) {
remote = false;
unsigned long T;
for (byte n = 0; n < 32; n++) {
do {
T = pulseIn(IRpin, HIGH, 2200);
} while (T < 64);
bitWrite(irCode, n, T > 1120);
}
}
}
Lazyboard ile Tuş Kombinasyonu Yapma
Bazı durumlarda aynı anda birden fazla tuşa aynı anda basmamız gerekebilir bu durumlarda aşağıdaki kodu kullanıyoruz.
DigiKeyboard.sendKeyStroke()
Örneğin bir kopyala yapıştır işlemi yapmamız gerektiğinde
DigiKeyboard.sendKeyStroke(KEY_C , MOD_CONTROL_LEFT);
// KEY_C C Harfini, MOD_CONTROL_LEFT ise Sol CTRL tuşunu karşılar
DigiKeyboard.sendKeyStroke(KEY_V , MOD_CONTROL_LEFT);
// KEY_V V Harfini, MOD_CONTROL_LEFT ise Sol CTRL tuşunu karşılar
Bazen de aynı anda 3 tuşa basmamız gerekir örneğin windowsta belirli bir alanın ekran görüntüsünü alırken bunun gibi 3 tuşlu kombinasyonlarda aşağıdakine benzer bir kod kullanmamız gerekir.
DigiKeyboard.sendKeyStroke(KEY_S, MOD_GUI_LEFT | MOD_SHIFT_LEFT);
//KEY_S S Harfini, MOD_GUI_LEFT Sol Windows tuşunu, MOD_SHIFT_LEFT Sol Shift tuşunu karşılar
Aşağıda işinize yarayabilecek tuş karşıkları bulunmaktadır.
MOD_CONTROL_LEFT = Sol Control Tuşu
MOD_SHIFT_LEFT = Sol Shift Tuşu
MOD_ALT_LEFT = Sol Alt Tuşu
MOD_GUI_LEFT = Sol Windows Tuşu
MOD_CONTROL_RIGHT = Sağ Control Tuşu
MOD_SHIFT_RIGHT = Sağ Shift Tuşu
MOD_ALT_RIGHT = Sağ Alt Tuşu
MOD_GUI_RIGHT = Sağ Windows Tuşu
İngilizce’de de olan harfler için KEY_ atamasını kullanabilirsiniz _’den sonra istediğiniz harfi yazabilirsiniz. Türkçe karakterler için .print() fonksiyonunu kullanmanız gerekmektedir bazı uygulamalar .print() fonksiyonu ile sorun çıkartabilirler o yüzden tuş atamalarınızı mümkün olduğunca İngilizce’de de olan harflerden yaparsanız sizin için daha kolay olur.
Lazyboard ile Uygulama Kısayolu Oluşturma
Lazyboard’u kullanarak sıklıkla kullandığınız uygulamaları tek tuşa atayarak onların çalıştırma dosyalarını bulmakla vakit kaybetmeden uygulamayı açabilirsiniz. Aşağıdaki örnekte biz aklımıza gelen en çok kullandığımız programları kaydettik sizde benzer yolla kendinize göre düzenleyebilirsiniz
//Klavye özelliği için klavye kütüphanelerini ekliyoruz
#define kbd_tr_tr
#include "DigiKeyboard.h"
void setup() {
// Lazyboardın kendisini ayarlaması ve kaza ile rastgele tuş göndermemesi
// için gerekli başlangıç kodları
DigiKeyboard.delay(2500);
DigiKeyboard.sendKeyStroke(0);
}
void loop() {
int data = analogRead(1);
if (data > 100) {
if (data > 933) {
// Windows Çalıştır uygulamasının açılması
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
// CMD uygulamasını açma
DigiKeyboard.print("cmd");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(600);
// Eagle Uygulamasının kurulu olduğu dosyaya gitme
DigiKeyboard.print("cd C:\/");
DigiKeyboard.print("EAGLE 9.6.2/");
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
// Eagle uygulamasını açma
DigiKeyboard.print("eagle.exe");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
// CMD uygulamasını kapatmak
DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
} else if (data > 747) {
// Windows Çalıştır uygulamasının açılması
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
DigiKeyboard.delay(500);
// CMD uygulamasını açma
DigiKeyboard.print("cmd");
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(600);
// Arduino Uygulamasının kurulu olduğu dosyaya gitme
DigiKeyboard.print("cd C:\/");
DigiKeyboard.print("Program Files\/");
DigiKeyboard.print("Arduino IDE/");
DigiKeyboard.delay(500);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
DigiKeyboard.delay(500);
// Arduino uygulamasını açma
// DigiKeyboard.sendKeyStroke(0x35); fonksiyonunu kullanma sebebimiz kodun altındaki notta yazmaktadır
DigiKeyboard.sendKeyStroke(0x35);
DigiKeyboard.print("Arduino IDE.exe");
DigiKeyboard.sendKeyStroke(0x35);
DigiKeyboard.sendKeyStroke(KEY_ENTER);
// Arduino IDE'de cmd yi kapatmıyoruz çünkü onu kapattığımızda arduinoda kapanıyor
DigiKeyboard.delay(500);
} else if (data > 577) {
//buton 4 basılınca yapılacak faaliyetler
} else if (data > 421) {
//buton 3 basılınca yapılacak faaliyetler
} else if (data > 249) {
//buton 2 basılınca yapılacak faaliyetler
} else {
//buton 1 basılınca yapılacak faaliyetler
}
DigiKeyboard.sendKeyStroke(KEY_ENTER); // enter tuşuna basar
while (analogRead(1) > 100);
}
}
Önemli not: Bazı uygulamaların isimlerinde boşluk olduğu için onları çalıştırmak normalden farklı. Örneğin eagle uygulamasını direk eagle.exe yazarak çalıştırabiliyoruz. Ancak Arduino idenin dosyası için “Arduino IDE.exe” yazmamız gerekiyor ” işareti boşluklu uygulama ve dosyalarda gerekmektedir. ” İşaretini koymak içinde 0x35 tuşunu göndermemiz gerekmektedir.
Zaman içersinde daha fazla örnek uygulama ekleeyerek içeriğimizi canlı tutmaya devam edeceğiz. Gelişmeleri kaçırmamak için discordumuza katılabilirsiniz.
33 Yorum
Bir yanıt yazın Yanıtı iptal et
Daha fazla sonuç göster
Merhaba,
Türkçe karakter yazdıramıyorum. Birçok yöntem de denedim ama maalesef olmadı. Yardımcı olabilir misiniz?
mouse’u bir koordinata göndermeyi nasıl yapabilirim
Bu şekilde yapabilirsiniz. Öncesinde DigiMouse kütüphanesini yüklemeniz lazım.
#include “DigiMouse.h”
void setup() {
DigiMouse.begin(); // Başlatma işlemi
delay(5000); // 5 saniye bekleme süresi, bilgisayarın cihazı tanıması için
}
void loop() {
// Mouse’u belirli bir koordinata göndermek
DigiMouse.moveTo(100, 100); // x ve y koordinatları, ekranın sol üst köşesinden itibaren piksel cinsinden
DigiMouse.update(); // Hareketi güncelle
delay(2000); // 2 saniye bekle
// Mouse’u başka bir koordinata göndermek
DigiMouse.moveTo(200, 200);
DigiMouse.update();
delay(2000); // 2 saniye bekle
}
Merhaba Robo90 dan malzemeleri alıp yaptım ancak bilgisayara driverları kurmama rağmen bilinmeyen usb aygıtı aygıt tanımlama başarısız olud.A request for the USB device descriptor failed. diye bir uyarıyla karşılaşıyorum ve okumuyor ne yapmalıyım
Merhaba, seti aldım kurulumu yaptım, bu aşamalarda zorlansam de çok eğlenceli bir iş oldu çok teşekkür ederim. Bir sorum olacak, butonlara basıldığında int data = analogRead(1); değeri ile hangi butona basıldığı if else yardımıyla gelen değere göre kontrol ediliyor, bazen iflerde yazdığımız araılığın dışında değer geliyor ve farklı bir tuşa basıldığını düşünüyor, örneğin ben üst üste birkaç kez 5 nolu tuşa bastığımda arada 4 yada 6 noou tuşa basmışım gibi çıktı alıyorum, bununla ilgili yorumunuz nedir
Hocam kesin olarak bilmesem de sorunun attiny’nin kendisinde olduğunu düşünüyorum usb haberleşmesi vs olduğu için adc birimini zamanında okuyamıyor diye düşünüyorum bu yüzden hatalı örnekleme alıp yanlış sonuca ulaşıyor
Acaba Pull-up-down sorunu olabilir mi ?
bu videoya göz atabilrsin 🙂
https://www.youtube.com/watch?v=kwRmMFCucUk
Mac os ta çalışır mı?
Driverlarını yüklediğiniz takdirde çalışması gerek hocam
Hocam bu klavye yazılımı yapıldıktan sonra direk herhangi bi cihaza çalışacak mı?
Hocam koda göre değişsede windows bilgisayarlarda driverlar yüklü ise sorun çıkmaz
Merhaba çalışmalarınızı ve projelenizi çok beğendim çok detaylı ve her seviyeye uygun elinize ve emeğinize sağlık çok teşekkürler.
Programda cihaz olarak digispark bulunmuyor ?
Hocam bu linkteki işlemleri yaptınız mı?
https://www.youtube.com/watch?v=DzybvCDBRkI
Arduino programında hangi kartı seçiyoruz acaba ?
Digispark (default 16.5mhz) kartını seçmeniz yeterli olacaktır.
kütüphaneyi Arduino programına yükleyemedim dosyalarında library dosyası bulunmuyor
Hocam githubdan doğrudan download zip tuşu ile indirip arduino ide>taslak>library ekle>.ZIP kitaplığı ekle diyerek inen dosyayı seçtiğimde bende sorun oluşmadı bu yolla denediniz mi acaba?
Merhaba kolay gelsin, 3b modelini benim yazıcının çıkarabileceğini sanmıyorum (Ender 3 pro). Sadece üst kapak şeklinde bir tasarımı mevcut mu acaba?
Merhabalar projenizi çok beğendim hatta robo90 üzerinden satın aldım peki ne zaman kargolanır. Yani ön sipariş ne zaman sürer?
Önümüzdeki hafta içine planlıyoruz. PCB’ler geldi ama gümrükte. O işlemler ile ilgileniyorum şuan.
Eline Sağlık. Peki bunu 8 tuş olarak PCB ve şema kısmanda nasıl düzenleyebiliriz?
Gerilim bölücü devresini ihtiyacınıza göre tasarlamanız lazım. Yazarak anlatması güç. Bu konuya çalışmanızı tavsiye edebilirim ancak.
Merhaba videodaki 3d dosyalar gelecekmi acaba ? Teşekkürler 🙂
Video açıklama kısmında linki var youtube ‘da. Burayada ekleyeceğim.
Merhaba videodaki 3d dosyası paylaşılacakmı ?
Video açıklama kısmında linki var youtube ‘da. Burayada ekleyeceğim.
kbd_tr_tr dil paketini nasıl yükleyebilirim?
Yazıya ekleyeceğim. google de aradığınızda da kaynak çıkacaktır.
Merhaba,
Youtube yorumlarında sizden devrenin 3d halini paylaşır mısınız diye bir ricam olmuştu. Siz de devrenin dosyalarını paylaşırım demiştiniz. Ben brd uzantılı dosyayı fusion360 ile açtığımda PCB’nin 3d halini çıkartabiliyorum fakat footprintler ve 3d halleri gelmiyor malesef. İnternetten arattığımda bulamadım, özel bir kütüphane kullanıyorsunuz sanırım. Ücretli bir kütüphane vs. değilse paylaşma şansınız var mıdır acaba. Devre elime ulaştı ve lehimlemesini yaptım. Şuan kendi aklımda bir kutu tasarımı var. Tasarladığım taktirde sizinle de paylaşırım tasarımlarını.
Teşekkürler, iyi çalışmalar.
Selamlar dosyaları eagle ile açıp, fusion için uygun hale getirip kendiniz export edip fusiona import edebilirsiniz. fusion tarafında çok iyi değilim.
Tesekkurler fakat gerber dosyalarinin linki calismiyor
Merhaba, düzeltildi tekrar deneyebilirsiniz.