シンガポールにきてからArduinoを使い始めた。Max/MSPからArduinoでサーボモータを動かす上手い方法が見つからなかったので、自分なりに作ってみた。なおArduinoはUnoを使用。サーボモータは Tower Pro SG90。サーボはArduino Unoのアナログ3番ピンに接続します。
- Arduino側のコード
四谷工作研究所+建築発明工作ゼミのコードを流用させてもらいました。
http://kousaku-kousaku.blogspot.com/2008/06/arduino.html
http://artstudium.org/kousaku/2007/06/arduino.html
#includeServo servo; int pulseWidth; int sum; const int KETAMAX = 3; int keta; void setup(){ Serial.begin(9600); servo.attach(3); iniKeta(); } void loop(){ if(Serial.available()>0){ int val = Serial.read(); if(val == 's'){ iniKeta(); }else{ val -= 48; for(int i=1; i < keta; i++){ val *= 10; } sum += val; keta --; if(keta == 0){ Serial.println(sum); } } } pulseWidth=map(sum,0,255,544,2400); servo.writeMicroseconds(pulseWidth); } void iniKeta(){ keta = KETAMAX; sum = 0; }
こんなかんじでパッチを繋ぎます。
これでスライドバーからサーボモータを0〜180度・256段階の数値で動かせるようになりました。
しかし、ほんとのところ、こんなに回りくどいやり方をしなければならないんだろうか。もっとスマートな方法あったら教えてください。