7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MESHを使ってディスプレイ表示(写真・動画)をする方法

Last updated at Posted at 2017-01-12

#やりたいこと
MESH*のアクションとして、ディスプレイ表示を行う

↓実際にやってみた動画はこちら(動画リンクが上手くできていなかったので修正 2017/01/14)↓

*MESHとは、小さな便利を形にできる、ブロック形状の電子タグです。

#必要なもの
・MESHアプリ用スマートフォン
・トリガーに利用するMESHタグ(今回は、動きタグとボタンタグを使用)
・GPIOタグ
・Arduino Leonardo
・usb-miniusbケーブル
・Power Point
・表示機器(PC&モニター or PowerPointが入ったスマートフォン)
・OTGケーブル(USBホストケーブル、スマホで表示する場合のみ必要)
・ジャンピングケーブルなど(MESHとArduinoの配線に必要なもの)

#HOW TO
MESHを使って簡易プロトタイプを作成しているといるとアクションとして、ディスプレイ表示をしたい事が度々あったのでその方法をここにまとめておきます。ソフトを利用できるユーザが多いPowerPointと組み合わせた方法になります。
##システム構成図
MESHタグの部分は好きなタグに変更可能です。

構成図(mesh-arduino-powerpoint).png

##Arduino Leonardoに書き込むプログラム
GPIOから送られる信号を「数字キー + ENTERキー」に変換して、PowerPint側に送ります。
プログラムを書き込む際には、ツール > ボードから「Arduino Leonardo」を選択し、正しいシリアルポートを選択してください。

mesh_arduino_powerpoint.ino
#include <Keyboard.h>

#define MESH_DOUT_PIN_01 7
#define MESH_DOUT_PIN_02 6
#define MESH_DOUT_PIN_03 5

int mesh_val[3] = {0, 0, 0};

int flag = 0;
int pre_flag = flag;

void setup() {
  // put your setup code here, to run once:
  pinMode(MESH_DOUT_PIN_01, INPUT_PULLUP);
  pinMode(MESH_DOUT_PIN_02, INPUT_PULLUP);
  pinMode(MESH_DOUT_PIN_03, INPUT_PULLUP);

  Keyboard.begin();

  delay(5000);
}

void loop() {
  // put your main code here, to run repeatedly:
  mesh_val[0] = digitalRead(MESH_DOUT_PIN_01);
  mesh_val[1] = digitalRead(MESH_DOUT_PIN_02);
  mesh_val[2] = digitalRead(MESH_DOUT_PIN_03);

  flag = calFlag() * 2;

  if (flag != pre_flag) {
    if(flag < 10){
      Keyboard.press('1' + flag);
    }
    else{
      Keyboard.press('1');
      Keyboard.releaseAll();
      delay(100);
      Keyboard.press('1' + flag % 10);
    }
      delay(100);
    Keyboard.press(KEY_RETURN);

  }

  delay(100);
  Keyboard.releaseAll();
  pre_flag = flag;
}


int calFlag(){
  int ret_val = 0;
  ret_val = pow(2, 2) * mesh_val[2] + pow(2, 1) * mesh_val[1] + pow(2, 0) * mesh_val[0];
  return ret_val;
}

##PowerPoint
PowerPointのプレビューモードには「数字キー+Enter」で指定のページに遷移するショートカットがあり、
そのショートカットキーをArduinoから送るようにしています。
仕組みとしては、奇数ページにショートカットキーで遷移して、0秒で次のページに切り替えるという処理を組み込む事で、結果的に偶数ページが表示されるようになっています。そうすることで、再度動画・音楽・アニメーションなどの再生が可能になります。

下記にこのプログラム用のPowerPointのテンプレートをUPしてありますので、ご利用の際はダウンロードしてください。
https://drive.google.com/file/d/0B1pztzhLU2bNVkROMWg1anBLZGM/view?usp=sharing
注意事項は各ページのノートに記載しています。

下図のように奇数ページは利用せず偶数ページのみご利用してください。
powerpoint_sample (2).png
・UIを作る際は、アニメーションの追加をしタイミングを「直前の動作と同時」を選んでください。
・動画・音楽を自動再生するには、アニメーションで再生を追加して、タイミングを「直前の動作と同時」を選んでください。

##MESHレシピ
下図のレシピだと分かりにくいですが、トリガータグから3つのGPIOタグ(DOUT1-3)に繋がっています。
GPIOタグのDOUT1-3ピンのHIGH・LOWの組み合わせることで、Arduinoに信号として送ります(最大8パターン)。
送られた信号は結果的に下記の奇数ページの遷移に対応しています。
meshレシピ.png

##スマートフォンで利用するには
OTGケーブルを利用して下図のように、繋げてください。
One driveで共有すればPCで編集したデータをスマートフォンで再生できます。
データサイズが大きいと上手く動作しない場合があるので、ご注意ください。
P1080004.PNG

7
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?