STEAM教育ならぬ、STEAMライフ Science + Technology + Engineering + Art + Mathematics
旧『“PLASSON”自作二足歩行ロボット Personal Low-tech ASSembly Of Nisokuhokou 』

超入門本ここまでの補足

| コメント(0)

二足歩行ロボット製作超入門

超入門本シリーズをしばらくお休みする前に、補足です。

*****

1:0N0さんとこの不定期日記で、

メヒャニカ! 岡山県立大学ロボット研究サークルで、 ATmega128の罠の話。」

という記事がありました。リンク先にお邪魔してみると、ATmega128で2つある8ビットタイマのレジスタの並びが違っていて同じプログラムで動かないって話で、超入門本でも注意してねってことが書いてありました。

そーなんです。ATmega32(タイマ0とタイマ2が8ビットタイマ)でも違うんです。超入門本の場合は、本のサポートページ(URLは本に載ってます)の正誤表に書いてあったので、私は助かったのですが。

というわけで、超入門本でロボット作ってみようって人は、

をしっかり読みましょう。ヒント満載です。

追記:

いや、もちろん、データシートをしっかり読むのが一番なんですけどね。私も上で書いた正誤表だけじゃなくて、ぴしいさんに教えていただいた日本語データシートでも確認しました。

*****

2:10/17に

が、問題は、ごにゃごにゃ・・・(自分でアイディア見つけることこそが楽しいので、しばらく自分で考えてみます)。

と書きました。これは、8個のモーターを動かす場合、、、

8個を順番に動かすときは

  • タイマ0:パルス幅
  • タイマ1:パルス周期
  • タイマ2:waitルーチン用

ですが、8個を2個ずつ同時に動かすときは

  • タイマ0:1個目のサーボモーターのパルス幅
  • タイマ1:パルス周期
  • タイマ2:2個目のサーボモーターのパルス幅

となって、waitルーチン用のタイマーがなくなってしまったので、どーしよーかなーと、ちょっと考えてしまったわけです。

結局、8個を2個ずつ同時に動かすプログラムでは、グローバル変数1個使って、タイマ1の割り込み処理の中で「変数++;」って入れておいて、waitルーチンの中のwhile文でそのグローバル変数の値を使って時間を計っています。

これから先、いろいろ遊べるようにと考えると、サーボモーターは8個を順番に動かすことにして、タイマ2は自由に使えるようにしておいたほうがいいなぁと思っています。

コメントする

この記事について

このページは、SLANが2006年10月21日 01:26に書いた記事です。

ひとつ前の記事は「超入門はひと月お休み」です。

次の記事は「ロール方向安定化」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。