c - Rakuten Inc
100万ポイント山分け!1日5回検索で1ポイントもらえる
>>
人気記事ランキング
ブログを作成
楽天市場
000000
HOME
|
DIARY
|
PROFILE
【フォローする】
【ログイン】
おびやまロボット研究所 ~マイコン電子工作と自作ドローン~
ITRONでマイクロマウス
とのことでやってみることにしました.
まったく素人なので,探したらよさそうな本が2冊が見つかり,早速購入して読んでみました.
図解μITRONによる組込みシステム入門
本の通りに試してみようと思ったら,本で紹介されているリアルタイムOS smalightは有償でした.教育用途ということで問い合わせ,学校価格で購入しました.
もう一冊は,
ITRONとプログラミング入門
紹介されているHOSは無償なので早速ダウンロード,本やWebで調べながらサンプルを動かしたらすんなり動いたので,HOSを使ってマイクロマウスを動かしてみることにしました.
あれこれ試した
メモ書きはこちら
.
----------------------------------
目的は,ITRONで動かすことで完走や入賞することではないので,教材用に必要最小限の機能に絞ることにしました.
特に,プログラムの不慣れな学生に何ページにもわたるソースを見せるとそれだけで思考停止してしまうので,短いことには意味があります.
まず,以前に作ったマウスのソースコード約350行,コメント約100行まで削りました.
----------------------------------
バージョン1完成.
まずは最小限の書き換えでITRONにのせて,なんとなく動き始めました.
現時点のプログラムでも,パラメータを調整すれば最低限は走りそうです.
1)左右モータを別々のタスクとして作成
無限ループ中で励磁パターンを進めて回転させ,ディレイ時間を壁との距離などに応じて変化させることで左右の回転速度を独立に制御した.
2)センサは周期ハンドラで起動
前を読み取って25msのディレイ,左右を読み取って終わり,を50ms周期で起動させた.
3)上記より低い優先度でこれまでのメインプログラムをスイッチ入力タスクとした.
1)2)はそれぞれディレイが入るのでその間に3)を監視しにいき,スイッチ入力
があれば各種処理ルーチンに飛んで終わったら帰ってくる.
今のところITRON(HOS)を使わない場合とそう大きく変わらないですが,
これまでTimerAのタイマー割込みの中に更にカウンタを仕込んでモータやセンサのタイミングを処理していたのと比べると,処理が分離された分は分かりやすいかもしれません.
ITRONの学習を兼ねるため,ほかの機能をもう少し織り交ぜて改変してみます.
タスクに分けだだけのプログラム,micromouse.c
そのヘッダー micromouse.h と system.cfg
の圧縮.
uITRON_micromouse_v1.zip
----------------------------------
バージョン2改変
ITRONの他の機能を使うため,フラグを使ってタスク間で壁情報の通信をするプログラムを作成しました.
本には載ってなかったref_flgを使って壁の有無を他のタスクから参照することにして,仕様書とソースを見ながらやっとやり取りを確認して,実装.
まず,
センサの値をフラグ化した.突き詰めるとセンサの値は,
左右壁との距離を一定に保つためにスピード調整する以外には,
壁の有無とか,基準距離にあるかどうかが分かればいい.
次に,
モータのモード(フリー・前進・バック・ブレーキ)をフラグ化した.
指定距離進んだかどうかのフラグを立てることで,
モータのカウント数を直接参照することなくタスク間の連携.
という観点からフラグを使って最小限の情報のやり取りでタスク間の連携をしました.
フラグの定義
FID_SENSOR
0: 前壁の有無,なし(0)/あり(1)
1: 前壁の距離,遠い(0)/近い(1)
2: 左右前センサ値の大小関係,右が大きい(1)/左が大きい(0)
3: 左右前センサの差の許容値,差が大きい(0)/許容差内(1)
4: 右壁の有無,なし(0)/あり(1)
5: 右壁の距離,遠い(0)/近い(1)
6: 左壁の有無,なし(0)/あり(1)
7: 左壁の距離,遠い(0)/近い(1)
8: センサ値のLED表示,しない(0)/する(1)
FID_MOTOR
0,1: 動作モード,フリー(0)/前進(1)/後退(2)/ブレーキ(3)
2: 未使用
3: 速度切り替え,低速(0)/高速(1)
4,5: 動作モード,フリー(0)/前進(1)/後退(2)/ブレーキ(3)
6: 未使用
7: 速度切り替え,低速(0)/高速(1)
8: 直進モード,低速走行で壁との距離調整なし(0)/高速走行で壁との距離調整あり(1)
9: 走行距離フラグ,90度ターンの歩数進んだらフラグセット
10: 走行距離フラグ,1区画の歩数進んだらフラグセット
11: カウント開始フラグ,カウンタリセット・カウント開始(0)/カウント中(1)
ここまでのソースをアップします(まだバグあるかもしれません)
micromouse.c そのヘッダー,micromouse.h と,system.cfg
の圧縮.
uITRON_micromouse_v2.zip
----------------------------------
せっかく作ったのに自分で中身を忘れてしまわないように,というより忘れてしまっても思い出せるようにまとめました.語句の使い方など適当な部分がありますが,おいおい直すと言うことでご容赦ください.誤りのご指摘は大歓迎です.
リアルタイムOSでマイクロマウスを動かしてみよう
----------------------------------
参考書↓
ITRONとプログラミング入門
図解μITRONによる組込みシステム入門
ジャンル別一覧
出産・子育て
ファッション
美容・コスメ
健康・ダイエット
生活・インテリア
料理・食べ物
ドリンク・お酒
ペット
趣味・ゲーム
映画・TV
音楽
読書・コミック
旅行・海外情報
園芸
スポーツ
アウトドア・釣り
車・バイク
パソコン・家電
そのほか
すべてのジャンル
人気のクチコミテーマ
しんくぱっど
X270のキーボードを交換したい
(2024-11-18 06:40:01)
楽天アフィリエイト♪
とろ~りプリンサンドたっぷり4個セ…
(2024-11-27 01:13:16)
新製品発売情報・予約情報
【期間限定】ダイソンが31%OFF!!!
(2024-10-20 12:54:42)
© Rakuten Group, Inc.
X
共有
Facebook
Twitter
Google +
LinkedIn
Email
Create
a Mobile Website
スマートフォン版を閲覧
|
PC版を閲覧
人気ブログランキングへ
無料自動相互リンク
にほんブログ村 女磨き
LOHAS風なアイテム・グッズ
みんなが注目のトレンド情報とは・・・?
So-netトレンドブログ
Livedoor Blog a
Livedoor Blog b
Livedoor Blog c
JUGEMブログ
Excitブログ
Seesaaブログ
Seesaaブログ
Googleブログ
なにこれオシャレ?トレンドアイテム情報
みんなの通販市場
無料のオファーでコツコツ稼ぐ方法
無料オファーのアフィリエイトで稼げるASP
評判のトレンドアイテム情報
Hsc
人気ブログランキングへ
その他
Share by: