Archive for category tips

サーボのコントロール

昨夜は遅くまでラジコンに実装予定の組み込みLinuxを触ってました。

組み込みLinuxのファーストステップとして、シリアル接続が前提となるのですが、RS-232シリアルケーブルがそのまま繋がると思っていましたら、組み込みのRS-232 は10pin だったのです!

9pinのRS-232 ケーブルは用意してたのですが、これには困りました。

実際使われるpinはTX/RX、GNDと3本のケーブルのみでしたので、ピンを直刺しすることで対応できました。

また、この話は後日まとめてから書きます。

今日はサーボの制御について書きます。

サーボの制御はArduinoというイタリア生まれのマイコンで行っています。

普通の基盤だと決まったことしか出来ませんが、Arduinoは普通の基盤と違い配線の仕方と、プログラム制御で様々なことが出来ます。

サーボのコントロール方法は、パルス幅の信号長で角度を制御します。

実際はサーボ向けにライブラリがあり、角度を指定するだけで制御が行えます。

気をつける点としては、ラジコンのシャーシの稼動域よりもサーボの稼動域が広いことです。

サーボの稼動域がシャーシの稼動域を超えるとサーボが負荷で嫌な音を立てて潰れます。

実際に潰しましたので間違いないです!

なので先にサーボを取り外し、ラジコンに付属のプロポと同じ稼動域であるか、確認をオススメします。

以下はサーボと前後のモーターをシリアル通信で制御するコードです。

Arduinoでは短いコードで簡潔に書けます。

よろしければ参考ください。

#include
#define servoPin 9
#define Motor 3
Servo myservo;

void setup()
{

pinMode(Motor,OUTPUT);

myservo.attach(servoPin);

Serial.begin(9600);

Serial.println(“Ready”);

}

void loop() {

static int v = 0;

if ( Serial.available() > 0) {

char ch = Serial.read();

switch(ch) {

case ’0′…’9′:

v = v * 10 + ch – ’0′;

break;

case ‘s’:

if (v <= 45) v = 45;

if (v >= 135) v = 135;

myservo.write(v);

Serial.print(v);

Serial.println(‘s’);

v = 0;

break;

case ‘w’:

if (v <= 0) v = 0;

if (v >= 255) v = 255;

analogWrite(Motor,v);

Serial.print(v);

Serial.println(‘w’);

v = 0;

break;

}

}

}

以下は簡易な回路図のつもりです。
電源は外部電源を利用してます。外部電源はvinのpinから電源を引きます。
サーボ制御

回路図に1点間違いがありました。
モーターからのワイヤはモスの真ん中にさします。モスに繋がるマイナス電源は端にさします。

, , , , ,

19 Comments

パソコンからラジコンを操作

はじめまして。ラボに初参加のinfoaliveのo2です。

時々書かせていただきますのでお見知りおきください。

普段はAMP(Apache,MySQL,PHP) で開発してますが、趣味でマイコンの制御を始めましたので、マイコンの事を書かせていただきます。

マイコンは1週間前まで触ったことすらなかったのですが、唐突にパソコンからラジコンの制御がしたくなり始めました。

きっかけはJoker Racerを見て、これは面白い是非やってみようと思った次第です。

Joker Racerはインターネットを通じて実物のラジコンを操作するサービスです。説明終わり。

では早速、インターネットを通じてラジコンを操作するにはどうすればいいかを考えます。

ラジコンをパソコンから操作するにはマイコンをパソコンに繋げば出来そうです。

マイコンが制御するのは左右に動作するサーボモーターと、前後の動作をするモーターの2つを制御することになります。

ラジコンに直接パソコンのような大きなものは乗りませんので、組み込み系に使われるARMのLinuxを利用します。

LinuxにはWEBカメラと無線LANを積めば遠隔からも操作ができますね。

ラジコンのハンドリングはキーボードで操作するのは面白くないのでWiiリモコンを利用することにします。

現段階では、パソコンにマイコンを繋いだ状態でラジコンの制御が出来るところまで完成してます。

詳しくは追々書くとしまして、Youtubeにアップした動画をどうぞ!

, , , , , ,

No Comments

ムービークリップを特定フレームまで再生してから停止させる

Flashでゲームを作成した場合に、ヒットポイントを表示するゲージを扱うことがあるかと思います。

例えばダメージをうけた場合に特定の位置まで

gotoAndStop([フレーム番号]);

でも良いのですが、これだといきなり減ってしまい味気ない感じになってしまいます。

モーショントゥイーンしつつ指定の位置で停止出来ないものかと考えたのですが、_rootに停止位置フラグを置いて各フレームに、

if(_root.[停止位置の変数] == [フレーム番号]){

this.stop();

}

とするのも芸がありません。(100フレームあったとして全てに書くのもバカバカしいですしね)

こういった場合は次のようにするのが良いのではないでしょうか?(AS2.0です)

ステージ上に再生したいサンプルのムービークリップ (インスタンス名:test_mc )とテスト用の再生開始ボタン(インスタンス名:test_button)を配置します。test_mcの1フレーム目にはstop();を記述して再生はストップした状態です。

(ボタンをクリックした場合に25フレーム目まで再生して停止するサンプルスクリプト)

var test_mc_stop = 1;

test_button.onRelease = function(){

test_mc_stop = 25;

test_mc.play();

}

test_mc.onEnterFrame = function(){

if(this._currentframe == test_mc_stop){

this.stop();

}

}

onEnterFrameイベントで、毎フレーム呼び出されて currentframe で現在のフレーム位置をチェック。

予めボタンクリック時にセットされたtest_mc_stopと同じフレーム位置であれば再生を停止します。

AS3.0ではもう少しスマートな方法があるのかもしれませんが・・・・・

,

No Comments

文字コードUTF-8のページに設置したmailtoの文字化け

弊社のサービス「のみテレ」に幹事サポート機能を追加したので、社内のお花見告知に早速使用してみたのですが・・・

特定のメーラーで文字化けが発生するという報告がありました。

基本はモバイル向けですので、モバイル端末では問題ないのを確認していたのですが、PCではOutlook系のメーラーにてサブジェクト、本文ともに文字化けしていました。

調べてみるとどうやらUTF-8のページにUTF-8向けにURLエンコードしたmailtoリンクを設置すると文字化けする模様。

サンプル
shift_jis

utf-8

shift_jis向けにURLエンコードした場合では正常に表示されたのでこちらで問題ないと思いきや・・・

今度はThunberbirdで文字化け発生です。

  • shift_jisで正常に表示される
    • Outlook
    • OutlookExpress(Windows Mail)
    • Becky!2
  • shift_jisでは文字化けする
    • Thunderbird
  • utf-8で正常に表示される
    • Becky!2
    • Thunderbird
  • utf-8で文字化けする
    • Outlook
    • OutlookExpress(Windows Mail)

どうやら「文字化けする場合はこちら」という形でリンクを併記するしかなさそうです。

ちなみにMacの場合は逆にURLエンコードしない方が文字化けしないという情報もありましたので、JavaScriptからOSを判定する必要があるかもしれません。

静的なリンクにはなりませんが、mailtoはSEOも関係ないので問題ないでしょう。

No Comments

Flashへのフォント埋め込みとライセンス

先日「新聞一面ジェネレータ」を作成した際に、固定で作成している大見出しとは別に自由にテキストを入力できる見出し部分のフォントを予め取りこんでおいて新聞風に見せるようにしていました。

しかし、色々と調べてみたところほとんどのフォントベンダーはFlashへのフォンと埋込を認めておらず、ライセンス違反になるとのことで、急遽修正しました。

基本的には第3者へのフォントの再配布と見なされるそうです・・・

確かに空きに選択した文字がアウトラインを伴って表示されるのですが、そのままフォント情報を抜き取って利用できる形にはなっていないんですよね。

(PDFへのフォンと埋込と配布についても同様に扱われる場合もあるそうです)

AdobeにとってみるとPDFやFlashで持っている機能が一部制限されるわけで、そこをなんとかしようとフォントベンダーとの交渉を重ねているようですが、はやく自由度が上がると良いですね。

ちなみにAdobeによると

小塚明朝・ゴシックについては編集可能な状態での埋め込みを許可しているようです。

http://www.adobe.com/jp/type/browser/legal/embeddingeula.html

※新聞一面ジェネレータでも小塚ゴシックを使用しました。

別件でポストカードの裏面を編集できるサイトを構築しましたが、その際はフォントベンダーさんが仲介されていた案件ということもあり、ベンダーさんのご厚意でフォントを埋込可能でしたが、普段はなかなかそうはいかないでしょうし、ましてや今回のような実験的サイトではほとんど収益が発生しないため無理ですね。

どこか思い切ったメーカーさんで、Flashへの埋め込みOK!という形でリリースしていただけるとかえって売上が上がるように思うのは素人考えなんでしょうか?

No Comments