前回,蓄光テープにLEDで像が描けることを確認しました。蓄光テープはLEDの光を当てた直後は明るく,時間が経つにつれて暗くなっていきます。暗くなったところにもう一度LEDの光を当てれば,1回目とは違う像を描くことができますね。このためには,テープを環状にして,光が弱くなったころにLEDが戻ってくるようにすると良さそうです。今回は,これに挑戦してみます。テープ上にあるかどうかを光センサで判別テープを環状にするので,LEDがテープをたどる方法を考えないといけません。今回は簡単に,光センサを使うことにしました。黒い紙の上に蓄光テープを貼り,反射光を見て,蓄光テープ上にいるかどうかを判断します。進行方向に対して左前方にセンサを置き,テープの上に来たら左に,テープから外れたら右に向きを変えます。これによって,センサがテープの縁をたどるようになります。テープの最後を過ぎるとセンサがテープから外れ,右方向に回り続けます。その結果180°回転して,反対側のテープをたどることになります。このテープを渡りきると,また180°回転して,最初のテープに戻るという仕組みです。考えた通りに行くでしょうか。やってみると,とりあえず期待通りに動いてくれているようです。ケーブルがからまるという問題はありますが,エンドレスに描いていくことができるようになりました。あとは,PCから文字イメージをもらえば,好きなテキストがどこまでも描けることになります。いうわけで,次回はこれに挑戦してみましょう。自分でも作ってみたいという方のために,もう少し詳しく見ていきましょう。センサですが,フォトリフレクタと呼ばれる,反射型の光センサを使いました。データシートを見ると,フォトトランジスタ側は,1V印加時の電流が最大2mAくらいです。2kΩの抵抗を直列に入れて5Vの電源を用意すると,この抵抗に4Vが現れ,センサに1V残ることになります。これをマイコンのADコンバータに入力します。このセンサは赤外線タイプで外乱光の影響を受けにくいということになっていますが,せっかくなのでLEDもマイコンで制御するようにしました。LEDオン時の数値と,LEDオフ時の数値の差を反射光と判断することで,外の明るさの変化に強くなります。前回の基板と今回の比較。PICのチップと紫外線LEDが並んでいるだけです。今回は車輪の車輪(モーター)の位置を変え,LEDの反対側に光センサを配置しました。これがテープの位置を判別します。ソフト側ですが,反射光の強さに応じてモーターの速度が連続的に変わるようにしました。今回使ったのはステッピングモーターですから,なめらかに回転させるためのPWM制御も必要です。次回の範囲まで考えると,シリアル通信も必要です。組むのがいいでしょうか。これは私のやり方ですが,まずシリアル通信に必要なクロックを基準にしました。p.133に詳しい記事があります⁠)⁠。これを256分周してPWMに使うと,約110HzのPWM出力が得られます。同時に,速度を位置に反映させる計算もおこないます。ここまでがシリアルクロックごとの処理です。シリアル受信処理retlw0光センサの処理とシリアル送受信,LED出力の処理は,これとは独立して行います。今回はシリアル送受信はやりませんが,LEDを出力して,センサのAD変換を行い,結果を速度に反映させる処理を行います。シリアル送受信中にセンサ処理が一瞬だけ遅れても,問題ないだろうという判断です。このあとAD値を速度に反映センサの動作確認ですが,せっかくLEDが8つあるので,ここにAD変換した8bitをそのまま出力してしまいました。反射させたときにどんな値がが出るかがわかれば,それを速度に変換するときの参考になります。今回は,LEDオン時とLEDオフ時の差が0x20以下であればテープ外,0x40以上であればテープ上と判断し,この間であればなめらかにモーター速度に反映されるようにしました。みなさんが作るときの参考にしてください。著者プロフィール木元峰之(きもとみねゆき)独立系ソフトハウスに8年間勤務,パッケージソフトの開発や記事執筆などを行う。現在はフリーのコンサルタント。SWESTなどのワークショップで分科会のコーディネータを務める。デジタル回路設計歴30年,プログラミング歴27年。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。