iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 29
0
IoT

homekit+pixhawk系列 第 29

QMK加上旋轉編碼器吧!

  • 分享至 

  • xImage
  •  

在一些比較高階或是特化的鍵盤中,有許多都有轉盤的功能,當然轉盤要做到好需要有良好的軟體支援,這樣就需要額外安裝驅動程式,但透過QMK的旋轉編碼器就可以實現大部分的功能,因此在這裡將教各位如何使用上旋轉編碼器。

編碼器原理

旋轉編碼器通常會有三隻腳,一隻腳為共用接腳,另外兩隻則為A以及B接腳,轉動旋轉編碼器時量測電壓會出現下列的圖形:旋轉編碼器圖
這個圖片代表著順時針旋轉時,A以及B接腳的輸出狀態,可以藉此用來判斷正轉以及逆轉,如果是正轉的話A接腳的相位超前B接腳的相位90˚,而反轉時A接腳的相位則落後B接腳的相位90˚,因此可以用來判斷旋轉編碼器旋轉的方向。

設定方法

rules.mk裡面加入這一行

ENCODER_ENABLE = yes

然後在config.h裡面設定A接腳以及B接腳對應要連接MCU的腳位,共用接腳接地,如果轉的方向跟預期的相反,就將腳位對調即可

#define ENCODERS_PAD_A { B12 }
#define ENCODERS_PAD_B { B13 }

如果有兩個或是兩個以上的旋轉編碼器的話,可以這樣接,以下的encoder1a之類的代表他們要接在MCU上的哪一隻腳,不是真的打encoder1a之類的鬼東西

#define ENCODERS_PAD_A { encoder1a, encoder2a, encoder3a }
#define ENCODERS_PAD_B { encoder1b, encoder2b, encoder3b }

預設的解析度為4,若需要增加或是減少解析度時,再自行變更

#define ENCODER_RESOLUTION 4

接著在keymap.c裡面設定正轉以及反轉要設定成什麼按鍵

void encoder_update_user(uint8_t index, bool clockwise) {
  if (index == 0) { /* First encoder */
    if (clockwise) {
      tap_code(KC_PGDN);
    } else {
      tap_code(KC_PGUP);
    }
  } else if (index == 1) { /* Second encoder */  
    if (clockwise) {
      tap_code(KC_UP);
    } else {
      tap_code(KC_DOWN);
    }
  }else if (index == 2) { /* Third encoder */  
    if (clockwise) {
      tap_code(KC_AUDIO_VOL_UP);
    } else {
      tap_code(KC_AUDIO_VOL_DOWN);
}

上面就是三個旋轉編碼器的程式碼,一個是按下pguppgdn,第二個是按下方向鍵上以及方向鍵下,第三個則是音量旋鈕,總共三顆旋鈕了,夠逼格了吧!!


上一篇
homebridge 控制戴森電風扇
下一篇
使用homekit以及小米溫濕度計來讀取家裡的溫濕度吧!
系列文
homekit+pixhawk30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
标杆杆
iT邦新手 5 級 ‧ 2019-11-21 11:09:42

#請問有辦法實現編碼器的層切換嗎,我希望像讓編碼器按鍵壹樣,通過層切換達到不同的功能,萬分感謝

我要留言

立即登入留言