2016/07/23

mbed再開

 そろそろロボットもやらないとラジコンから戻ってこれなさそうなので、mbedを再開。


 しかしながら前回から2年空くという恐ろしい状況。
 なんか色々変わってるし・・・自分のID忘れるし・・・クラウドの開発環境でID忘れるとか致命的。


 まあ何とかIDは思いだし、前回の回路を再現してみる。


Pc378

 
 
 なんとかフォトリフレクタのプログラムは動作しました。

| | コメント (0) | トラックバック (0)

2014/07/27

【mbed】フォトリフレクタを使ってみる

 今回使うセンサーは秋月電子で購入したフォトリフレクタ「LBR-127HLD」です。

 回路はエレキジャックの「マイコン・カーを製作してみよう(9)」を参考にしました。

Pc173

今回作成したプログラムでは、フォトトランジスタから出力される電圧を読み取ります。

以下プログラム

◇PReflector_test01

#include "mbed.h"
#include "TextLCD.h"

AnalogIn in(p20);
TextLCD lcd(p24, p26, p27, p28, p29, p30) ;

Ticker input; //Ticker - 繰り返しタイマー割込み
float now, old = 0.0 ;

void run(void);

int main() {
    input.attach(&run,0.5);  
}

void run(void)
{

    lcd.locate(0,0) ;
    now = in*3.3;//3.3V

    lcd.printf("%5.3f [V]",now);

}

 結果の写真です。

◇白を読み取った場合
Pc174

◇黒を読み取った場合
Pc175

 ちなみに読み取りに利用したのは、普通のコピー用紙に黒いビニールテープを張り付けたものです。    実は最初はマジックで黒く塗ってみたのですが、電圧が上がらなかったため黒いビニールテープにしました。

 フォトリフレクタをきちんと利用するには、いろいろノウハウが必要かもしれません。

| | コメント (0) | トラックバック (0)

2014/04/17

【mbed】ブレッドボード クローラー mbedプログラム

 とりあえずSBDBTでブレッドボードクローラーを動かすだけのてきとープログラムを書いてみましたよ。
 0x80のデータがあったらそこから一通り配列に格納。
 その後アナログスティックの上下の値を読み出しています。

◇mbedCrawler_01

#include "mbed.h"
#include "TB6612.h"

DigitalOut led1(LED1);
DigitalOut led4(LED4);

Serial SBDBT(p9,p10);
TB6612 right(p25,p28,p27);
TB6612 left(p26,p29,p30);

int i =0;
int j,m1,m2;
int serialData[16] = {} ;


void  rxFunc(){

    j = SBDBT.getc();

    if(j == 0x80){
        i = 0;
    }

    serialData[i] = j;
    i++;

    if( i >7){
        led4 = 1;

        m1 = serialData[4];
        m2 = serialData[6];

        right = (64-m1)/2;
        left = (64-m2)/2;

        i = 0;         
    }
}

int main() { 

    SBDBT.baud(2400); 
    SBDBT.attach(&rxFunc,Serial::RxIrq);

    while(1){    
        led1 = 1; 
    }
}

| | コメント (0) | トラックバック (0)

2014/04/13

【mbed】ブレッドボード クローラー2 SBDBT仕様

 ブレッドボードクローラーとPCを通信させてたXBeeをSBDBTに置き換えてみました。

 
 Pc154

 
 これで、PSコントローラから直接コントロールできます。
 ただのラジコンタンクになったとも言える。

 
 SBDBTじゃなくてもそのままmbedで処理しても良かったのではと思う方もいるかもしれませんが、うーんPS3_BlueUSBはいまいちだったんですよねぇ。

| | コメント (0) | トラックバック (0)

2014/01/05

【mbed】ブレッドボード クローラー2

 以前作成した、ブレッドボードクローラーを作り直しました。

▼こんな感じ

Pc138


 モーターを駆動する部分には菅工房のGeta Motor Driverを利用しています。電源含めて回路を作る自信がなかったので・・・
 
 
 これをベースして実験してみたいと思います。

| | コメント (0) | トラックバック (0)

2013/11/10

【mbed】ブレッドボード クローラー その3

 ブレッドボード クローラーのmbedのプログラムは以下です。

◇ソースコード

 
#include "mbed.h"
#include "TB6612.h"

Serial XBee(p9,p10);

TB6612 left(p21,p12,p11);
TB6612 right(p22,p14,p13);


int main() {

    int cc,c1,c2;
    int m1,m2;

    XBee.baud(38400);

    while(1){    

        c1=0;
        c2=0;

        cc = XBee.getc();
        c1 = cc >>4;
        c2 = cc & 15;

        m1 = (c1-8)*100/8;
        m2 = (c2-8)*100/8;

        left = m1; 
        right = m2;

    }
}

 仕組み的にはPCにゲームパッドをつなぎ入力された値を1バイトにしてXBeeから送信。
 mbedで1バイトのデータを受け取って、クローラの左右のモーターを操作しています。

 PC側のプログラムはVC#でDirectInputを利用して作成。  DirectInputを利用したのは以前使ったことがあったからなんですが、もう古いものなので次回からは別の方法を考えようと思います。

| | コメント (0) | トラックバック (0)

2013/11/06

【mbed】ブレッドボード クローラー その2

◇動画をとってみた

 タミヤの工作キットにブレッドボードを乗っけただけですが、問題なく動きますよ。


 
 「ほこたて」とは言わないがもう少し演出と編集が必要だ・・・


| | コメント (0) | トラックバック (0)

2013/11/04

【mbed】ブレッドボード クローラー

□とりあえず何か動くもの

 実用的なものをということで、この前はスピード測定器を作ってみましたが、やはりロボットですから動くものを作りたいと思うのです。
 
 ということで、今回作成したのは「クローラー」です。

 まあ、こういうのを作ろうと思ったとき自由に工作できる素材といえば、やはりタミヤ。
 というかそれ以外の選択肢が思いつきません。
 昔はマンモスダンプとか、自動車工作基本セットとかラジコン素材にしやすそうなものがたくさんありましたが、今はかなり少なくなってますね。特に操舵系の部品についてはバギー工作基本セットしか選択肢がないのは残念です。


 
◇今回利用した材料

▼タミヤ工作パーツ
 ・ツインモーターギアボックス
 ・ユニバーサルプレート2枚セット
 ・トラック&ホイールセット

▼秋葉原で調達したもの
 ・電池ボックス 単3×2本用(フタ付プラスチック・スイッチ付(秋月)
 ・昇圧型DC-DCコンバータ5V0.2A出力 StepUP・DIP-Ver.2(秋月)
 ・SparkFun ROB-09457 デュアル・モータードライバTB6612FNG(連続最大1.2A(千石)

あとはmbedと家にあったブレッドボードと配線各種。


 


◇出来上がり。

Pc134


| | コメント (0) | トラックバック (0)

2013/10/20

【mbed】モータードライバをつなげてみる。

 今回はモータードライバを接続してみたいと思います。

 使うのはこれ。デュアル・モータードライバTB6612FNG。
 アキバの千石電商で購入。

Pc133

 こんな感じで接続。
 モーター用の電力はmbedのでは賄えないので、単三電池を利用。

Pc132

 ピンは裏表逆にはんだ付けすればよかった。表示が見えない。

◇ソースコード

 
#include "mbed.h"
#include "TB6612.h"

DigitalOut myled(LED1);

TB6612 left(p21,p12,p11);

int main() {
    while(1) {
        left = 100;
        wait(1.0);
        left = 30;
        wait(1.0);
    }
}

 プログラムといっても、ライブラリを利用するだけです。
 先人に感謝。(人-)

 さてこれで、mbedからモーターも使えるようになりました。  

| | コメント (0) | トラックバック (0)

2013/10/14

【mbed】シリアル通信でPCにデータを送る

 前回はPCからの入力をmbedで受け取りました。
 今回はmbedから生成された値をPCに送信したいと思います。

 前につなげた加速度センサーの値をPCに送りたいと思います。

 XBeeは13,14ピンに加速度センサーは15,16,17ピンに接続します。

Pc131

◇ソースコード

  
#include "mbed.h"
#include "TextLCD.h"

TextLCD lcd(p24,p26,p27,p28,p29,p30);
Serial xbee(p13, p14); // tx, rx 

DigitalOut led1(LED1);

AnalogIn ainZ(p15);
AnalogIn ainY(p16);
AnalogIn ainX(p17);

int main() {
    xbee.baud(38400);

    lcd.cls();
    while(1) {
        lcd.cls();
        lcd.locate(0,0);
        lcd.printf("X:%1.3f",ainX.read());
        lcd.locate(8,0);
        lcd.printf("Y:%1.3f",ainY.read());
        lcd.locate(0,1);
        lcd.printf("Z:%1.3f",ainZ.read());
        led1 = !led1;

        xbee.printf("X:%1.3f, Y:%1.3f, Z:%1.3f\n",ainX.read(),ainY.read(),ainZ.read());

        wait(1);
    }
}

 XBee.printfに記述されている部分がPCに出力している部分になります。

◇PCの表示画面

Pc130

 とりあえず目的は達成。
 mbedのシリアル通信でbyte単位で送信したい場合、printf使いにくいと思うのだが・・・
 なにか良い方法があったりするのかな?

| | コメント (0) | トラックバック (0)