自作改造部
自作改造部
  • 4
  • 5 561
万能の赤外線学習リモコンを自作する
今回はどんなメーカーのリモコンの赤外線信号でもコピーできる、学習リモコンを自作してみました。
サムネはヤマダ電機の広告風。
やかましいですが作るの結構楽しいです。
あと少し良いマイクに変えたらクチャラー&ノイズASMRになりました。
最悪です。
以下、プログラムです。
github.com/aisumegane/
PIC16F1827_copy_remote_controller.X.git
送信時のバグと送信周波数の変更処理は手直し中です。
BGM、その他音源:
MusMusフリー楽曲
・プラスチック・アドベンチャー
DOVA-SYNDROME OFFICIAL
・swing_swing
・Shall_we_meet
・Pappa_Parappa
Elshadai_free_movie
มุมมอง: 236

วีดีโอ

【実験】中華電源モジュールを魔改造してハイパワー化し.....燃えた
มุมมอง 114ปีที่แล้ว
今回は中華モジュールを魔改造して力ずくでハイパワー化できるか試してみました。 結論、燃えた。 結構勉強になりました。 ※修正:オンの間に電流を負荷に流す。 フリーBGM・音楽素材MusMus [Website] musmus.main.jp/ フリーBGM DOVA-SYNDROME dova-s.jp/
【DIY】マイコンを使ってコスパ最強のキーボードを自作する!
มุมมอง 5Kปีที่แล้ว
今回はずっとほしかった左手用キーボードを自作しました。 コメント欄にプログラムを張っておきます。 少し長いですがArduino用なのでパソコンにつないでコピペするだけで使うことができます。 BGM1:musmus.main.jp/ BGM2:dova-s.jp/
【DIY】LED照明を自作しました
มุมมอง 201ปีที่แล้ว
LEDパネルが欲しかったんですが、調光機能付きだと結構お高いので自作してみました。 見た目が、微妙ですがちゃんと使えます

ความคิดเห็น

  • @ハミルトンジョー
    @ハミルトンジョー 4 หลายเดือนก่อน

    感動した

  • @htsurumi
    @htsurumi 8 หลายเดือนก่อน

    完璧ぃ!!とはw

  • @ganmalt4426
    @ganmalt4426 10 หลายเดือนก่อน

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

  • @recript1866
    @recript1866 10 หลายเดือนก่อน

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

  • @koneko_chan_w
    @koneko_chan_w 10 หลายเดือนก่อน

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

  • @BAITOSENSI_M.A
    @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; }