【DIY】マイコンを使ってコスパ最強のキーボードを自作する!

Поділитися
Вставка
  • Опубліковано 11 гру 2024

КОМЕНТАРІ • 6

  • @recript1866
    @recript1866 11 місяців тому +1

    サムネイル見てゲーミング用の左手デバイスかと思いましたが、イラスト用でしたか!
    1から設計、制作されるのはすごいですね〜

  • @BAITOSENSI_M.A
    @BAITOSENSI_M.A  Рік тому +5

    プログラムを張っておきます。
    長いですがArduino用なのでコピペしてエディタに張り付ければ使えます。
    #include
    #include
    //エンコーダ設定
    const int Encoder_phase_A=2;
    const int Encoder_phase_B=3;
    volatile int Encoder_pos = 0;
    volatile uint8_t AB_prev = 0;
    static int count_now=0; //スクロールの一度の操作量を制限
    //Joystick設定
    const int Joystick_switch = 9;
    const int Joystick_x_Axis = A1;
    const int Joystick_y_Axis = A0;
    int range = 25; //XY軸動作範囲
    int center = range / 2; //Joystick中心位置
    int threshold = range / 4; //Joystickデッドゾーン
    //Arduino入力ピン割り当て
    const int Key1_input = 4;
    const int Key2_input = 5;
    const int Key3_input = 6;
    const int Key4_input = 7;
    const int Key5_input = 10;
    const int Key6_input = 16;
    const int Key7_input = 14;
    const int Key8_input = 15;
    //入力ピン-入力文字割り当て
    const char Key1='w';
    const char Key2='a';
    const char Key3='s';
    const char Key4='d';
    const char Key5='1';
    const char Key6='2';
    const char Key7='3';
    const char Key8='4';
    //
    #define Key1_Joystick_switch KEY_LEFT_CTRL //ショートカット用:2つ入力
    const char Key2_Joystick_switch = 'z';
    //プロトタイプ宣言
    void Encoder();
    void readAxis();
    void setup() {
    //エンコーダ信号入力:A/B
    pinMode(Encoder_phase_A,INPUT_PULLUP); //プルアップ抵抗を有効化
    pinMode(Encoder_phase_B,INPUT_PULLUP); //プルアップ抵抗を有効化
    //Joystick信号入力:X/Y,switch
    pinMode(Joystick_switch, INPUT_PULLUP);
    pinMode(Joystick_x_Axis, INPUT);
    pinMode(Joystick_y_Axis, INPUT);
    //キー入力
    pinMode(Key1_input,INPUT_PULLUP); //Wキー

    pinMode(Key2_input,INPUT_PULLUP); //Aキー
    pinMode(Key3_input,INPUT_PULLUP); //Sキー
    pinMode(Key4_input,INPUT_PULLUP); //Dキー
    pinMode(Key5_input,INPUT_PULLUP); //1キー
    pinMode(Key6_input,INPUT_PULLUP); //2キー
    pinMode(Key7_input,INPUT_PULLUP); //3キー
    pinMode(Key8_input,INPUT_PULLUP); //4キー

    //ロータリーエンコーダ入力
    attachInterrupt(0,Encoder,CHANGE);
    attachInterrupt(1,Encoder,CHANGE);

    //その他
    Mouse.begin();
    Keyboard.begin();
    Serial.begin(9600);
    }
    void loop() {
    //Serial.println(Encoder_pos);
    //*******エンコーダ設定*******
    if(Encoder_pos == 1){
    Mouse.move(0,0,1);
    }else if(Encoder_pos == -1)
    {
    Mouse.move(0,0,-1);
    }
    Encoder_pos=0;
    //*******Joystick設定*******
    if(digitalRead(Joystick_switch) == LOW){
    Keyboard.press(Key1_Joystick_switch);
    Keyboard.press(Key2_Joystick_switch);
    }else if(digitalRead(Joystick_switch) == HIGH){
    Keyboard.release(Key1_Joystick_switch);
    Keyboard.release(Key2_Joystick_switch);
    }
    Mouse.move(readAxis(Joystick_x_Axis), (-1*readAxis(Joystick_y_Axis)),0);
    //*******キー設定*******
    if (digitalRead(Key1_input) == LOW){
    Keyboard.press(Key1);
    }else{
    Keyboard.release(Key1);
    }
    if (digitalRead(Key2_input) == LOW){
    Keyboard.press(Key2);
    }else{
    Keyboard.release(Key2);
    }
    if (digitalRead(Key3_input) == LOW){
    Keyboard.press(Key3);
    }else{
    Keyboard.release(Key3);
    }
    if (digitalRead(Key4_input) == LOW){
    Keyboard.press(Key4);
    }else{
    Keyboard.release(Key4);
    }
    if (digitalRead(Key5_input) == LOW){
    Keyboard.press(Key5);
    }else{
    Keyboard.release(Key5);
    }
    if (digitalRead(Key6_input) == LOW){
    Keyboard.press(Key6);
    }else{
    Keyboard.release(Key6);
    }
    if (digitalRead(Key7_input) == LOW){
    Keyboard.press(Key7);
    }else{
    Keyboard.release(Key7);
    }
    if (digitalRead(Key8_input) == LOW){
    Keyboard.press(Key8);
    }else{
    Keyboard.release(Key8);
    }
    }
    void Encoder(){
    uint8_t A=digitalRead(2); //A相の信号を読み取る:読み取り値 0 or 1
    uint8_t B=digitalRead(3); //B相の信号を読み取る:読み取り値 0 or 1

    uint8_t AB = (A

  • @koneko_chan_w
    @koneko_chan_w Рік тому +1

    なかなか良さそう😸
    次回作に期待してます。

  • @htsurumi
    @htsurumi 10 місяців тому +1

    完璧ぃ!!とはw

  • @ハミルトンジョー
    @ハミルトンジョー 6 місяців тому +1

    感動した

  • @ganmalt4426
    @ganmalt4426 11 місяців тому +2

    丁度アナログスティック+キーボードのものを探していました!
    もし可能であれば,3Dパーツのデータをアップロードしていただくことは可能でしょうか.