孤独な社会人の一人遊び
孤独な社会人の日記帳です.

HDMI分配器

ここのところHDMI分配器をいろいろ探した結果、
結局TSdrenaの「1入力2出力 対応 HDMI分配器 スプリッター」が
一番安いっぽいのですが、それでも4000円弱・・・
しかもどうやらACアダプターが必要なようで、

・これ以上足元にACアダプタを増やしたくない。
・2つの画面に同時に出力できる必要はない。

ということでBUFFALOのHDMI切り替え機「BSAK202」を買いました。
IMG_7280.jpg

こいつは2入力1出力の機械式のスイッチで物理的にケーブルを
切り替えるタイプの製品なのですが、分解してちょこっと改造すると
1入力2出力の切り替え器になるというやつです。

改造方法としては下の写真の赤丸で示す
2カ所のダイオードの方向を逆にするだけ。
IMG_7282.jpg

とりあえず無事切り替えられるようになったのですが、
この改造でホントに大丈夫なのかはよく調べてないので
試すときは自己責任でお願いします。

しかしHDMI分配器って需要少ないんですかねぇ?
モニタとTVとかTVとプロジェクタとかで出力を
切り替えたいって結構あると思うのですが・・・



テーマ:趣味と日記 - ジャンル:趣味・実用

HDMI splitter

HDMI分配器が欲しい・・・

今サブ画面はHDMIでFullHDのモニタに出してるんですが、
こいつを2つに分けて新しく買ったTVにも出せるようにしたい。

で、動画みる時とか大画面でなんかしたいときにはTVの方を
使うようにしたいんですが、お手頃なHDMI分配器が見つからない・・・

3入力1出力とかの切り替え器ならいっぱい安いのがあるのですが、
1入力2出力は最低でも3~4千円、しかもあまり在庫がない?

それにしても他は1万円オーバーのばっかりなのはどうしてなの・・・
技術的になんか難しいのかなぁ?それとも需要があまりないのか・・・




テーマ:ひとりごとのようなもの - ジャンル:日記

shelf

TVを置いたら元あったステレオを置く場所が無くなったので
ディスプレイの上に渡す感じの棚を作りました。

IMG_7126.jpg

左側の足が不安な感じですが、右側は隣にある机の棚に
天板を直接固定してるのでまぁ大丈夫かなぁと。
IMG_7129.jpg

材料は全てホームセンター品。材料費は2000円弱。
やはりこういった物は自作に限りますね~(´ー`)

テーマ:趣味と日記 - ジャンル:趣味・実用

TV

TVを買いました。

テレビなんていらねーと周りにはずっと言ってたんですが、
まぁ、アレですね、アイマスとかアイマスとか・・・
あとゲームとかメディアを見るにはやっぱ最近のTV画面
の方がいろいろと良いのかなーと。

で、とりあえず32インチでフルHDのものを買おうと
ちょいと前からいろいろ調べてたんですが、
Xperia arcを買ったりで、ここのところSONY信者に
戻りかけてたのでBRAVIAのKDL-32CX400にしましたー

IMG_7124.jpg

LEDじゃなかったり、倍速とかもありませんが
3Dは要らないし、USBハードディスクつなげば録画も
できるので、値段的にもこれが良いかなぁと(´ー`)


で、ついでに前から欲しかったコードレスヘッドホンも買った。
DS7100 MDR-DS7100ってやつ。

意外とTVよりもこっちの方が感動が大きかったかもw
ヘッドホン着けたままキッチンまで行けるし、ベッドに
寝転がりながらTVも見れるし、音量もソースの切り替えも
耳元で操作できるという便利さ。コレはスバラスィ( ゚Д゚)

この調子で身の回りの物を全て無線化したいなぁ(´ー`)

 


テーマ:ひとりごとのようなもの - ジャンル:日記

USB-LEDコンサートライト

USB-LEDコンサートライト ~PIC側プログラム作成編~

PIC側のプログラムはMicrochipのサンプルプログラム
「USB Device - HID - Custom Demos」を改造して作ります。


「C:\Microchip Solutions v2010-10-19\USB Device - HID - Custom Demos\Generic HID - Firmware」

上記パスの中にPIC用のプロジェクト一式が入ってます。
フォルダごと同じ場所にコピーして適当なフォルダ名をつけます。

で、中にある「USB Device - HID - Simple Custom Demo - C18 -
Low Pin Count USB Development Kit.mcp」を開きます。

今回は最初からPIC18F14K50用の設定なっているのでデバイスや
リンカスクリプトの設定変更は不要。

で、プロジェクトにはなんかいっぱいファイルがあって
何がなんだかよく分かりませんが、大丈夫。
詳しいことは分からなくてもとりあえず動くものは作れますw
正直自分もどのファイルが何をやってるかとか全く分かってませんw

基本的に「main.c」と「HardwareProfile - Low Pin Count USB
Development Kit.h」の一部をちょっと変更するだけで自分の
思い通りのプログラムは作れると思います(´ー`)


それではまず今回使用しているLEDはアノードコモンなので
LEDのポートをONでLowにOFFでHighになるように変更します。

「HardwareProfile - Low Pin Count USB Development Kit.h」の
109行目以下を次のように変更。

  #define mLED_1_On() mLED_1 = 1;
  #define mLED_1_Off() mLED_1 = 0;
      ↓              ↓
  #define mLED_1_On() mLED_1 = 0;
  #define mLED_1_Off() mLED_1 = 1;

また、追加したボタンの設定のため124行目から以下のコードを追加します。

↓--------------------------------------------------------------↓
  #define mInitSwitch2() TRISB &= 0xFF;
  #define button1 PORTBbits.RB6
  #define button2 PORTBbits.RB7
  #define mGetButton_1() PORTBbits.RB6
  #define mGetButton_2() PORTBbits.RB7
↑--------------------------------------------------------------↑

そしてちょいと下の方にある以下の文はコメントアウトしておきます。

  #define mInitSwitch2() //TRISAbits.TRISA3=1



つぎは「main.c」を編集します
ここにもいろいろと書かれていますが、
主にいじるのはmain関数の中とUSBでのデータの
受け渡しを行うProcessIO(void)の中くらいです。


まず初期状態ではUSBの通信状態をLEDで表示しようと
しているのでそれをオフにします。
642行目から書かれている「UserInit(void)」の中の
次の行を以下のように変更します。

 blinkStatusValid = TRUE;
   ↓
 blinkStatusValid = FALSE;

次に初期設定。

main関数内while(1)の前のコードを
以下のコードで置き換えます。

↓--------------------------------------------------------------↓
  unsigned int cnt = 0;
  unsigned char PWM_R = 0;
  unsigned char PWM_G = 0;
  unsigned char PWM_B = 0;
  unsigned char button1_flag = 0;
  unsigned char button2_flag = 0;
  unsigned int count_time = 0;
  unsigned int interval = 5;
  InitializeSystem();
  #if defined(USB_INTERRUPT)
   USBDeviceAttach();
  #endif
  // PORTB 6,7プルアップ
  INTCON2bits.RABPU = 0;
  WPUB = 0xc0;

  // プリセットの切り替え
  if(mGetButton_1() == 1 && mGetButton_2() == 1){
    slot = 1;}
  else if(mGetButton_1() == 0 && mGetButton_2() == 1){
    slot = 2;}
  else if(mGetButton_1() == 1 && mGetButton_2() == 0){
    slot = 3;}
  else{
    slot = 4;}
  // EEPROMからの読み出し
  slot_start = 60*(slot-1);
  for(ecount=0;ecount<60;ecount++)
  {
    EEADR=ecount+slot_start;
    EECON1=0;
    EECON1bits.RD=1;
    color_RGB[ecount]=EEDATA;
  }
  EEADR=239+slot;
  EECON1=0;
  EECON1bits.RD=1;
  preset_num=EEDATA;
↑--------------------------------------------------------------↑

で、while(1)の中に以下のコードを追加。
↓--------------------------------------------------------------↓
  // ボタン1が押されたとき
  if(button1_flag == 0 && mGetButton_1() == 0)
  {
    button1_flag = 1;
    color++;
    if(color > preset_num-1) color = 0;
    interval++;
    count_time = 0;
  } 
  // ボタン2が押されたとき
  if(button2_flag == 0 && mGetButton_2() == 0) 
  {
    button2_flag = 1;
    color--;
    if(color < 0) color = preset_num-1;
    if(interval>0)interval--;
    count_time = 0;
  }
  // 両方のボタンが同時押しされたとき
  if(button1_flag == 1 && button2_flag == 1)
  {
    delay_ms(200);
    mLED_1_On();mLED_2_On();mLED_3_On();
    delay_ms(200);
    mLED_1_Off();mLED_2_Off();mLED_3_Off();
    delay_ms(200);
    mLED_1_On();mLED_2_On();mLED_3_On();
    delay_ms(200);
    mLED_1_Off();mLED_2_Off();mLED_3_Off();
    mode++;
    interval = 5;
    count_time = 0;
    if(mode > 2) mode = 0;
  }
  // ボタンはなしたとき
  if(button1_flag == 1){
    if(mGetButton_1() == 1){
      button1_flag = 0;}}
  if(button2_flag == 1){
    if(mGetButton_2() == 1){
      button2_flag = 0;}}
  // モード別RGB設定
  // 1.プリセットモード
  if(mode == 0)
  {
    R = color_RGB[3*color];
    G = color_RGB[3*color + 1];
    B = color_RGB[3*color + 2];
  }
  // 2.自動&ボタン調光モード
  else if(mode == 1 || mode == 2)
  {
    if(mode == 1 && count_time++ == interval){
      count++;
      count_time = 0;}
    else if(mode == 2 && button1_flag == 1){
      if(count_time++ == interval){
        count++;
        count_time = 0;}}
    else if(mode == 2 && button2_flag == 1)
      if(count_time++ == interval){
        count--;
        count_time = 0;}}
 
    if(count >= 1536) count = 0;
    else if( count < 0) count = 1536;
    if(0 <= count && count < 256){
      R=255;G=count;B=0;}
    else if(256 <= count && count < 512){
      R=511-count;G=255;B=0;}
    else if(512 <= count && count < 768){
      R=0;G=255;B=count-512;}
    else if(768 <= count && count < 1024){
      R=0;G=1023-count;B=255;}
    else if(1024 <= count && count < 1280){
      R=count-1024;G=0;B=255;}
    else if(1280 <= count && count < 1536){
      R=255;G=0;B=1535-count;}
  }
  else{
    // その他は何もしない
  }
  // PWM調光
  cnt = 256;
  PWM_R = R;
  PWM_G = G;
  PWM_B = B;
  if(PWM_R) mLED_1_On();
  if(PWM_G) mLED_2_On();
  if(PWM_B) mLED_3_On();
  while(cnt--)
  {
    if(!(PWM_R--)) mLED_1_Off();
    if(!(PWM_G--)) mLED_2_Off();
    if(!(PWM_B--)) mLED_3_Off();
  }
↑--------------------------------------------------------------↑

最後にProcessIO(void)の中のswitch(ReceivedDataBuffer[0])の中の
case文を一旦全部削除した後に以下のコードを追加。

↓--------------------------------------------------------------↓
// PC制御モード(mode=3)へ
  case 0x80:
  mode = 3;
  break;
  // LED調光
  case 0x81:
  R = ReceivedDataBuffer[1];
  G = ReceivedDataBuffer[2];
  B = ReceivedDataBuffer[3];
  break;
  // EEPROM書き込み
  case 0x82:
  slot = ReceivedDataBuffer[1];
  preset_num = ReceivedDataBuffer[2];
  slot_start = 60*(slot-1);
  for(count=0;count<60;count++)
  {
    INTCONbits.GIE = 0;
    EEADR=count+slot_start;
    EEDATA=ReceivedDataBuffer[count+3];
    EECON1=0;
    EECON1bits.WREN=1;
    EECON2=0x55;
    EECON2=0xaa;
    EECON1bits.WR=1;
    while(EECON1bits.WR==1);
        INTCONbits.GIE=1;//割り込み許可
    }
  // プリセットカラー数の設定
  INTCONbits.GIE = 0;
  EEADR=239+slot;
  EEDATA=preset_num;
  EECON1=0;
  EECON1bits.WREN=1;
  EECON2=0x55;
  EECON2=0xaa;
  EECON1bits.WR=1;
  while(EECON1bits.WR==1);
  INTCONbits.GIE=1;
  if(!HIDTxHandleBusy(USBInHandle))
  {
    ToSendDataBuffer[0] = 0x82;
    USBInHandle = HIDTxPacket(HID_EP,(BYTE*)&ToSendDataBuffer[0],64);
  }
  break;
↑--------------------------------------------------------------↑


以上、Project→Build AllでHEXファイルを作成。
HIDBootLoader.exeで作成したHEXファイルを
書き込めば完成ですー

・・

・・・・


はい、なんか途中から説明書くのがめんどくさくなりましたw
不明点があればコメントでご質問ください(´・ω・`)


ちなみにこのままではEEPROMにプリセットカラーが
登録されていないためプリセットモードは不完全です。

PC側プログラムもそのうち公開予定なのでしばしお待ちを・・・

テーマ:趣味と日記 - ジャンル:趣味・実用

プロフィール

yytune

Author:yytune
孤独な毒男です
いろいろ多趣味だけどどれも中途半端なのが悩み

Cover_Creator最新版

製作物一覧

[fg]マイホーム

カテゴリ

カレンダー

04 | 2011/05 | 06
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

月別アーカイブ

最新記事

最新コメント

最新トラックバック

リンク

検索フォーム

RSSリンクの表示

メール

メールはこちらからどうぞ。

ブロとも申請フォーム