ไม่สามารถเล่นวิดีโอนี้
ขออภัยในความไม่สะดวก

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

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 พ.ค. 2023
  • 今回はずっとほしかった左手用キーボードを自作しました。
    コメント欄にプログラムを張っておきます。
    少し長いですがArduino用なのでパソコンにつないでコピペするだけで使うことができます。
    ****************************************
    BGM1:musmus.main.jp/
    BGM2:dova-s.jp/

ความคิดเห็น • 6

  • @recript1866
    @recript1866 7 หลายเดือนก่อน +1

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

  • @koneko_chan_w
    @koneko_chan_w 8 หลายเดือนก่อน +1

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

  • @BAITOSENSI_M.A
    @BAITOSENSI_M.A  ปีที่แล้ว +3

    プログラムを張っておきます。
    長いですが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

  • @htsurumi
    @htsurumi 6 หลายเดือนก่อน +1

    完璧ぃ!!とはw

  • @user-pd7gu2mr1t
    @user-pd7gu2mr1t 2 หลายเดือนก่อน

    感動した

  • @ganmalt4426
    @ganmalt4426 7 หลายเดือนก่อน +1

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