Pi:Co V2 体験記

刮目せよ!新製品Pi:Co V2 その6 センサ値をPCで見るぅ

Pi:Co V2 体験記

秋の夜長にマウスは如何か

こんにちは、広報DTP担当のサナエです。
このブログは技術畑ではない広報がアールティの新製品Pi:Co V2と仲良くなり、その魅力をアピールする体験記です。
前回はブザーでドレミファソラシドを鳴らしました。今回はセンサと格闘します。がんばらねば!

Pi:Co V2をみよ!

Pi:Co V2(ピーコブイツー)は、アールティの教育や研究開発用小型移動ロボットのプラットフォームであるPi:Co Classic3同様、ソフトウェア開発の基礎を学びたい方に手に取っていただきたいロボットです。Pi:Co Classic3の機能やデザインイメージをそのままに、半分のマイクロマウスサイズになりました。
マイクロマウス競技に準拠しているのでもちろん大会参加もできます。

Pi:Co V2はESP32-S3マイコンを搭載しており、Arduinoで開発できます。
移動型ロボットのビギナーや、研究者、開発者まで幅広い方々にご利用いただけるロボットです。
Arduinoサンプルスケッチと解説書が付属するので、プログラミング初心者にもおすすめです。

センサの表示は如何か

step3のブザーで分からないことを色々教えてもらい何とかできたことに気をよくして、step4は頑張ってできるだけ自分で読んで進めてみよう!どうしてもわからない時は聞いていこう!と思います。まずは普通に書いてある通りに…。
step4を検証して書込み、シリアルモニタを表示してみました。
おおー!でるでる!値が見える!すごーい!

今までマウスのセンサの値を見るときはターミナルエミュレータを別に立ち上げて見ていたけれど、Arduino IDEだけで済むとは便利!
弊社の技術畑以外の社員向けの研修でマウスとPCを繋いだ後、ターミナルエミュレータを立ち上げる順番などで悩む人達をよく見ていたので、これは画期的!これから研修する人たちは楽だろうなぁ

今回のお題は如何か

さてさてさっくり気持ちよく動いたところで今回のお題を確認します。

【製作者からの課題4】 センサの値のいずれかが500以上になったらブザーを鳴らしてください。500より小さい時は、消音にしてください。 ヒント:if(センサの値 >= 500){ブザーを鳴らす} else{消音}

あああああ!!!!if文!焦らずにはいられない!アババババババ!!!

if文ってelseと一緒に使って「もし○○したらこうしちゃう!これ以外はこうするもんね!」ってことはちょっとだけ知ってるしよく見かけるけど…それをどこにどう入れたらいいかとかわかってないのよ?ハワワワ!!
と、とりあえずマニュアルとサンプルスケッチを眺めるとこから始めよう…ッ!

と始めたところあっという間に数日が過ぎました。
ちょっとずつ調べながら読んではみるものの、気づいたら瞼が閉じてたりわからなかったことがとけたぞヒャッハー!という夢を見たり…
もしかしてこういうことかな?ほほう…ほほう なるほどと思いつつ、そういえばこれってセンサの話だよね!お題はブザーを鳴らせるようにすることなんだけど?
でもまずスケッチで何をやっているか見ないとどこに入れるとか想像できないしヒィン…

わかんないよ助けてO君!何がわからないかわからないよう!

またもやO君にこれ何?というものやらなにやらいろいろ質問!
#define SLED_F、SはLEDが直列二個ずつてのはわかったけど、どうしてFとSなの?→FrontとSideときいて あっそうか! カンが悪すぎる
timerのとこでセンサ同士の干渉を避けるためにチカチカ点灯をずらしていることなどは納得できました。timerのスケッチに先ほど教えてもらったSLED_Fが出てくるcase0のところは「//FなのでフロントrlのLED」や「//LED点灯」「//r、lを受光したらLED消灯」とコメントアウトで何をやっているところなのかメモをとってみると何をしているのかがちょっとわかる気がします。

そしてとりあえずブザーを鳴らすために必要そうなものを#defineに入れておこう…

なぜFREQ_Aなのかというと私は「ファ~w」とか言いつつ「ラ」の音階だそうなのでAのラにしました。

ここに書くのは如何か?

#defineに準備したので今度はお題のif文を入れたいな!どこに入れよう?アババババ!!
私なら今回のセンサ値を出力してくれてる void loop()のあたりにまとめて入れておきたい気がするのでSerial.printfの塊の後ろあたりに入れようかな!
printf はhello worldとか画面に表示させるときに使ったりするぞ知ってる
…でも%d\n\rって何!? %使ったりすると割引きとかしかイメージわかないよナンですかこれは!!シリアルモニタに表示させるとこだというのはわかるんだけど、ここがわからなくてすっきりしない!!O君ここも助けて!

……%dは整数が入り、\nは改行\rは先頭にそろえるということを聞きました。
なのでfrセンサの値が整数、flセンサの行に改行、改行後先頭をそろえるのできれいにモニタに表示されるということなんですね。そうなのか…!
すっごい心すっきり。

ちょうどこのかっこの中にセンサの値を取ってくれるやつがいるのでこのあたりを使えばいいのかな?
if(rセンサの値が500以上になったら)ちょいとstep3からよさげなところを持ってきてブザーを鳴らす それ以外はちょいとstep3からよさげなところを持ってきて消音
ということで、step3から鳴らすとこと消すところを持ってきてとりあえず入れてみました。

delay(2000);はちょっと長すぎるかな?とおもい1000にしてみたけどどうじゃろかどうじゃろか!

如何したものか!

うおおおおお鳴らぬううううう!!!!アババババ!!

シリアルモニタのところは500を超える時に少し止まって反応しているので、どう考えても音が鳴るとこで失敗してる…。もしかして入れる場所が悪かったのか はたまた入れるものが違っていたのか…ヒィイインナンデー!
O君と色々見直しても悩むばかりだったので通りがかりのM君にヘルプを出しました。Arduinoはあまり知らないけど…と言いながらすぐに「わかりました!」とさわやかな返答をいただきナンデー!が加速しますよナンデナンデ!!??

「某イタリアンレストランのまちがい探しより簡単でした」とかぐぬぬ…

「setupが足りないです。setupは起動時に一回呼び出されて動かす準備をします。loopはsetupと対になっていて、setupで呼び出したものを終了するまでループします。この状態だと音を鳴らすためのsetupがないんです」

ですと!?あれ?おかしいな、step3から必要なものは全部持ってきた気が…

ああーーーー!!!これ忘れてた!むっちゃ気づかなかった!!!うかつの大王!!!!
これを入れて、書き込みなおしたらなりました!鳴りましたぞー!!!!

うおおおおおM君ありがとう!O君も今回もありがとう!次回もよろしく!なんだかいろんな人を巻き込んでしまっているけど許してほしい…!

マジすか鳴りましたわ嬉しいわ…!

そしてちょっとだけ落ち着いたところでスケッチを見直しました。さっき知って嬉しくなっていた%d\n\r…のところはシリアルモニタに表示するための記述なのでこれはブザーには必要ないのでは?と思い外してみましたがちゃんと鳴ったので満足~

製作者のコメント

課題4達成おめでとうございます! 今回のお題が少し難しいかと思って予めヒントを出していましたが予想以上のif文の使い方にびっくりしました!

びっくりしたことについて少し解説します。

if文は条件式で処理する内容を切り替えることができますが、その条件式内に “,”(カンマ)を使って文を見やすくすることができます。

今回の例ではifの条件式が(“r_sen is %d\n\r”,g_sensor_value_r >= 500)です。条件を判断する文(g_sensor_value_r >= 500)の前にカンマで区切って前に文を追加することが可能です。カンマを複数使うと最後のカンマしか条件として使用されないので注意が必要です。

その文の構成がわかっているとif(“r_sen is %d\n\r”,g_sensor_value_r >= 500)をif(Serial.printf(“r_sen is %d\n\r”,g_sensor_value_r),g_sensor_value_r >= 500)とすることでわかりやすい記述になったと思います。

なるほど、条件は(“r_sen is %d\n\r”,g_sensor_value_r >= 500)全部だったんですね。
(g_sensor_value_r >= 500)だけでも動くけど、これだけだと融通が利かないというかそれしか許さないというか。Serial.printf…を使うと何をしているかがわかりやすくなるのかな?
例えば家で「お茶ください」と言われるのが(g_sensor_value_r >= 500)だとすると、「台所に行くなら冷蔵庫のペットボトルのお茶を取ってくれる?」のようにわかりやすく言う感じがif(Serial.printf(“r_sen is %d\n\r”,g_sensor_value_r),g_sensor_value_r >= 500)なイメージなのかな、と感じました。
“,”は欲張っていくつも入れないように気を付けないとですね。覚えておかなきゃ!

Pi:CO V2は如何か

Pi:Co V2は2024年6月25日に販売開始しました。
組込みや自律制御の基本要素を学ぶ方々はぜひ本製品をご利用ください。
Web shopにて、定価60,000円(税込)で絶賛発売中です。ご利用をお待ちしております!

タイトルとURLをコピーしました