3DCG屋さんの活動記録

PROFILE ★★こんな人です

3DCGを活用した映像や没入体験コンテンツの制作をしています。テクノロジーの社会実装に興味があり。テクニカルディレクター。面白いこと新しいことにワクワクする気持ちに『素直』でいつづける。

ラベル Arduino の投稿を表示しています。 すべての投稿を表示
ラベル Arduino の投稿を表示しています。 すべての投稿を表示

2020年2月13日木曜日

Arduino pro Mini にアップロードできないエラーはWindowsで解決!(雑メモ)


Macで色々やってもダメでした。
で、最終的にここのやり方+最新情報に更新してみる


最後にデスクトップにコピーした D2XX の中身を usr/local/lib にコピーするのは
以下のコマンドに修正!

sudo cp Desktop/D2XX/libftd2xx.1.4.16.dylib /usr/local/lib/libftd2xx.1.4.16.dylib@

シンボリックリンクを作る
sudo ln -sf /usr/local/lib/libftd2xx.1.4.16.dylib /usr/local/lib/libftd2xx.dylib@

が、なぜかゆうこうにならない?

kextstat | grep ftdi

しても

sudo kextload ftdi だったかな

しても
ドライバーが有効になりません。
Apple純正ドライバーを戻そう、と思ったがごみ箱は空!がびん


注意
ソース元 binフォルダはないので、ファイル名で検索すると確実。
該当ファイルはダウンロードしたD2XXドライバーのバージョンと同じです。

注意
もとあるAppleFTDIDriverは削除しない!あくまで無効にする。
・・・私は勢い余って削除してしまったので、気づいた時には時すでに遅し。。。
AppleDriverをさがすも見つけられず、とほほであきらめました。




サイト
上記ブログにもリンクあるけど一応
VCPドライバー
D2XXダイレクトドライバー、D2XXHelper



ーーーーーーーーーーーーーーーーーーーーーーーー


結論

私の今の力では、MacbookProでFTDIを使うことはできませんでした。
といことで、WINDOWSでやってみたら・・・できた!!!

あぁ、やっぱりそういうことね。
ハードの開発はWINDOWSがよさそうです。
肝に銘じておきます。

あとArduino pロ ミニニハビルドインLEDはないこと注意


以上!


あ、FTDIとAruinoprominiのピンの接続は大事!
最後の最後でこれを間違えてて3時間ほど費やしてしまった汗

とくに正規品じゃないArduinoはピンが逆になった足りするから注意!





2020年2月1日土曜日

Mac Sierraで Arduino pro mini にアップロードできない問題


購入したUSB-serial変換のFTDIは
232RLでした。


最初の一回はできた、てことでこれ。
https://qiita.com/hnw/items/9aea266b791f8d56b962

でも、おかしい
新たにFTDIドライバインストールしても。。。有効になってない

$ kextstat | grep -i ftdi

  150    0 0xffffff7f8332e000 0x6000     0x6000     com.apple.driver.AppleUSBFTDI (5.0.0) 51DB3F7C-B15A-3FD2-B57D-58547464BF8A <99 19 5 4 3 1>

apple純正のみ。



別で検索。。


まず macに最初から入っているドライバを削除しよう!!
https://qiita.com/gwappa/items/88ea7a183ee2e8d30791


macにはappleのドライバが入っている
https://forum.arduino.cc/index.php?topic=427825.0

⬛️ドライバのインストール状況確認
$$ ls -lctr /Library/Extensions/

...
drwxr-xr-x  3 root  wheel  102  7  8  2017 CIJUSBLoad.kext
drwxr-xr-x  3 root  wheel  102  7  8  2017 BJUSBLoad.kext
drwxr-xr-x  3 root  wheel  102  1 24 02:59 FTDIUSBSerialDriver.kext

⬛️

$ cd /System/Library/Extensions
$ ls -f
...

AppleUSBFTDI.kext



⬛️リネームして無効化
$ sudo mv FTDIUSBSerialDriver.kext FTDIUSBSerialDriver.bkup
Password:

mv: rename FTDIUSBSerialDriver.kext to FTDIUSBSerialDriver.bkup: No such file or directory

https://ascii.jp/elem/000/000/544/544198/




FTDI 2xxのドライバ
mac 10.4以降の欄 右端にあるリンク
動画ガイド
https://www.youtube.com/watch?v=Ir2PVz1870E&feature=youtu.be


$cd ~/Desktop/D2XX/libftd2xx.1.4.16.dylib
$ sudo cp ~/Desktop/D2XX/libftd2xx.1.4.16.dylib .
$ sudo ln -sf libftd2xx.1.4.16.dylib libftd2xx.dylib
$ cd /usr/local/lib
$ sudo cp ~/Desktop/D2XX/libftd2xx.1.4.16.dylib .
$ sudo ln -sf libftd2xx.1.4.16.dylib libftd2xx.dylib
$ cd ~/Desktop/D2XX/Samples/

$ make

ここでエラー、進まない><;

うまくいけば、この後Apple純正ドライバの削除までやっている。
---------------------





⬛️まとめ
まずmacに入っているドライバの確認
純正だったらドライバの削除
FTDI公式ドライバのダウンロードとインストール
再起動
ドライバの確認

2019年5月23日木曜日

Arduino Unoでキーボードとして文字入力!その1


まずこれで
L地下、ボタンでLED点灯テスト
よしよし


次にキーボード入力するぞ!
http://eucalyn.hatenadiary.jp/entry/original-keyboard-05  
が、keyboardのコマンドがつかえない・・






あ!UnoはUSBデバイスで認識されないからキーボードにできない!だと!?

まじかぁ。







でもファームウェアを書き換えることでUSB HIDデバイスとして認識されるようになるらしい。
・・・色々調べた僕の理解




キーボードとしてArduino使いたい
<必要なこと>
ボタンを押したらキーボードの挙動をするスケッチをArduinoに書き込み
Arduino自体がPC側でUSB HIDデバイスとして認識される必要がある

①は普通にIDEで書き込めばいいけど
②が問題。UnoはUSB HIDで認識されないファームウェアである。

諦めるな!USB HIDで認識されるファームウェアに書き換えればOK!
(え?ファームウェアって勝手に書き変えれるの?そうみたいです)

書き換え用のファームウェア(USB HID認識されるやつ)をダウンロード  
Atmel FLIPというソフトダウンロード&起動して③で書き換え。(Arduinoの指定の端子を短絡しながら書き換え!)




以上!



ファームウェア書き換え完了したので、
USB HIDで認識されるようになった
=書き込んだスケッチの通りキーボードとして機能する!




イエーーイ!^^





※ここで注意
ファームウェアの書き換えはせいぜい100回ほど・・・(非推奨な行為のため)
しかも、スケッチを書き換えるためには元のファームウェアに書き換え戻す必要あり






え?





おいおい、それはつまり、、、



キーボードとしてのスケッチの書き換え&検証のたびにファームウェアを書き変える必要ありってこと?
あっというまに100回とかいくでしょ。。





つまり、実際はやめとこう!ってことじゃん。



USB HIDとして認識させたい(=キーボードとして使いたい)なら、最初からファームウェアが対応しているものを使いましょうってこと!
Arduino Leonald か Micro 


なるほどー









私も手持ちがUnoでどうしてもキーボードとして使いたかったので
ファームウェアの書き換え作業を進めてましたが、
ギリギリのところで「※注意 スケッチの書き換えには、元のファームウェアに戻す必要あり」を知り、中断しました!!!


といことで Microで試しましょう。


<補足>
・③はArduino-keyboard-0.3.hex
・④はFLIP 3.4.7 for Windows (Java Runtime Environement included)

・Flipの起動でエラー出たときはJavaインストールしたら解決した

順を追ってキャプチャ画像貼ります。

Flipのインストール画面



Flipの起動画面・・・なんとエラー!?



落ち着いてエラーメッセージ見て、Javaをインストールすることに。




 そうしたらFlip起動できた^^





まぁ、結局使わなかったんですけどね。






------------------------------------------------------------------------------------------------------


参考サイト

2019年4月12日金曜日

Arduinoと超音波センサーとProcessingで簡易モニター 検証


検証備忘録


仕事でAftereffecstのモーショングラフィック作業してるとき
ふと「キーで気持ち良いボヨヨンとかの動きをさっと作りたいので、PysicalUI作りたい。USB繋げてすぐセンシングして、テキストファイル書き出しして、AEにコピペして」みたいな完全オリジナルPUI作りたいと思って

帰ってから検証して見たのメモ。


実験
Arduino UNO + 超音波センサー
Processing + 可視化グラフ(まずは)

手を自由に動かしてインタラクティブにグラフ確認と、テキスト出力までしたい


結果
全然ダメ

超音波センサーは手のひらでセンシングすると20〜30cmくらいでもうノイズ目立ってくる。
まぁノイズなら調整で正せるかもだけど、反応性が悪い気がする。ついてこない。
(スケッチの問題だと思われる。時間かかるのでまた今度)



次のチャレンジ
MIDIコントローラのスライダーと
Processingを繋げてインタラクティブなUIとテキスト出力
したい!
➡️ここを参考にしてやりたい



とりあえず、今回試したスケッチはこちら。


Arduino



//********************************************************************
//*超音波センサを使って距離を表示するプログラム
//********************************************************************
//********************************************************************
//*超音波センサを使って距離を表示するプログラム
//********************************************************************
#define echoPin 3 // Echo Pin
#define trigPin 5 // Trigger Pin


double Duration = 0; //受信した間隔
double Distance = 0; //距離
void setup() {
Serial.begin( 9600 );
pinMode( echoPin, INPUT );
pinMode( trigPin, OUTPUT );
}
void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite( trigPin, HIGH ); //超音波を出力
  delayMicroseconds( 10 ); //
  digitalWrite( trigPin, LOW );
  Duration = pulseIn( echoPin, HIGH ); //センサからの入力
  if (Duration > 0) {
    Duration = Duration/2; //往復距離を半分にする
    Distance = Duration*340*100/1000000; // 音速を340m/sに設定
    Serial.print(Distance);
    Serial.write("\n");
  }
  delay(1); //シリアルモニタで確認するときは100
}




Processing
/*
 * Arduino - Processingシリアル通信
 * センサーの値をグラフにプロット
 * Processing側サンプル
 */
import processing.serial.*;


int NUM = 1; //センサー個数。今回は1個。「ショックセンサーの例」では2個
Serial myPort; // シリアルポート


float sensors = 2; //センサーの値を格納する配列
int cnt; //カウンター


// グラフの線の色を格納
color[] col = new color[6];
int pSize = 2;  //異なる2つのプロットサイズで


void setup() {
  //画面設定
  size(1600, 400);
  frameRate(240);


  // シリアルポートのリスト取得
  //println(Serial.list());
  // ポート番号とスピードを指定してシリアルポートをオープン
  String portName = Serial.list()[1];
//  myPort = new Serial(this, portName, 9600); //Win
  myPort = new Serial(this,"/dev/cu.usbmodem1421",9600); //Mac
  // 改行コード(\n)が受信されるまで、シリアルメッセージを受けつづける
  myPort.bufferUntil('\n');
  //グラフ初期化
  initGraph();
}


void draw() {
  // センサーの数だけ、グラフをプロット 。今回は1個。複数個のときは「ショックセンサーのプログラム参照」
  fill(col[1]);
  float tx = map(cnt, 0, width, 10, width); //左に余白10
  float ty = map(sensors, 0, 100,height-10,10); //上端がy=0のため、下端をベースに描画するにはこのリマップ← ※上下余白 100
  ellipse(tx, ty, pSize, pSize);
  if (cnt &gt; width) {
  initGraph();
  }
  //カウンタアップ
  cnt++;
}


//グラフの初期化
void initGraph() { 
  background(47);
  noStroke();
  cnt = 0;
  // グラフ描画の線の色を定義
  col[0] = color(255, 127, 31);
  col[1] = color(31, 255, 127);
  col[2] = color(127, 31, 255);
  col[3] = color(31, 127, 255);
  col[4] = color(127, 255, 31);
  col[5] = color(127);
}


void serialEvent(Serial myPort) {
  // シリアルバッファーを読込み
  String myString = myPort.readStringUntil('\n');
  // 読み込んだ文字列を 小数(数字)に変換して、関数に代入
  sensors = float(myString);
}





-----------

参考サイト
今後「Arduinoからのシリアル通信結果をProcessingでテキスト出力」はこれまんま
https://kenyu-life.com/2018/11/24/pulsesensortxtdata/




2019年2月8日金曜日

CHOP Execut DAT がめちゃんこ便利


はい、TDでPython使ってスクリプト作りたいと一念発起してから、早3日。
(あれまだ3日?わら)

Script DAT
Script CHOP
Text DAT

どれもいまいち使い方わからんな〜って思ってましたが

僕のやりたいことは全て CHOP Execut DAT でできる!(誇張)


てことでメモ。


やりたいことは・・・

ArduinoでFirmata使ってTDと接続するとき
プロジェクト開くたびに設定がリセットされてて困ってました。

毎回ちまちま設定するのめんどくさ過ぎるし・・・

てことでPythonスクリプト作って

ボタン押せば自動でFirmataの初期設定行う!

(前回の設定をテキストで保存までさせたいな)
ってことをさせたい。


そのために必要なことは

①ノードのパラメータを自動で入力

②ボタン押すとPythonスクリプト実行


の2点。


①はとりあえず







②は、今回メインのCHOP Execute DATで
こんな感じ



既存のCHOPを組み合わせたほうが、シンプルだったり視覚的に見やすくなるかも
でも、TDでやりたいのはフィジカルセンサーとの連携で、
そのためにはシリアル通信とかDATが必須となってPythonが必須になるので
今のうちからPython活用の練習していきます。

Pythonは完全独学だから基礎がなってないので誰かアドバイスくださいw
Mayaとかで時短ツールをScriptにして作ってたけどまだまだ浅い・・・



今年こそはいろんなスキルを総動員して

インタラクティブ・空間・全身体験

なコンテンツ作るぞ!!!!



2018年8月22日水曜日

touchdesigner でいろいろつなげてみた


今回は、今までちょこちょこ機能を勉強してきたTDで、今の自分でできる「やりたいこと」を盛り込んでみた。

・Arduinoつなげてボタン入力、LED制御
・↑はFirmataでやる
・OSCで制御
・音ならす(422Hz)
・音楽に連動した動き

ていうのをやってみた。
備忘録。




おお!
たのしい。

できたこと。

★ArduinoをFirmataでつなげて、
アナログ出力 =ボリュームつまみの抵抗値を8bit(1024段階)で取得!
デジタル入力 =ボタンスイッチを1bit(ON/OFF)で取得!
デジタル出力(PWM) =LEDの明暗を8bit(1024段階)で制御!

★OSCで
デジタル入力 ON/OFFボタン
デジタル入力 スライダー

★Touchdesignerの
Oscillator CHOP  で単音(?)発生&ボリュームつまみで音程制御。
Audio関係のOPつなげて、低音の大きさに連動してLED赤を点滅。




以上。

ただ、ボタン押してる間だけ単音出るようにしたんだけど
タイムラグがある・・・OSCでもArduinoでもキーボード入力でもだったので
OscillatorCHOPに問題がある??
違和感なくレスポンスよく音が出るように改良したい。


-------------------------
参照サイト

◆touchOSCの信号が受信されない
PC側のセキュリティソフト問題でした。
ソフトの設定から解決!
https://www.ch-otsu.com/app/1559/



2018年7月21日土曜日

Arduinoで赤外線リモコン 拡張! その1


別の部屋にあるAVアンプ(赤外リモコン)を制御する!

リモコン押す
⬇️
Arduino1 赤外線受信 & データ送信
⬇︎
ワイヤー
⬇︎
Arduino2 データ受信 & 赤外線送信
⬇︎
別室のアンプが赤外線を受信(音量変更)


参考サイト
まずはIRセンサーが生きてるか確認。
で、GitHubからDL!お世話になりました!
http://arakaze.ready.jp/archives/4245

http://arakaze.ready.jp/archives/4245

==========-
受信を確認しながら、送信をパルスで送りつづける
なんてのは普通のLOOPではできない!
ということで、割り込み処理に挑戦だ!

割り込み処理で受信と送信をリアルタイムに同時に
http://play-arduino.seesaa.net/article/422913405.html


プログラムをなんどもなんども確認して、
また、受信と送信を分けてネットのスケッチを参考にして
http://4009.jp/post/2016-08-23-summer/

ここの、受信センサーは受けるとLOW、常時はHIGHだとは気づかなkッタ><;
センサーとLEDを同じHIGHでやってはだめだッタ
http://310web.ddo.jp/led_kairo/pic_kairo/e_51_sekigai/index.html

が、だめだ。
これたぶんんLEDの出力が弱いせいだ
https://www.miniinthebox.com/ja/p/38khz-arduino-compatible-ir-infrared-transmitter-module_p903311.html?prm=2.18.104.0

正直微かにしか光っていない
強いのを買おう

で結局作ったのはこれ
//http://4009.jp/post/2016-08-23-summer/
//
volatile int state = 1; // 赤外線センサの入力値格納変数割り込み用の宣言
const int OUT_PIN = 13; //赤外線出力のピン設定

void setup()
{
  //赤外線出力のPIN設定
  pinMode(OUT_PIN, OUTPUT);
  //赤外線センサが反応している間ずっと割り込み設定
  attachInterrupt(0, ir, LOW);
}

void loop()
{
    // 赤外線センサがHIGHなら実行し続ける=赤外線発し続ける
    if (state == HIGH) {
        state = LOW;
        digitalWrite(OUT_PIN, HIGH);
        delayMicroseconds(8); //26μsのデューディー比3ぶんの1だけHIGH
        digitalWrite(OUT_PIN, LOW);
        delayMicroseconds(18);
       }
}

//割り込み処理 関数
void ir(){
  state = HIGH;
  delayMicroseconds(26);
}
=============


いやぁ
電子工作のブラウザシミュレーション使うか
http://d.hatena.ne.jp/nowokay/20171106

あー、色々調べると
赤外線LEDと抵抗、トランジスタを組み合わせないといけない
そしてLEDを明るくするには流す電流を増やすだけ、なるほど。
じゃあArduinoのモジュール赤外線LEDの方が良さそう。

-------------------

ということで、秋葉原の電子部品屋さんへ・・・
一応50mAの赤外線LED購入(今の赤外線LEDはmA不明)。
ただ、店員さん曰く「リモコン用で売ってる赤外線LEDなら強度不足より、プログラムを疑う方が良いと思います」、なるほどー!!!!!

というわけで、モジュール(ハード)か、赤外線送信プログラム、赤外線受信プログラム、どこがおかしいかを順番に確認することに。

で、1ヶ月かけてようやく Arduinoで赤外線送信 -> アンプで受信(音量変化)ができた!
以下ワークフロー。


【備忘録】キーワード
・やっぱりライブラリ IRremote は優秀
・IRrecvDumpV2で受信。リモコンから受信してシリアルモニターに表示①
・シリアルモニターでRawDataをコピー②
・IRsendRawDemoで送信。上の信号をペースト③
 →赤外線送信でアンプが反応!!(感動)


よしよし!
ハード部分に問題はなかった。
あとは、今2つのスケッチでやったことを
1つのスケッチにまとめ、1台のArduinoで実現する。

続きはまた今度・・・ふぅ







2017年12月31日日曜日

BlenderGame に ArduinoからSerialでボタン入力! その2


pyserial  inWaiting() でデータ受信の確認してる
https://www.youtube.com/watch?v=k2prOyRfimg&t=168
受信バッファとは http://www.7key.jp/nw/tcpip/tcp/window.html

pyseialのオプオプション(Serialオブジェクトのメソッド)
https://github.com/whosaysni/pyserial-doc-ja
http://pythonjp.osdn.jp/contrib/pySerial/README_JP.txt

とりま、Arduinoのボタン押してる間だけ動く、システム作成
Arduino
Blender Python
でそれぞれ設定


ちなみに、Arduinoでpyserialの送信で改行したいとき
必要な "\n" のバックスラッシュ。
Macでは 『option + ¥』 で 入力できる!


で、なぜかボタンを離しても一定時間信号受信してる。
シリアルモニターを同時起動すると、離した時に信号切れる・・・
おそらく、改行込みで送信した文字列が、受信バッファに溜まって
フレームレートの異なる環境(ArnordoとBlender)でずれる。



=========
Arduino
=========

===================
Blender python (for BGE)
===================



================================
★スイッチ離したら重力で落下
 motionにz 0.2 を追加。
 おさるの右端タブでStatic を Rigidに変更
Bulled(物理演算)参考サイト

★GameSatrtのショートカット  キーボードのP
ショートカットまとめサイト


★Python使ってScaleの変動Logic


オブジェクトのScaleをPythonで変化させるのは
cont.owner.localScale.x
もしくは
cont.owner.localScale=[Ax,Ay,Az]

================================



えーと色々と書きましたが、まとめます。

試行錯誤の結果・・・

Arduinoのボタンを押している間だけBlenderで処理を実行
※ボタンOffが遅延することなく

ができました!!!!!!!

ArduinoとBlenderPythonの内容は以下の通り。

=========
Arduino
=========
上記のスケッチでOk

===================
Blender python (for BGE)
===================





 
Arduinoのボタンを押している間だけ、処理実行。
処理:回転&スケール3倍
重力適用しているので、処理終わると下に落ちる





2017年12月25日月曜日

BlenderGame に ArduinoからSerialでボタン入力! その1


前回から時間が経ったので、まずは復習&確認から


⑴まず、ArduinoでボタンのONOFFチェック(Lチカ=LEDチカチカテスト)
  ・・・サンプルスケッチからテスト。ok。なんて基礎からするんだと、悲しいw
     ※参考




⑵次に、Blenderでpyserialがimportできるかチェック。
  ・・・lenderでpySerialが使える設定が完了
     



⑶次に、Blenderでpython使ったlogicの復習
   ・・・sensor Always,  controller Python,  actuator  Logic
                  実にシンプル





⑷上記の基礎の復習を終えて、ここからが今回の本題!
 Arduinoのボタン入力をSerialに送り、Blenderでpyserialから取得、Cubeを回す

まずは、Arduino、ボタン押したらserial出力するスケッチ↓


//Arduinoでボタン押すとシリアルそうしん &LEDテントウ


const int buttonPin = 2;
const int ledPin = 13;
int buttonState = 0;

void setup(){
  pinMode(buttonPin,INPUT);
  pinMode(ledPin,OUTPUT);
  Serial.begin(9600);
}


void loop(){
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH){
    Serial.write("1");
    digitalWrite(ledPin,HIGH);
  }else{
  
    digitalWrite(ledPin,LOW);
  }
  delay(30);
  
}



次に、Blender python で serial通信を受信してfor文を実行するやつ

が、うまくいかず・・・

その前にまずは、pythonの関数を実行するテスト

Aキーを押してる間だけおサルが回転するLogic
のはずが、なぜか回転が止まらない
printはちゃんと押してる間だけ出力されてる。
理由は分からず、、、調べときます!

ちなみにPythonは作成したあと画面下パネルのTextから保存して、読み込んでます。
あと関数は()をつけないとだめ!



ちなみにこちらがpyserial with Blenderの参考



以上、続きは今度。

・Pyserialのreadを含む関数、を呼び出すPython作成










2017年11月2日木曜日

ArduinoとBlenderGameをSerialでリアルタイム通信 その1


iPhone -> OSC(iPhoneアプリ) ->   Blender(PC) の通信は成功。


iPhoneではなく
物理インターフェースと Blenderを接続するのにSerial
で試す。

ここで、以前やって見た
Arduino ->  Serial -> Blender の記事はこちら(2016年4月)
ちなみに、前回はArduinoの入力インターフェースでBlender制御。
今回やってみるのは逆の流れで、
Blender内の変化をArduinoにつなげたLEDに反映してみる。


ちなみに、OSCの方が他の機器との汎用性ありそうなので、
OSC on Arduino をやりたいが、イーサネットシールドが必要…持ってない。。

どうせPCと合わせてArduino使うんだからPCのネットワーク機能使えばいいじゃん!
つまりArduinoの信号をProcessingでOSCに変換して実現したい…この辺かな


Arduino -> OSC (Processing) ->  Blender 
はまた今度!

今回は

Blender ->  Serial ->  Arduino LED

の確認。
ちなみに以前の記事で

Arduino ->  Serial ->  Blender

も実現してるのでどうぞ。
特にBlender内のPythonで pyserial をimportするところでつまづいたので
参考にすると良いかもです。

なお今回は、基本的にこちらを参照しました!

細かいトラブルシューティング


◆MacでシリアルポートがCOMじゃない!
→/dev/cu.usbmodem1411
 Arduinoのツールか、macのターミナルから確認できる
 
◆BlenderGameのロジックでpythonを使用する
その場で作るpython か pythonファイルを参照

◆Blender 2.79 はPython3.5!
→MacにPython3.5インストール


.
.
.

BlenderのPythonで serial が読み込まれない
続きはまた





続きはその2で!
BlenderのPythonにpyserialを追加する方法もアルよ。




Arduino Blender & Maya Serial通信テスト(Facebook内容転載)


Facebook記事を転載(2016年4月時点の情報です)

Arduino  ->  Serial  ->   Blender
========================

▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
          for Mac
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

【Mac で pyserial】 ★★★
pyserialが動かんわ!!!!かれこれ1ヶ月近くになる
import serialはOKでも、その次serial.Serialが通らない。。
Arduinoにシリアル通信、、できない。
というわけで、win64では諦め、
とりあえずmacで。Blender + pyserialを確立したい
とりあえずmacのpython+Blender環境を刷新。
Blender 2.77に。
python3.5インストール

macにはpython2.7が標準インストールされてるので
それ以外をアンインストール。
●アプリケーションから削除
●アプリケーションに表示のないpythonを削除
  移動/フォルダへ移動 から以下のパスを
/Library/Frameworks/Python.framework/Versions/
 例えば3.4のフォルダを削除して3.5を入れるとかするときなど

pythonの最新版3.51を公式サイトからインストール

pipのインストール
macのターミナルから
easy_install pip
sudo pip3 install pyserial
ここで結果pyserialのインストール先が表示されるので確認
pyserial in /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages
④Blender起動
sys.version
sys.prefix
sys.path.append("ここにserialのパスを入れる")



▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

ようやく安定して使えるようになってきた(^^)

安定の使用手順

①Arduino電源再起動(USB抜き差し)
②Blender再起動
③Scriptで一度RunScriptする (シリアルポートの認識?)
  ここでArduinoが反応してチカチカします
④Blender再生→OK



▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

Blender でオブジェクトの位置を変数化、
それをpyserialでシリアル通信する。
→Blenderのオブジェクト位置からLEDの明るさ制御


ser.write(b"値.") の値に変数を入れるのに苦労。。。encodeで解決。理由はまだわかりません!!!わら
あと、若干LEDがチカチカするのが気になるけどまた今度

====以下=======================================
import bpy
import serial
import math
ser = serial.Serial("dev/cu.usbmodem1421",9600)

def my_handler(scene):
height = bpy.data.objects['Cube'].location.z
val = math.floor(height)
outPut = str(val)+"." #ArduinoSerialInput needs "." at last
ser.write(outPut.encode())

bpy.app.handlers.frame_change_post.append(my_handler) # Tells blender to load "my_handler" on every new frame

=============================================


<特に pyserial 関係のトラブルシューティング>


blender でpyserialが読み込まれない。。。
原因はBlenderコンソールという、
Blender専用のpythonエディタ上で作業していたから。Mayaも一緒かな?
というわけで、コンソールからフォルダを指定してModuleを読み込めば使えるのか?というわけでエラー時の対処法まとめ


pythonの保存場所は次のコマンドで
import sys
sys.prefix



「Blender のpython」でpip及びpyserialをインストール(ファイルをコピペ?)しなきゃでした ><



▪️
▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️
       for Windows

▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️▪️

【Win で pyserial】 ★★★
・・・pyserialがどーしても使えない(インストールできない)ので
思い切ってpythonのインストールをはじめから。

①完全にアンインストール (最後にフォルダ残りかすも削除)
②新規インストール
ここまでで3分
③pip install pyserial をcmdで実行。OK
    しかしpipのアップグレードしてとのことで言われるままにアップデートを実行。が、その後再度pyserialインストールしようとするが更新されていない感じ。もしかしたら、さきにアップグレードするべき?

=========================
てか、mayaでもpyserialつかえた!!キタコレーー!!!!
★★★★★★★★(´艸`*)★★★★★★★★★★


④site-packagesのsrialフォルダをコピー
⑤mayaのpythonフォルダのLib/site-packagesフォルダがあるので貼る
※ちなみにmayaでsys.prefixでpythonフォルダしらべる
⑥あとはArduinoをインストールして接続(ポート認識のため)
⑥あとはblenderのときとおなじ

import serial
serial.Serial("COM3",9600)

今までは余計なことたくさんしててファイルがおかしくなってたぽい。。クリーンインストールしたら何も問題なさそう(^o^)/

=============================
Windowsでpipのエラー出たとき、
cmdで
python -m pip install

これで一旦反応見る。
必要ならpipのアップグレード。

その後
python -m pip install pyserial
==============================


Mayaでオブジェクトの位置からLEDのPWM制御は完成!
あとはpython APIで処理速度を高めるとこまでマスターしたい。


以下プログラム
◆Arduino
char input[4]; //受信した文字列の格納
int i = 0; //文字数のカウンタ
int val = 0; //受信した数値(変換後)
int ledVal = 0; //LEDにPWM出力する値

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(3,OUTPUT);
pinMode(13,OUTPUT);
}

// シリアル通信で受信したデータを数値に変換
int serialNumVal(){
// データ受信した場合の処理
if (Serial.available()) {
input[i] = Serial.read();
// 文字数が3以上 or 末尾文字がある場合の処理
if (i > 2 || input[i] == '.') {
input[i] = '\0'; // 末尾に終端文字の挿入
val = atoi(input); // 文字列を数値に変換
Serial.write(input); // 文字列を送信
Serial.write("\n");
i = 0; // カウンタの初期化
}
else { i++; }
}
return val;
}

void loop() {
ledVal = serialNumVal();
// A3Pinに通電
analogWrite(3,ledVal);
// 基盤のD13PinLEDを点灯
if(ledVal>100){digitalWrite(13,HIGH);}
else{digitalWrite(13,LOW);}
}

◆Python for maya
##========================================================
## maya で ballオブジェクトのYと連動してシリアル送信 フ
##========================================================

# まずはArduinoにポート接続
#import serial
#ser=serial.Serial('COM3', 9600)
#ser.close() #最後に閉じる

# 次にMayaからシリアル送信する
import maya.cmds as mc

def com():
pos = mc.getAttr("ball.translateY")
ledCheck = str(int(pos))+"."
ser.write(ledCheck.encode())

# HUDでイベント察知して更新
mc.headsUpDisplay( 'ArduinoRunning1', s=1, b=5,lw=100,dw=200, l='AraduinoRunninavga',ev="timeChanged",command="com()") #HUD作成
#mc.headsUpDisplay( 'ArduinoRunning1', s=1, b=5,lw=100,dw=200, l='AraduinoRunninavga',ev="timeChanged",command="com()",e=True) #HUD作成
#mc.headsUpDisplay( 'ArduinoRunning1',rem=True) # 最後に削除

===================
pyserial格納場所

パソコン👉 Cドライブ/python27/Lib/site-packages/serial
MAYA👉 C/program file/auto desk/maya2016/python/Lib/site-packages

コマンドラインでインストールしたあとmayaにフォルダをコピペすると良い?