KZ
bin
Негізгі бет
Қазірдің өзінде танымал
Тікелей эфир
Ұнаған бейнелер
Қайтадан қараңыз
Жазылымдар
Кіру
Тіркелу
Ең жақсы KZbin
Фильм және анимация
Автокөліктер мен көлік құралдары
Музыка
Үй жануарлары мен аңдар
Спорт
Ойындар
Комедия
Ойын-сауық
Тәжірибелік нұсқаулар және стиль
Ғылым және технология
Жазылу
自作改造部
対戦よろしくお願いします。
15:58
【実験】中華電源モジュールを魔改造してハイパワー化し.....燃えた
Жыл бұрын
11:19
【DIY】マイコンを使ってコスパ最強のキーボードを自作する!
Жыл бұрын
12:40
【DIY】LED照明を自作しました
Жыл бұрын
Пікірлер
@Mikan-purin-zeri
Ай бұрын
コメント失礼します。 もしよろしければですけれどraspberry pi pico w(wi-fiモデル)を使って、 htmlファイルを書き、webページからエアコンなどの赤外線信号を送信できるようなものを作ってほしいです。 お願いします。
@ハミルトンジョー
8 ай бұрын
感動した
@htsurumi
Жыл бұрын
完璧ぃ!!とはw
@ganmalt4426
Жыл бұрын
丁度アナログスティック+キーボードのものを探していました! もし可能であれば,3Dパーツのデータをアップロードしていただくことは可能でしょうか.
@recript1866
Жыл бұрын
サムネイル見てゲーミング用の左手デバイスかと思いましたが、イラスト用でしたか! 1から設計、制作されるのはすごいですね〜
@koneko_chan_w
Жыл бұрын
なかなか良さそう😸 次回作に期待してます。
@BAITOSENSI_M.A
Жыл бұрын
プログラムを張っておきます。 長いですがArduino用なのでコピペしてエディタに張り付ければ使えます。 #include <Mouse.h> #include <Keyboard.h> //エンコーダ設定 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 << 1) | B; //A相の読み値を1bit上位に、B相の読み値を下位に配置:2bitの2進数表現 uint8_t ABAB = (AB_prev << 2) | AB; //最新の読み値を下位2bitに配置、[4321]の順に配置 if(ABAB == 0b1101 || ABAB == 0b0100 || ABAB == 0b0010 || ABAB == 0b1011 ) //正回転 { Encoder_pos=1; }else if(ABAB == 0b1110 || ABAB == 0b0111 || ABAB == 0b0001 || ABAB == 0b1000 ) //逆回転 { Encoder_pos=-1; } AB_prev=AB; //現在のA相とB相の組み合わせ(2進数2bit)を保存しておく } int readAxis(int thisAxis){ int reading = analogRead(thisAxis); //値を読み出す reading = map(reading, 0, 1023, 0, range); //ADCの値を実際の範囲に変換 int distance = reading -center; //正負の値に変換 if(abs(distance) < threshold){ distance = 0; //閾値以下なら、Joystickは中心位置にあるものとする:誤作動防止のデッドゾーン } return distance; }