隠居エンジニアのものづくり

自転車 電子工作 ラジコン ロボカップジュニア CAD レーザー加工機

PixyCAMを2色以上のターゲットに対して自動制御する時に、発生する問題について

現在"Original Pixy"と "Pixy2"の2種類あります。

通信プロトコルも2種類あります。

この2種類の通信プロトコルは全く思想の異なる仕様となってます。

大雑把に説明すると

●"Original Pixy"の通信プロトコルは所謂”たれ流し”方式で常にデータを出し続けており、ユーザーはヘッダ情報(55,AA,55,AA)を捉えて必要な情報を得る方式

●" Pixy2"の通信プロトコルはコマンド発行に対してレスポンスする方式

となります。

実はOriginal Pixy通信プロトコルにはカメラにSig1が捉えられている場合にSig2やSig3のデータ出現頻度が下がる問題があります。

例えばサッカーチャレンジでオレンジボールを捉えたのち青色ゴールに向かってシュートするプログラムを作った場合、オレンジボールを捉えるまでは的確に制御ができますが、青色ゴールに向かう段階で制御が利かなくなったり、不安定になったりします。

この症状に心当たりがある方は以下をお試し下さい。

 

おそらくPixy2専用通信プロトコルの思想がOriginal Pixyと異なるのは上記問題を完全に解決できなかった事に起因するのでしょう。

試しにArduinoに接続したPixy2をPixyMonにて”Pixy1.0 compatibility mode”に設定してプログラム検証するとSig2問題が発生します。

”Pixy1.0 compatibility mode”のチェックを外しPixy2専用通信プロトコルにすると青色ゴールを的確に捉えるようになります。

f:id:Blackbox_crusher:20210108183515p:plain

Pixy1.0 compatibility modeのチェックは必ず外そう!

"Original Pixy"から "Pixy2"に買い替えをした方には”Pixy1.0 compatibility mode”をつかえばプログラムを作り直さずに済むので、チェックを入れて使用している場合が少なくないと思います。

もし、Sig2、Sig3の制御に問題がある場合は、チェックを外して使える様にプログラムを見直すのが解決の早道かもしれません。

 

ダイセン電子工業さんのセンサをArduinoで使う

ロボカップジュニアの定番ロボットキットTJ3を使っていて、Arduino UNO、Arduino Microに移行する人は多いように思います。

移行を考える人達は、C言語での開発がある程度できるので解説の必要がないかもしれませんが、ダイセン電子工業さんのセンサをArduinoで使用する方法をまとめます。

 

アナログポート(A0,A1,A2,A3に接続して”analogRead(pin)”でデータ取得)に接続して使うセンサ

ラインセンサー

ラインセンサー | ロボット,センサー | 株式会社ダイセン電子工業 (daisen-netstore.com)
ホワイトラインセンサー

ホワイトラインセンサー | ロボット,センサー | 株式会社ダイセン電子工業 (daisen-netstore.com)
シングルパルスボールセンサー

シングルパルスボールセンサー | ロボット,センサー | 株式会社ダイセン電子工業 (daisen-netstore.com)
反射型パルスボールセンサー

反射型パルスボールセンサー | ロボット,センサー | 株式会社ダイセン電子工業 (daisen-netstore.com)
カラーファインダー(3ピンのアナログ出力側を使用)

 

デジタルポート(2,3,4,5,6,7,8,9,10.11,12,13に接続して"pulseIn(pin, HIGH)"でデータ取得)に接続して使うセンサ

超音波センサー

超音波距離センサー | ロボット,センサー | 株式会社ダイセン電子工業 (daisen-netstore.com)

 

Arduino IDEのスケッチ例にサンプルプログラムがあります。

f:id:Blackbox_crusher:20210107233725p:plain

Arduino IDEのスケッチ例”Ping”が超音波センサーサンプルプログラム

デジタルポート"7"に接続すればシリアルモニタで距離が見れます。

サンプルプログラムの”const int pingPin = 7;”の数字を変更すればポート変更ができます。

 

I2Cポート(SDA=A4 SCL=A5に接続して”Wireライブラリ”を用いてデータ取得)に接続して使うセンサ

9Dコンパス

 9Dコンパス | ロボット,センサー | 株式会社ダイセン電子工業 (daisen-netstore.com)

 

”ツール”→”ライブラリ管理”を左クリックするとライブラリの管理ツールが開きます。

9Dコンパスに使用されているBNO055のライブラリが検索できるのですが、あまり上手くいかなかったので、データシートを読んでレジスタ設定を行って使っています。

f:id:Blackbox_crusher:20210107234728p:plain

ライブラリ管理ツール

BNO055ライブラリを使わないサンプルプログラム

/*
Name: BNO055_All_Data.ino
Created: ****/**/** **:**:**
Author: ***********
*/

#include <Wire.h>

#define BNO055 0x28 //9軸センサ IICアドレス

volatile int RET_MSG;
volatile int DIR;
volatile int GYRO;
volatile int PITCH;
volatile int ROLL;

void setup()
{
Serial.begin(115200);
Wire.begin(); //I2C通信開始
Wire.beginTransmission(BNO055);
Wire.write(0x3B); //register設定
Wire.write(0x00);
RET_MSG = Wire.endTransmission(); // データの送信と終了処理
if (RET_MSG == 0) {
}
else {
Serial.print("ERROR NO.="); //通信出来ない
Serial.println(RET_MSG);
}

Wire.beginTransmission(BNO055);
Wire.write(0x41); //register設定
Wire.write(0x21);
Wire.write(0x04);
RET_MSG = Wire.endTransmission(); // データの送信と終了処理
if (RET_MSG == 0) {
}
else {
Serial.print("ERROR NO.="); //通信出来ない
Serial.println(RET_MSG);
}

Wire.beginTransmission(BNO055);
Wire.write(0x3D); //register設定
Wire.write(0x0C);
RET_MSG = Wire.endTransmission(); // データの送信と終了処理
if (RET_MSG == 0) {
}
else {
Serial.print("ERROR NO.="); //通信出来ない
Serial.println(RET_MSG);
}
}

void loop()
{

DIR = getDIR(0);
Serial.print(DIR);
Serial.print("\t");

GYRO = getGYRO(0);
Serial.print(GYRO);
Serial.print("\t");

PITCH = getPITCH(0);
Serial.print(PITCH);
Serial.print("\t");

ROLL = getROLL(0);
Serial.println(ROLL);
delay(1000);

}


unsigned int getGYRO(unsigned char) //ジャイロ角速度を読み込み。
{
typedef union { //受信データ用共用体
unsigned int W;
struct {
unsigned char L;
unsigned char H;
};
} U_UINT;
U_UINT data; // 受信データ
int reg; //レジスターアドレス
reg = 0x18; // Register 0x1E:GYRO_DATA_Z (LSB-MSB)
Wire.beginTransmission(BNO055); //通信開始
Wire.write(reg); //register
Wire.endTransmission(); //通信終了

Wire.requestFrom(BNO055, 2);
if (Wire.available() > 1) {
data.L = Wire.read(); //1バイト分のデータの読み込み
data.H = Wire.read(); //次の1バイト分のデータを読み込み
}
return (data.W);
}

unsigned int getDIR(unsigned char) //ヘッドアップ角度を読み込み。
{
typedef union { //受信データ用共用体
unsigned int W;
struct {
unsigned char L;
unsigned char H;
};
} U_UINT;
U_UINT data; // 受信データ
int reg; //レジスターアドレス
reg = 0x1A; // Register 0x1A:dir(EUL_DATA_X LSB-MSB)
Wire.beginTransmission(BNO055); //通信開始
Wire.write(reg); //register
Wire.endTransmission(); //通信終了

Wire.requestFrom(BNO055, 2);
if (Wire.available() > 1) {
data.L = Wire.read(); //1バイト分のデータの読み込み
data.H = Wire.read(); //次の1バイト分のデータを読み込み
}
data.W = data.W / 16;
return (data.W);
}

unsigned int getROLL(unsigned char) //ロール角度を読み込み。
{
typedef union { //受信データ用共用体
unsigned int W;
struct {
unsigned char L;
unsigned char H;
};
} U_UINT;
U_UINT data; // 受信データ
int reg; //レジスターアドレス
reg = 0x1C; // Register 0x1C:ROLL(EUL_DATA_Y LSB-MSB)
Wire.beginTransmission(BNO055); //通信開始
Wire.write(reg); //register
Wire.endTransmission(); //通信終了

Wire.requestFrom(BNO055, 2);
if (Wire.available() > 1) {
data.L = Wire.read(); //1バイト分のデータの読み込み
data.H = Wire.read(); //次の1バイト分のデータを読み込み
}
return (data.W);
}

unsigned int getPITCH(unsigned char) //ピッチ角度を読み込み。
{
typedef union { //受信データ用共用体
unsigned int W;
struct {
unsigned char L;
unsigned char H;
};
} U_UINT;
U_UINT data; // 受信データ
int reg; //レジスターアドレス
reg = 0x1E; // Register 0x1E:PITCH(LSB-MSB)
Wire.beginTransmission(BNO055); //通信開始
Wire.write(reg); //register
Wire.endTransmission(); //通信終了

Wire.requestFrom(BNO055, 2);
if (Wire.available() > 1) {
data.L = Wire.read(); //1バイト分のデータの読み込み
data.H = Wire.read(); //次の1バイト分のデータを読み込み
}
return (data.W);
}

 

データ取得間隔の最小時間(サンプルプログラムは1000ms間隔でデータ取得)などBNO055の限界性能を引き出したい方はデータシートを熟読して下さい。

レーザー加工機 beamoの実力

先ずスペック比較で分かること(ライバルはEtcher Laser Proですね)

●レーザーヘッドの移動速度が一桁速い

●カメラの位置精度が高い

●タッチセンサ付きカラーLCDで多彩な本体操作が可能

●軽い

●小さい

余談ですがレーザー加工機購入について、家庭内稟議がすんなり通った訳ではありませんので、設置作業を相方に手伝って貰うわけにもいきません。

高さ1mのキャスターラックに設置作業を終えて、22kgで良かったと思いました。

Etcher Laser Pro 約45kgの開梱・搬入・設置ができる環境(状況?)かの判断は意外と重要です。

CO2レーザーはガラス管ですので開梱から設置までワレモノを扱う優しさが必要です。

"ゴン"と置いたらガラス管破損で一度も使うことなく修理に出すことになりかねません。慎重の上にも慎重に作業をして下さい。

 

購入してから気が付いたこと

●消炎機能(エアーアシスト)
ノズルの先端からエアーを出すことにより、素材の過度な延焼を防ぐ機能です。

このエアーアシストの構造が秀逸で、集光レンズの鏡筒内にエアを導入して、出射穴から噴き出す仕組みになっています。

通常ワークカットや彫刻で出た煙はレンズにも触れますが、レンズ鏡筒内が常に外気導入により加圧状態の為に、レンズに煙が触れることがありません。

肝心の消炎機能ですが、アクリルしか切らないので延焼?て感じで興味はありませんでした。

ところが、ある学校の加工室でMDF材をレーザーカットしたところワークが燃えて途中停止、色々パラメータ調整をしてチャレンジするも断念したとの事。

ロボット競技をやっていた繋がりで知り合いでしたので”beamoでカットしてみる?”と提案、MDF材がやってきました。

beam studio デフォールトパラメータの"木材-5mm 切断"を選択してGo!

あっさり成功しました。そのあと追加依頼がきました・・・

 

●連続定格

スペック一覧には記載はないのですが、連続定格の様です。(後述の色々な状況からの想像です。念のため!)

連続使用時間30分の加工機を使う場合、10分以上自然冷却してから使っています。

レーザー加工機で部品をカットするメリットの一つが部品を敷き詰めれる事です。

f:id:Blackbox_crusher:20210101132639j:plain

部品を敷き詰める

この様に部品の抜き穴部分に他の部品をレイアウトできるので材料の無駄がないのですが、機嫌よくレイアウトして切削予測時間が連続使用時間を超えていて泣く泣く部品を減らすなんてことも起きてました。

連続定格ならこの様な調整作業は不要です。

連続定格を守る為にデフォールトのパラメータは最大55%出力に制限されている様です。

f:id:Blackbox_crusher:20210101133532p:plain

Beam Studioのパラメータ調整画面

これがパラメータ設定画面です。

もちろんスライダを右に動かせば100%の設定は可能です。

60%辺りから黄色になり100%は赤色になっていますので55%より高い設定では連続定格の保証外と理解しています。

実質16.5w機?となりますよね。

3.5w半導体レーザー加工機との比較をする際には出力の差だけでは正しい評価になりません(私が3.5w半導体レーザー加工機からの買い替えなので実際の実力差に関心があるのではと想像しました)。

半導体レーザーは波長約400nmの青紫であることが多いと思います。

得意のアクリル板カットでも黒色のみで透明や白色のカットは全くできません。

これは半導体レーザー光のほとんどが透過・散乱して、吸収されないからです。

黒色アクリル板のカットにしてもアクリル樹脂に吸収があるのではなく、黒色色素に吸収されてジュール損失した結果アクリル樹脂が焼けるのです。

つまりカットの実力は"出力"×"吸収率"となります。

CO2レーザーの波長10640nmは樹脂自体に吸収がありますので吸収率は比較になりません。

この為にCO2レーザーは透明樹脂をカットできるのです。

実際に264mm×209mmの長方形をカットした時の予想時間を比較しました。

3.5w半導体レーザー加工機 31m

beamo 55%出力       3m15s

カット時間では実質16.5w機でも約10倍の性能差を誇ります。

以上、購入しないと分からない事を中心にレビューしました。

レーザー加工機の購入

個人で何とか手の届く価格の組立キット3W半導体レーザー加工機FABOOL Laser Miniを購入して数年経ちます。

購入時は寸法の大きい部品をカットすると寸法誤差が大きくて、値段相応なので仕方ないと思ってました。

しばらくするとソフトがSmartDIYsCreatorに切り替わり、ユーザー設定に”補正”機能が追加されて寸法誤差を大幅に縮小することができるようになりました。

値段が高く長期的につかう道具は、サポートが継続する事が重要ですね。

この点から、安価ではありますが●華製のレーザー加工機には手を出せません。

レーザー加工機の使いこなしノウハウも溜まってきて使用頻度が上がってくると最初は早いと思った加工速度も、少し物足らなくなってきます。

CO2レーザー加工機にステップアップしたいと思っているところにCO2レーザー加工機Etcher Laser Proのアナウンスと10万円の給付金、一気に購入機運が上がります。

今使っているFABOOL Laser Miniはロボット作りをサポートしている学校で使って頂く段取りをし、設置用に天板寸法 875×600mm 耐荷重150kgキャスターラックを準備して発売を待つことに。

ところが発売延期と想像していたより価格が高かったのでダブルパンチ状態!

しかたなく発売中のCO2レーザー加工機を調査することにしました。

後悔できない価格なので比較表を作成しました。

表記が異なるのは各々の性能表の内容をコピーして誤記を防ぐ為です。

対応する”表記が無い”または”不明”の場合は”-”としています。
Etcher Laser Proが12万円高いのは集塵装置を内蔵している事が主な要因となっている事を注釈しておきます(beamoは必要の場合、別途購入)。

製品名 Etcher Laser Pro beamo
本体サイズ 786 × 600 × 325mm(突起物含まず) 縦445mm x 横615 x 高177mm
本体重量 45kg 22kg
加工エリア 450 × 300mm 縦210mm x 横300
加工エリアの深さ 25mm(ハニカムテーブルを取り外すと35mm) 45mm
レーザーの種類 CO2レーザー 30W 30W CO2 Laser (エアーアシスト付き)
加工速度 20000mm/分 (33mm/s) 最速300mm/s
連続使用時間 30分以下 -
カメラ - HD CMOS搭載
カメラプレビューエリア - 300 x 195mm
キャプチャ位置精度 最大±3mm程度(レンズの歪みによる誤差) 0.5mm
接続環境 USB Wifi, Ethernet
販売価格 348,000円(税別) 228000(税別)


先ずワークエリアがA4サイズ以上必要か否かです。

A4サイズ以上のワークを彫刻・切断する予定があればEtcher Laser Proに向けて貯金する他ありません。

比較してみるとワークサイズ以外 beamoの方が性能が良いことが分かります。

連続使用時間は明記がないので”-”表記にしましたが、マニュアルにもHPにも使用時間の注意喚起はありませんので連続定格のようです。

FABOOL Laser Miniからの買い替えなので集塵機と排気口・配管は既に設置済みです。

ですので集塵機内臓機能に12万円は無駄に思えました。

ロボット競技会が年末にあるのでロボット作りをサポートしている学校には10月初旬にはFABOOL Laser Miniを設置したい所です。

 Etcher Laser Proの10月中の供給は無いと予想(実際に延期になりました)。

beamoの本体ファームウエアの更新履歴と専用ソフトBeam Studioの更新履歴を確認して、継続的にサポートが行われている事を確認の上、9月末にbeamoを発注。

f:id:Blackbox_crusher:20201231220359j:plain

beamo設置状況

余ったスペースにアルミフレームラックを組んで材料を収納!

排気口のあるbeamo設置場所と材料が置けるスーペースがある場所は別だったので作業効率Upのおまけ付となりました。

3か月経過しての感想は使い勝手良好です。

性能に関する詳細な解説と使いこなしのノウハウは別途記事にする予定です。

 

 

 

 

 

ロボット教室 4回目

曲がり癖の補正

私のロボットは前進のタイルを置いても左に曲がっていきます。

動画でも左に曲がって行くのが分かったのではないでしょうか。

皆さんのロボットはどうでしょうか?

右に曲がるロボット、左に曲がるロボットどちらもあると思います。

このロボットごとの曲がり癖は左右2個のモータの性能バラツキによるものです。

モータに限らず部品には性能のバラツキがあります。

このバラツキは範囲が決められていて範囲内なら良品、範囲外なら不良品としてメーカーで厳しく管理されてます。

ホビー用のモータは安く作る為にある程度バラツキ範囲が大きくなってます。

と言うことで真っすぐ走るロボットは無いと言っても良いでしょう。

 

とは言え真っすぐ走って欲しいですよね!

このバラツキを調整する機能がC-Styleにはあります。

https://www.daisendenshi.com/download/Alpha-Xplorer_C-Style_startup_190615.pdf

”α-Xplorer C-Style導入編 4-4. モータ出力バランス 25pに調整手順が書いてありますのでよく理解してから調整して下さい。

α-Xplorer C-Style導入編の説明を超える分かりやすい説明はできそうにないので、ここであらためての説明は致しません。

 

完全に真っすぐ走る様にはなりません!

曲がり癖を小さくする為のツールですので、微妙に曲がるのはOKです。

 

モータの個体差の他に、モータ1個の中にもバラツキがあります。

このバラツキはモータ自身の正転・逆転の性能差です。

例えば正転が1分間に5000回転するとします。

これが逆転では1分間に4500回転だったりするのです。

モータ出力バランスは前進と後進がセットになってますが、競技を行う上では前進の方が重要ですので前進中の曲がり具合に注目して調整し、後進時に曲がるのは良しとするのも有りだと思います。

 

センサを使おう!

”α-Xplorer C-Style導入編 2-2. センサ モニタ 12pにセンサの動作が見えるセンサモニタと言う画面を出す方法が書いてありますので手順にしたがって操作してみて下さい。

※センサモニタ メンテ中

 

 CH1にL-Eyeセンサ、CN2にR-Eyeセンサが付いてます。

動画の様に前向きに取り付けると壁との距離を”%”で得られます。

私のロボットは壁が遠い時は1%、壁と接触するまで近づけるとL-Eye72%、R-Eye71%でした。

センサにもバラツキがありますので、ロボットごとに値が違いますし、左右のセンサで値が違うこともあります。

f:id:Blackbox_crusher:20201231234438p:plain

センサモニタ

 センサを使ったプログラム

 スタートスイッチを押して前進、センサの値を見て、壁にぶつからない様に停止します。

※センサを使って停止する メンテ中

 

f:id:Blackbox_crusher:20201231235730p:plain

センサを使ったプログラム

whileのタイルを置くと”while”、”end while” が縦に並んで表示されます。

Whileを置くときは条件を設定する必要があります。

f:id:Blackbox_crusher:20210101003616p:plain

条件選択

”センサチェック”を選択して

f:id:Blackbox_crusher:20210101003844p:plain

CH選択

見たいセンサの付いているCNを選択します。

L-Eyeの値を見たいのでCH1を選びます。

f:id:Blackbox_crusher:20210101004152p:plain

値と符合の入力

符合を"<"、値を”20%”(値は壁にぶつからない様に調整します上の図では23%を設定)

"while"は"end while"とで挟んだタイルの動作を条件が満たされている間繰り返し実行する命令です。

上の例ではL-Eyeセンサの値が20%より小さい間は前進のタイルを繰り返し実行します。

L-Eyeセンサの値が23%もしくは20%より大きい値になった場合は繰り返しをやめて次のタイルを実行します。

f:id:Blackbox_crusher:20210101003444p:plain

プログラムの流れ

"while"タイルでしか値の判断をしません。

上の表で時間経過5のタイミングで002行のタイル直進を行ったときに20%になってますが、ここで繰り返しをやめるわけではありません。

経過時間6の003行"end while"が003行に戻るを実行して経過時間7の001行"while"がL-Eyeセンサの値を見て28%を確認した時に004行に行くを実行します。

004行で停止を実行しますが、”車は急には止まらない”ので停止から少し前進します。

センサを使って停止するプログラムができたら4回目は終了です。

初心者講習はここまでとしましょう。

 

ロボット教室 3回目

プログラムでロボットを動かすことができたので、競技をしてみましょう!

先ずスタートラインとゴールラインを1m程離れた所に決めてます。

ルールは簡単!スタートラインでスタートスイッチを押してロボットがゴールラインぎりぎりに止まったらOK。

複数人数で競技する場合は練習走行時間を決めてプログラムを調整し、本番でロボットが止まった位置とゴールラインの距離を計測して”距離が短い方が勝ち”とします。

ゴールラインに重なったら”記録なし”にしておけば、ゴールラインは定規とか物を置いて競技できます。

床や畳にテープを貼ると、剥がす時に傷つけるので絶対にしないで下さい!

f:id:Blackbox_crusher:20201231115427p:plain

競技ルール

 プログラムは簡単ですが、砂時計の時間を調整するのは結構大変です。

f:id:Blackbox_crusher:20201231114915p:plain

競技プログラム その1

※直進後時間で止まる メンテ中



私の記録は19mmでした。

 

次の競技は障害物をよけて左に曲がってからゴールします。

動きは動画を見てください。

※直進後障害をよけて左カーブ停止 メンテ中

 

プログラムはこんな感じになります。

f:id:Blackbox_crusher:20201231115944p:plain

競技プログラム その2

003の”L:0%”によって左に曲がります。

f:id:Blackbox_crusher:20201231123232p:plain

モータパワー設定方法

動画はゴールラインを踏んでいるように見えますが、真上から見ると16mm手前です。

なかなか良い記録ですね。

004の砂時計が曲がり具合の調整部分になりますが、結構難しいですよ。

 

”調整のコツ”は大きな数字で目標より大きいか、小さいかだけを確認します。

例えば1.0秒で曲がりきれなかったら、次は2.0秒を試します。

2.0では曲がり過ぎになりました。

ここで大切なのがどちらが目標に近いかを観察する事です。

2.0秒に近かったら1.5秒~2.0秒の間に正解がありますし、1.0秒に近かったら1.0秒~1.5秒の間に正解があります。

次に2.0秒が目標に近いのか、そうでもないのかを判断します。

目標に近いのなら1.9秒を試し、次に1.8秒の順番で確認します。

そうでもないのなら(1.0秒と2.0秒の間ぐらい)1.5秒を試し、次に1.6秒の順番で確認します。

観察が正しければ

●1.0秒→2.0秒→1.9秒→1.8秒→1.7秒の5回以内

●1.0秒→2.0秒→1.5秒→1.6秒→1.7秒の5回以内

のどちらかで正解が見つかります。

観察はロボットのプログラミングにとても大切なので、良くロボットの様子を見てください。

 

皆さんの納得できる競技結果になったら3回目終了です。

 

 

 

 

 

 

 

 

ロボット教室 2回目

ロボットの中身”マイコン

マイコン”はプログラムの指示を理解して、指示通りに動く部品です。

ロボットにはこのマイコンが入っています。

プログラミングの理解をするためにはマイコンがどの様に指示を受けて、どの様に動くかをイメージすることが大切です。

マイコンは次の指示を受けるまで動きを変えない。

 例えば”前進”の指示をしたら、次の指示がなければ前進を続けます。

 

マイコンはプログラムに書かれた順番に指示を理解して動く。

 プログラムのタイルの上から下へ順番に指示を理解します。

 

マイコンは頭です。モータやLEDは手足に例えられます。モータを正転・反転・停止をさせる為にモータ端子の電圧を制御するモータドライバやLED点灯ポートなどの手足にマイコンが指示をします。

 

④砂時計以外のタイルは”一瞬”で動いて次に行く

f:id:Blackbox_crusher:20201230215153p:plain

プログラム例 その1

このプログラムのマイコンの動きはこんな感じになります。

f:id:Blackbox_crusher:20201230173504p:plain

マイコンの動き

001でモータドライバに50%前進の指示を一瞬でおこなう。ロボットは前進を始める。

002でマイコンは一生懸命時間”1秒”をかぞえる(時間を数える以外何もしない)。

この1秒間はロボットは前進を続けている。

003でGREEN LEDポートに点灯指示を一瞬でおこなう。ロボットは前進を続けている。

ここでLEDは点灯します。

004でマイコンは一生懸命時間”1秒”をかぞえる(時間を数える以外何もしない)。

この1秒間LED点灯を続けて、ロボットは前進を続けている。

005でGREEN LEDポートに消灯指示を一瞬でおこなう。ロボットは前進を続けている。

ここでLEDは消灯します。

006でマイコンは一生懸命時間”1秒”をかぞえる(時間を数える以外何もしない)。

この1秒間もロボットは前進を続けている。

007でモータドライバに停止の指示を一瞬でおこなう。ロボットは停止する。

 

ロボットは3秒間前進して停止します。ロボットのGREEN LEDは1秒後に点灯

して1秒間点灯の後、消灯して最後まで消灯です。

これがこのプログラムによるロボットの動きです。

 

では次のプログラムではロボットはどんな動きをするのでしょうか?

f:id:Blackbox_crusher:20201230231057p:plain

プログラム例 その2

001でマイコンは一生懸命時間”2秒”をかぞえる(時間を数える以外何もしない)。

この2秒間はロボットは何もしない。

002でモータドライバに50%前進の指示を一瞬でおこなう。

003でモータドライバに停止の指示を一瞬でおこなう。

ロボットは2秒後に小さな音を”チッ”と発してプログラムを終了します。

この”チッ”と言う音は002と003の一瞬の間モータが動いた証拠です。

でも全くロボットは動きません。

そこでこの”チッ”で何が起こっているのかを見るためにギヤモータのモータ部分(ミニ四駆のFA-130モータと同じサイズのモータです)を取り出して見てみましょう!

モータの取り出しはマネしなくて良いですよ!動画があるので見て下さい。

スタートスイッチを押してから2秒後にモータが一瞬動くのが確認できます。

動くと言っても1回転すらできないぐらい短い時間です。

ですのでロボットはピクリとも動きません。

皆さんは静かな場所でプログラムを動かして見てください。

スタートボタンを押した2秒後の”一瞬の小さな音”が確認できれば2回目は終了です。

※動画のα-Xplorerは2020年開催予定だったRCJサッカーオープン講習会用ですのでキットのα-Xplorerとは異なります。

※プログラム例その2確認 メンテ中