アクセスカウンタ

help RSS テーマ「マイコンプログラミング」のブログ記事

みんなの「マイコンプログラミング」ブログ

タイトル 日 時
100円 DIP ARMでタッチセンサ
100円 DIP ARMでタッチセンサ  11月号のトラ技特集でDIP ARMの応用編を書くにあたって、このLPCマイコンは、価格からいってPICなどの8ビットマイコンの対応なので、PICに出来てLPCマイコンで全く実施例を見たことが無いアプリケーションとして、タッチセンサを選んでみました。タッチセンサは、今年6月号のPIC特集でも取り上げましたが、PICにはタッチセンサ専用の内蔵回路を持つ品種もあり、ネット上にもたくさんの情報があります。また、タッチセンサ専用の回路を使わないADコンバータだけでできる「静電分圧方式」のアプリケーショ... ...続きを見る

ブログ気持玉 0 / トラックバック 2 / コメント 0

2012/10/13 07:40
トラ技11月号付録組み立て
トラ技11月号付録組み立て ずいぶん長らく更新をさぼっていました。 ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2012/10/12 23:47
新しいF1シリーズPICを使ったラジアルタッチスライダーの製作
新しいF1シリーズPICを使ったラジアルタッチスライダーの製作  前回は、PIC18F14K50のAD変換回路を使った、CVD方式のタッチセンサでリニアスライダーを試してみましたが、今回は、新シリーズのPICにも内蔵されているCSM方式のタッチセンサ回路を試してみました。タッチセンス用のパッドも8枚の電極をラジアル型に並べた構成にして、iPODのような操作を意識してみました。  PIC16F1938は、28PinPICで16Kワードのフラッシュと1KBのRAMがあり、最大25本のIOと本格的なスペックですが、秋月で150円というリーズナブルな値段で売ってい... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 5 / トラックバック 0 / コメント 1

2011/12/04 00:29
PIC18F14K50を使ったリニアタッチスライダーの製作
PIC18F14K50を使ったリニアタッチスライダーの製作  前々回に紹介したDCDCコンバータにI2Cスレーブの機能を実装して、外部からの出力電圧の制御と出力電圧を外部から読み出せるようにしました。これらの外部からの制御の実験のために、USBから色々な機能を使えるように考えている(USBガジェット)18F14K50を使ったマイコンボードにI2Cマスタの機能を組み込みました。DCDCコンバータの出力電圧は、USBガジェットに繋いだPC上のターミナルからコマンドを入力することで設定、又は読み出しをすることができるようにしました。このあたりのI2Cインタフェ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2011/11/13 23:18
新しいF1ファミリPICを使った昇圧DCDCコンバータ
新しいF1ファミリPICを使った昇圧DCDCコンバータ  長らく更新をしていなかった「からくり玉手箱」のSTM32Discoveryを使ったマイコンプログラミング4の更新を一時中断しましたが、これに代えて、新たに新PICを使った電子工作を始めることにしました。  PICは、2輪倒立振子ロボットで18F2550と18F14K50を使いましたが、ポピュラーなPIC16F84より高速、高性能、高機能なエンハンスドPIC16ファミリが100円程度(秋月通商)で買えます。また、USBマイコンではかなり安い18F14K50をもっと使い倒したい等... この秋は... ...続きを見る

面白い ブログ気持玉 2 / トラックバック 0 / コメント 0

2011/10/13 21:44
STM32マイコンボード(STM32VLDISCOVERY)を動かしてみる
STM32マイコンボード(STM32VLDISCOVERY)を動かしてみる  IAR Embedded Workbenchが動かせるようになったので、まずは、LEDとスイッチを動かす簡単なプログラムを作ってみました。普通のタイマカウンタは、まだ仕様が読み切れていないので、比較的簡単に動かせるシステムタイマ割り込みでLED表示を制御しています。初めて使うマイコンは、ハードウェアの初期化やタイマ割り込みの設定など使い方を掴めるまで結構大変なのですが、このSTM32は、マイコンベンダが作ったドライバファームウェアを使うことで、この辺りが簡単に出来てしまいます。  概略のプロ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2011/04/25 21:14
ThinkPad X41 HDDアクセス高速化とバッテリのいたわり設定
ThinkPad X41 HDDアクセス高速化とバッテリのいたわり設定  今まで使っていたVAIO R505のディスクが突然いやなシークを繰り返す音がしたと思ったら、お亡くなりになってしまいました。ディスクの異常音がしてからUSBメモリで大事なWORD文章とかJUDEのデータとか抜き出していましたが、それもつかの間で、青画面になってWindowsが落ちてしまいました。再度立ち上げても非情にも「アロケーションテーブルエラー」で立ち上がりません。いくつかリカバリツールを試してみましたが、やはりHDDが読めていないようでだめでした。このVAIO SONY製の華奢なメカのせ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/09/20 16:04
マイコン装置の設計とユースケース
マイコン装置の設計とユースケース  ホームページのからくり玉手箱の倒立振子ロボットのドキュメントを書き終わったので、ペンディングにしていた、「マイコンシステム設計」の目次を作り書き始めました。事例は記憶に新しい倒立振子ロボットを題材にするつもりです。マイコンプログラミング3を書き進めているときは、こんなロボットを作るのは初めての経験だったので、早く結果が見たくて、試作のコードをそのまま直していないところもあり、システム設計できていない、お恥ずかしいコードになっています。(かなり言い訳ですが)  「マイコンシステム設計」では、再... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 1 / コメント 0

2010/09/10 23:20
倒立振子ロボットジャイロの傾斜角積分誤差(その2)
倒立振子ロボットジャイロの傾斜角積分誤差(その2)  ロボットを最初に置いた位置に留まらせる対策のその2です。 ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 0 / コメント 0

2010/08/24 22:14
倒立振子ロボット(LIBRA)のジャイロの傾斜角積分誤差
倒立振子ロボット(LIBRA)のジャイロの傾斜角積分誤差  倒立振子ロボットを作る上で、当初から気になっていたのは、ジャイロの出力を積分して作る傾斜角度の精度でした。とにかく、ロボットは少しでも傾けば倒れてしまう構造だから、角度の精度は最重要と考えていました。色々資料を調べると、加速度センサと組み合わせて、精度を上げるやり方も見つけましたが、市販のBeauto BalancerやPuppyなどがジャイロだけでやっていることもあり、極力簡単な構造で作ることも目的ににしていたので、ジャイロだけでやってみることにしました。このために、このロボットのモータ制御... ...続きを見る

驚いた ブログ気持玉 2 / トラックバック 1 / コメント 0

2010/08/22 17:27
2輪倒立振子ロボット 一応完成!
 完成した電源(DCDCコンバータ)を組み込み、モータ制御ボードに、この電源を繋ぐ改造をして、バッテリ(Ni-MH単三4本)駆動出来るようにしました。取り急ぎ動かしてみた感じは上々です。特に新たにGain調整はしていませんが、モータのパワーが上がった感じで、負荷無しで(ロボットの上に何も乗せないで)動かすと細かく振動して、Gainが上がり気味に感じます。  DDコンICの発熱を心配して、モータ電源を15V×2にしましたが、かなりぐりぐり動かして見た後に、ICを触ってもほとんど温度が上がっている... ...続きを見る

かわいい ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/08/19 21:13
2輪倒立振子ロボット(LIBRA)の電源(DCDCコンバータ)の製作
2輪倒立振子ロボット(LIBRA)の電源(DCDCコンバータ)の製作  LIBRAを赤外線リモコンで操縦できるようになったので、そろそろACアダプタで動かしているのが気になっています。元々、Ni-MHバッテリ4本(1.2V×4本=4.8V)からDC-DCコンバータで必要な電圧を作るつもりで、電池ケースの下にその分のスペースを空けてあります。  必要な電源は、15V 0.6A程度(モータ用) 6V 0.3A程度(ロジック用)です。適当なモジュールが市販で直ぐに見つかるだろうと探していましたが、そもそも電池レベルの電圧から昇圧するモジュールはあまり売られておらず、... ...続きを見る

驚いた ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/08/16 23:54
2輪倒立振子ロボット(LIBRA)に負荷を掛けてGain調整してみました
2輪倒立振子ロボット(LIBRA)に負荷を掛けてGain調整してみました  割込み周りを大分弄ったので、Gainの再調整をやってみました。このロボットのGain調整はあまりシビアではなく、動かしながら10刻みとか100刻みとか適当な値を放りこんでいますが、一度倒立すれば、多少値を変えてもそれほど挙動は変化しないようです。そこで、少しロボットに荷物を載せて、さらに最適なポイントがあるかどうか試してみました。結論から言いますと、これもあまりシビアな調整にはならないようです。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/08/07 20:44
PIC18Fの2レベル割込みを使ってみました。
 LIBRAの赤外線リモコンの受信処理は、タイマ割込みの時間を基準にデータの0、1を判断しているので、割込み時間が伸びるとデータ誤りとなってしまいます。そこで、前回のブログで書いたように、赤外線リモコンとついでにモータ制御を高レベル、それ以外の時間の掛かるジャイロ処理や倒立処理を低レベル割込みにしました。  C18コンパイラでのPICの多重割込み使い方は、C18コンパイラのマニュアルの#pragma interruptの項を見れば書いてありますが、UBW上での書き方を含めて以下にまとめて置きま... ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2010/08/06 23:56
LIBRA(2輪倒立ロボット)に赤外線リモコン処理を組み込みました。
LIBRA(2輪倒立ロボット)に赤外線リモコン処理を組み込みました。  78K0で作った赤外線リモコン受信のモジュールをPIC用に移植して組み込みました。古いアナログテレビのリモコンで操作できるようにしました。行きたい方向のテンキーを押すと、直進、後進、右折、左折、後ろ右折、後ろ左折、右回転、左回転の8動作ができます。モータのスピードパラメータは、適当に以下のようにしました。 ...続きを見る

驚いた ブログ気持玉 2 / トラックバック 0 / コメント 0

2010/08/06 07:34
PIC18F2550のEEPROMへのRead/Write
 2輪倒立ロボットのGainパラメータをPICのEEPROMにセーブして、電源立ち上げ時にリストアするようにしました。 PICのEEROMのアクセス(特にWrite)は、私の持っている解説本を見ると、このアセンブラで書いてあって、「その通りに記述すること」などと書いてあり、C言語でプログラムを作る上であまり気持ちよくありません。そこで、解説本のアセンブラをCで書き直してみましたが、特に問題なく動いているようなのでソースを紹介します。  特に注意しなければならないのは、書き込みタイミングが重要... ...続きを見る

ナイス ブログ気持玉 2 / トラックバック 0 / コメント 0

2010/07/31 22:16
倒立制御処理
 ジャイロ制御とモータ制御が出来れば、後は10数行の倒立制御のコードを書けば倒立を試すことができます。倒立制御のやりかたについては、からくり玉手箱のステップ1 倒立振子の制御 (http://www5.pf-x.net/~jr1wfhbbs/micom/text/miconlesson31.pdf)に書きました。これを書いていた頃は、本当にこれで良いのか実感として理解できていませんでしたが、実物が出来て色々いじってみると、数学ではなく実感として、制御が分かるようになりました。  要は、ここに... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0

2010/07/30 21:13
LIBRA-ZEROのモータ制御処理の改善
LIBRA-ZEROのモータ制御処理の改善  前回のブログで気が付いた2つの問題点を改善した、モータ制御関数を作り、ロボットに組み込みました。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/07/25 22:00
角度算出処理(レートジャイロ)の積分誤差
 ジャイロの角速度出力を積分して角度を算出している処理で、ジャイロを振らせた後に元に位置に戻したときに、元の値に戻るかということで(繰り返し精度)、ここ数ヶ月悩んでいましたが、先日ふと閃いて先が見えました。多分、ネットの書き込みを見ると同じ悩みを持っている方は少なくないと思います。  結論からいうと、ジャイロの出力(アナログ値)をAD変換して、積分計算(累積加算)をする場合の計算精度の如何で、繰り返し精度が決まるという言うことで、至極当たり前のことでした。  それでは、doubleとかlon... ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 2

2010/07/22 12:59
LIBRA(倒立振子ロボット)のGain調整
LIBRA(倒立振子ロボット)のGain調整  連休で車体を作った倒立振子ロボット(LIBRAと命名)のGain調整を昨日に引き続いてやって、1分位は立つようになりました。この時のGain調整の方法を紹介します。 ...続きを見る

驚いた ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/07/20 23:55
倒立振子ロボット(LIBRA)の車体完成!
倒立振子ロボット(LIBRA)の車体完成!  連休を使って、ロボットの車体を作りました。 シャーシは、カッターで簡単に切れる1mmのアルミ板を使いました。強度的にも特に問題はないようです。モータ制御ボードの横幅に合わせて幅75mm、高さは150mmにしました。モータを取り付けた下側は、35mmと40mmの六角スペーサを繋いだ物を2組み使って止めています。アルミ板の曲げの精度に自信が無いので、2個のモータの軸を揃えたいモータ周りをこんな構造にしてみました。結構このスペーサが高くて4本で300円位しました。上部に付けた鍔は、倒れた時にボード... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/07/19 09:38
2モータ(StepperMotor)制御を実装しました(YouTubeビデオ追加)
2モータ(StepperMotor)制御を実装しました(YouTubeビデオ追加)  以前作ったプロトタイプのステッピングモータの処理をロボットで実際に使えるように、機能拡張しました。 仕様決定のための試行に、少し時間が掛かってしまいました。  概略、以下の仕様に落ち着きました。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/07/13 12:46
モータ制御ボードのジャイロ(積分による角度算出)を動かしました。
モータ制御ボードのジャイロ(積分による角度算出)を動かしました。  前回、USBの先にハイパーターミナルを繋げて、データ出力が出来るようになったので、78K0マイコンボードに仮に繋いで、動作を確認したジャイロモジュール(AE-GYRO-SMD)部分の動作確認をしました。 ...続きを見る

驚いた ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/06/19 12:26
USBシリアル(PIC18F2550のUSB USART)を動かす
USBシリアル(PIC18F2550のUSB USART)を動かす  今回作ったモータ制御ボードには、表示としてLEDを4個、入力としてスイッチを2個載せましたが、今後、ロボットの制御のためには、運動方程式のパラメータの設定や、内部状態を表示したりする必要があると思っています。そこで、マイコンのプログラムの書き込みに使っているUSBインタフェースをユーザプログラムからもシリアルインタフェースとして使えるようにします。PIC18F2550でUSBをユーザプログラムから使うために、Microchip社から「USBフレームワークス」というサンプルプログラムが提供されて... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 4 / トラックバック 0 / コメント 0

2010/06/07 00:31
ステッピングモータを回す
ステッピングモータを回す  前回作成したマイコンボードに、ステッピングモータを繋いで回すテスト用のプログラムを作ってみました。 今回、ロボットを駆動するモータ制御は、倒立制御の運動方程式が出力するモータ回転加速度を積分してモータ回転速度として、モータ制御部分に与えるように考えているので、回転数を入力パラメータとして、それに応じた回転数制御をするロジックを考えてみました。  ステッピングモータの原理は簡単で、永久磁石のロータの周りに電磁石のステータを置いて、ステータの磁界を順次回転させたい方向に変化させることで、ロータ... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 6 / トラックバック 0 / コメント 0

2010/05/30 17:55
UBW(Firmware-B)でのPICプログラム作成
 UBW環境でPICのプログラミングをするのは、既に色々な方が記事を書かれているので、新しい情報あまり無いのですが、下記のサイトのQ&Aやサンプルプログラムを読んで色々分からないことが解決できましたので、私が悩んだところをこれから始める方のご参考のためにまとめて置きます。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/05/24 21:22
モータ制御用マイコンボードが完成!
モータ制御用マイコンボードが完成!  モータ制御用マイコンボードの製作に連休明けから着手して、やっと完成しました。後は、ステッピングモータをつなぐケーブルを作ればモータが動かせますが、その前に初めて使うPIC18Fに慣れるために、割り込みでLEDをインクリメント表示する簡単なテストプログラムを作って動作確認をやってみました。  このボードは、このUSB内蔵のマイコンを選択した動機にもなったUBW(USB Bit Whacker)を使ったBootLoaderでPCのUSBから直接マイコンのフラッシュメモリの書き換えができます。以前... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/05/23 13:59
最小二乗法予測でドリフト補正したときのビデオを撮りました。
 ドリフト補正(その5)でパラメータをチューニングした結果で傾斜角表示をさせたときのビデオを撮りました。同じようなビデオは、何回もここに載せており見た目はあまり変わっていませんが、以前のは長時間の平均値を使うやり方で電源を入れてから使えるようになるまで時間が掛かったので、長い初期化(1.5分程度)が終わってからビデオを撮りましたが、今回は約2.5秒で初期化が終わるので、初期化からビデオを撮っています。電源を入れて小さなLEDが消えれば初期化完了です。  このブログで書いた内容のまとめと、マイコ... ...続きを見る

驚いた ブログ気持玉 2 / トラックバック 0 / コメント 0

2010/04/29 08:59
ジャイロセンサ(ENC-03R)のドリフト補正(その5)
ジャイロセンサ(ENC-03R)のドリフト補正(その5)  なかなか積分誤差が小さくならず、繰り返し精度が上げられなかったのですが、前回(その4)のドリフト補正の方式でセンサ出力のサンプル周期やセンサの静止を判断する敷居値を色々いじることで、かなり良い動きに追い込めたので報告します。  先ずは、前回と同じ、Excelのグラフを見て下さい。前回よりも長時間動かしていますが、積分出力が元の水平の位置に戻すと綺麗にゼロ付近に戻っているのが分かると思います。例によって、角速度のグラフは、ゼロ点付近を拡大していますが、ゼロ点が右に向かうにつれて、下降方向にドリ... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0

2010/04/27 00:14
赤外線リモコン受信プログラムの応用(プレゼンコントローラを作る)
赤外線リモコン受信プログラムの応用(プレゼンコントローラを作る)  前回作ったプログラムを使うことで、赤外線リモコンのどのボタンを押すとどんなコードが出てくるか解析することが出来るようになったので、これを使って、応用プログラムを作ってみました。今までに赤外線リモコンを使ったリモコン自動車など作ったことがありますが、今回のマイコンボードにはモータは付けていないので、何か良い題材はないかと考えて、せっかくPCとの間にシリアルインタフェースがあって動かせるようにしたのだから、これも使って、PC画面の操作をするプログラムを作ることにしました。多分このようなものは、プレ... ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2010/02/14 17:42
赤外線リモコン受信プログラムを作る
 実際に以下の仕様で、赤外線リモコンの受信プログラムを考えて見ます。よく見かける大概のリモコンが読めるように、3種類のフォーマットを自動認識すると共に、この仕様で読めないデータ(タイミングやフォーマットの相違など)時でもフォーマットデータを表示出来るようにします。また、家電協フォーマットやSONYフォーマットの仕様にある可変データ長にも対応出来るようにします。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/02/11 22:41
78K0マイコンボードで赤外線リモコンのコード解析・表示するプログラムを作る
78K0マイコンボードで赤外線リモコンのコード解析・表示するプログラムを作る ■赤外線リモコン  シリアルインタフェースプログラム第3弾として、赤外線リモコンのコード解析用プログラムを作ります。  一応メジャーと思われる、NECフォーマット、家電協フォーマット、SONYフォーマットについては、データ内容迄表示するロジックを最初から実装しますが、良く分からないコードについては、1フレーム分のビット0,1の長さ(0.1ms単位)の表示だけはできる機能を付けます。このデータによってこのリモコンコードを解釈するロジックを組み込むことができるように成ります。 ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 1 / コメント 0

2010/02/07 18:24
マイコンへのリバーシプログラムの移植
マイコンへのリバーシプログラムの移植  マイコンボードでコンソールが使えるようになったので、マイコンでどの位できるか、定番のオセロゲームでも移植したらどの位強さのものが出来るかちょっと面白そうだったので試してみました。  一から作るのは大変そうなので、まずネットで探してみたら、以下のサイトが詳しい説明付きでCのソースを公開しているので移植しやすそうと言うことで、これの移植からスタートしました。 ...続きを見る

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/01/31 15:29
マイコンでのfloat計算
 前回このブログに書いたときに作ったシリアル通信処理やputchar(),getchar()のコーディングをブラッシュアップして、マイコンプログラミング教室のテキストのアップデートをしました。シリアル通信の解説も少し載せています。  今回使っている78k0/KB2は、I2CやRS232Cなどのシリアルインタフェースのハードウェア回路が組み込まれているため、比較的簡単に、これらのインタフェースを繋ぐためのプログラムが書けてしまいます。I2Cはスタートコンディションやストップコンディションを含めた... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/01/25 21:07
RS-232Cによるターミナル接続(printf,scanfを動かす)
RS-232Cによるターミナル接続(printf,scanfを動かす) ■はじめに  マイコンプログラミング2のシリアル通信の課題を考えています。今使っているマイコンボードは、プログラムの書き込みに使うシリアルインタフェース(USB-RS232C変換)を載せており、パソコンからオンボードでフラッシュメモリの書き込みが出来るようになっています。そこで、このシリアルインタフェースを動かすマイコン上のプログラムを書けば、パソコンとマイコンボードをシリアル通信で繋ぐことが出来ます。つまり、パソコン上はターミナルソフト(WindowsのハイパーターミナルやTERATERMの... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2010/01/19 22:35
I2Cインタフェース温度センサ(LM73)を使った温度計プログラム(78K0/KB2)
I2Cインタフェース温度センサ(LM73)を使った温度計プログラム(78K0/KB2)  このブログを書き始めてから2ヶ月余りになりました。マイコンプログラミング2の課題が少し手間が掛かるものになってきた関係上、更新の時間がなかなか取れないでいます。  正月休みを使って、マニュアルを理解するのに時間がかかりそうな、I2Cインタフェースの温度センサを使って温度計を作るプログラムを作りました。  元々この温度センサ(LM73)は、今回のマイコン(78K0/KB2)を入手したエレキジャックの付録だったのですが、エレキジャックには、78K0に繋いだ記事は無く、78K0のマニュアルと格闘... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0

2010/01/09 14:44
マイコンで音楽演奏(MMLオルゴール)
 78K0のシミュレータで音が出せればマイコンプロ1でやりたかったのですが、今は無理なので、マイコンボードの課題に入れました。当然ハードウェアはシンプル過ぎるぐらいにシンプルなので、鑑賞に値する音はでませんが(家族からは騒音扱いされています)、電気工学的に音楽を演奏するにはどうするかと言うような部分で面白い題材だと思っています。 メロディを演奏するには、楽譜通りの音程と音長の音を電気的に作ってスピーカから出すようにすれば、曲がりなりにもメロディを奏でることが出来ます。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/12/24 22:39
78K0マイコンボードで60分タイマプログラム
 マイコンプログラミング1の課題で作った99秒タイマプログラムを拡張して、4桁表示の60分タイマプログラムをマイコンボードを使った課題にしてみました。シミュレータでは、ダイナミック点灯が辛いので、泣く泣く2桁表示に制限した課題にしましたが、実機ではLEDを6桁載せたので、4桁表示は余裕です。時間設定で+1、−1する押しボタンスイッチを長押しすることで、+10、−10する機能もシミュレータでは動きは確認出来るものの操作性は良くないので、このあたりも実際触って見たいところです。さらに、シミュレータで... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/12/07 21:56
78K0マイコンボードでスイッチ入力課題(早押しゲーム)
スイッチ入力のマイコンボードでの課題を考えてみました。スイッチ入力はCubeSuiteのシミュレータで出来てしまっているので、シミュレータでは出来ないリアルタイム動作が必要な課題になっています。 LED表示関数使って簡単なゲーム(早押しゲーム)を作って見ます。LEDに"push"が表示されたら極力速くボタンを押して反応時間を1/1000秒の精度で測るという全く面白みの無いゲームですが、自分がどの位の早さで反応できるか老化を測るには良いのではないかと。因みに、普通に押すと0.2xx秒程度、一生懸... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/12/05 15:24
マイコンボードでのスイッチ入力
 マイコンプログラミング2で、実機のマイコンボードでスイッチ入力のテキストを書いてますが、スイッチ入力は、シミュレータではダイナミック点灯がきれいに出来なかったLEDとは違い、シミュレータでもそれなりにプログラムが作れたので、ここの課題をどう作るか悩みました。一つは、シミュレータでは絶対に起きないチャタリング対策を書きましたが、もう一つは、リアルタイム処理を作ることにして時間を計るプログラムを課題にしました。タイマを4つ、その内3つを割り込みリソースに登録して、細かい時間規定の要件を定義したゲー... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/30 12:48
3軸加速度センサーのテスト
先に紹介した、演習機材に搭載した3軸加速度センサーは、初めて使う部品なので、演習機材のテストを兼ねて少しプログラムを作って見ました。 この加速度センサー(KXM52-1050モジュール)は、X,Y,Zの出力がそれぞれ0Gの時に電源電圧の1/2が出力され、0G〜2G迄Gの大きさに応じた電圧が出てくる仕組みです。従って、それらの出力をマイコンのAD変換入力で受けてマイコンでAD変換すれば、ソフトウェアが扱えるデジタル値が取り出せます。 当然静的なGつまり重力加速度も検出出来るので、センサの傾き(... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/16 22:39
マイコンプログラミング2の演習機材完成
マイコンプログラミング2の演習機材完成 シミュレーションによるプログラミングは、手軽さに置いては大変良いのですが、やはり速度の面で厳しいものがあります。また、色んな入出力機器を繋いで動かすことは出来ないので、シミュレーションを卒業したら実機によるプログラミングをやりたくなると思います。私のマイコンプログラミング教室でも「マイコンプログラミング2」と題して、実機演習機材を使った演習作りに着手し、演習機材を完成することが出来ました。演習機材の構成については、すでに紹介済みですが、完成したボードの写真を載せます。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/16 22:21
電子工作
 マイコンプログラミング2の教材用に実機を組み立てているが、自作PCや既成のプリント板での電子回路の組み立ては偶にやったが、ユニバーサル基板で部品を並べての組み立てはほんとに久々だ。ようは、エレキジャック付録のマイコン基板の周りにI/Oを付けるだけなので、特に回路図も作らず、簡単なブロック図と部品のマニュアルを見比べながら作業で、トランジスタ周りの抵抗値を決めるのに電卓を弾く位で論理がどうのというものではない。  トランジスタと言えば、今、2SA1015,2SC1815の2種類の部品を使ってい... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/10 23:52
マイコンプログラミング2実機の組み立て
マイコンプログラミング2実機の組み立て  部品が集まったので演習機材の組み立てを始めた。ユニバーサル基板の上にLEDやトランジスタ抵抗などを並べて、細いテフロン線をストリッパーで剥いてICのピンに絡げながら半田付けを行う。何十年ぶりかの作業だ。昔はもっと速かったと思うが、今は老眼鏡を掛けても手元がよく見えないので、カンで線を絡げて半田付けをする。うまく付いたかどうかルーペで確認する作業を延々続けて、1日やってもLED周りの配線がやっと終わった位でなかなか進まない。  仕様に書いたように繋ぎたい機器がたくさんあるので、マイコンのI/O... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/09 21:41
C言語プログラミングでのファイル分割
C言語プログラミングでのファイル分割  プログラミングの練習を終えて少し実用的なプログラムを作ろうとすると、作りやすさやメンテナンスを考えて、適当な大きさの機能の固まりでソースファイルを分割する。UMLの活用のところで書いたクラスを1つのファイルに対応させる場合も同様である。そこで、C言語でのファイル分割について必要なところを1枚の紙にまとめてみた。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/08 12:51
マイコンプログラミングとアーキテクチャー
 アーキテクチャーやアーキテクトという言葉を聞くと何か高尚なイメージを持つのは僕だけだろうか。マトリクスの最終回に出てくるアーキテクトは、白髪でちょっと恰幅が良くてそれでいて怖そうな人物がでてくるが、まさにそんなイメージである。オブジェクト指向の勉強のために、3アミーゴと呼ばれた、ヤコブソン、ブーチ、ランボーが書いた、「UMLによる統一ソフトウェア開発プロセス」という本を読んだが、ここで説明されているアーキテクチャーは、このイメージとは少し違っていた。  まずこの本に書いてあることは、ソフトウ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/06 21:37
マイコンプログラミング1修了課題(デジタル時計)
マイコンプログラミング1修了課題(デジタル時計)  Cubesuiteのシミュレーション環境で実現できるマイコンプログラミングの総集編としての課題を検討してみた。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/02 21:17
マイコンプログラミング2
 そろそろCubesuiteのシミュレーション環境を使ったマイコンプログラミング1が終わりに近づいたので、本物のハードを使った講習(マイコンプログラミング2)の検討を始めた。  マイコンについては、これは当初から予定したマイコンプログラミング1でも使った、78K0/KB2でCQ出版のエレキジャックNo.8付録のモジュールを使う予定だ。このモジュールは外付けにRS232Cのインタフェースを付ければ、オンボードでプログラムの書き込みまで出来るようになる。そこでプロセッサ部分は、シミュレーションの時... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/02 20:51
マイコンプログラミングでのUMLの利用その0
 初心者にプログラミングを教えていると、テキストの例題の解答を見れば分かるのだけれど、課題を見たときにどう書き出せば良いか分からないという人がたくさんいます。そんなときは、「いろんなソフトをたくさん読めばだんだん直ぐにどう書き出せば良いか分かるようになる」という話をします。このあたりの感覚はどういえば良いか分からないのですが、人の頭の中の高度な働きのように思えます。「芸術は爆発だ!」とかで芸術作品や文学作品を作り出す作業と似ているところもあるのだが、無から急にコードが書けるのかというと、まあそん... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/11/01 13:05
ステートマシン図と状態遷移表
ステートマシン図と状態遷移表  UMLができるずっと以前に、ステートマシン図が状態遷移図という言い方をされていた頃、ステートマシンを表す記法として、状態遷移表というものがありました。この図は以下のように縦軸にステートマシンの状態、横軸にイベントを書き、縦軸と横軸の交点にイベントが起こったときにどの状態に遷移するかを書いた表である。 ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 1 / コメント 0

2009/10/27 22:11
static修飾子の効用
 C言語で使われる変数は、その変数が使用できるスコープをその変数を定義するときに決める仕様となっているのはご存じだろう。一番多く使われるのが自動変数(オート変数)でその変数が定義された関数の範囲内のスコープをもった変数である。当然この変数は同じ名前の変数であっても定義された関数が違えば別物として扱われるが、定義した関数から抜けると(スコープ範囲外)その内容は無効となる。この自動変数の対極にあるのが外部変数(グローバル変数)で変数を関数の外で定義することで、システム全体で1個のものとして扱われる。... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/25 10:26
CubeSuiteのシミュレータでAD変換プログラムを動かす
 Cubesuiteのシミュレータで動かしたAD変換プログラムのPC画面をキャプチャしてYouTubeに載せてみました。やはり、ダイナミック表示と画面キャプチャを動かすのはきついらしくかなり7セグメントLED表示の切り替わりが遅く、かつランダムになってしまっています。シミュレータなので当然実物と同じとはいきませんが、実際はもうきれいに表示しています。  このプログラムは、ボリュームからの電圧をマイコンに入力してそれをAD変換して3桁で7セグメントLEDで表示しています。ボリュームの下に表示され... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/24 17:00
ポインタのポイント
 C言語でのプログラミングのトピックで、ポインタに触れない訳には行かないので、入門者が良く間違える1、2、3(ワン、ツー、スリー)ついてまとめておく。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/19 21:09
マイコンプログラミングへのUML活用その2
 活用その1で詳細クラス図、詳細コラボレーション図、ステートマシン図ができたらこれをC言語で実装(プログラミング)するやり方を紹介する。  C言語ではクラスを使えないので、クラス図の1つのクラスをクラス名と同じ名前をつけた1つのファイルに対応させる。ファイルにはクラスで定義した属性をファイル内のみで有効とするようにstatic修飾子を付けた変数で表し、操作をユーザ関数で表す。このユーザ関数は他のファイル(クラス)から参照出来ようにヘッダにこの関数のプロトタイプ宣言を入れ、このヘッダを他のファイ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/17 23:25
マイコンプログラミングへのUML活用その1
 オブジェクト指向設計手法での記法を標準化したUMLは、町の小さな本屋さんのコンピュータのコーナでも何冊かの本が置いてあるほどポピュラーな存在であるが、ことマイコンプログラミングで積極的にこれを活用した内容にはあまりお目にかからない。これらの本の内容も組込みソフト系の例が載っていることが少ないせいもあるが、一番大きな理由は、マイコンプログラミングの言語がアセンブラ言語やC言語がほとんどで、クラスだとかオブジェクトだとかという概念がこれらのプリミティブな設計ツールの世界で馴染みがないことが大きいの... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/16 22:43
const修飾子
 const修飾子について、今更説明は必要ないと思うが変数を参照だけに制限する修飾子である。マイコンの世界では、コンパイラの独自仕様になるが、この修飾子を付けると変数の置き場所を指定する働きがある。  ストアードプログラム方式のコンピュータは、プログラム自身やデータ、データを一時格納する変数などを読み書きできるメモリに格納する。マイコンは電源を入れたら直ぐに動きだす必要があることから、プログラムをフラッシュメモリなどの電源を落としても内容の消えない(不揮発性メモリ)に置く構造になっているものが... ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2009/10/15 20:43
78KマイコンのAD変換
 78Kマイコンには、AD変換器が内蔵されていて、マイコンのピンに入力されたアナログ信号ををデジタル値に変換することができる。CubeSuiteのシミュレータの入出力パネルに、ボリュームのような部品が用意されており、ボリュームを回す角度で、0〜5Vの電圧が出力できる。そこで、このボリュームをマイコンに繋ぎ、AD変換器を動かしてボリュームの電圧をAD変換して、変換したデジタル値を7ゼグメントLEDに表示すれば、AD変換プログラムを試すことができる。(全てシミュレーション上で)  昨日、マイコンプ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/14 12:56
単細胞OS(その2)
 単細胞OSには処理要求をキューしたり、キューを取り出してスケジューリングするような機能は無い。タスクのスケジューリングは、予めプログラムされたスケジューリング間隔でタスクを定期的に起動するだけ。(これでOSと呼ぶの?という意見があるかもしれないが、OSとアプリの境目ある意味合いで単細胞と命名)起動されたタスクで特に処理するものが無ければ(処理要求が無ければ)直ちにOSにリターンする動きとなる。(見ようによっては、各タスクに処理要求を問い合わせているとも言えるが。無理やりOSの仲間にしようと..... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/13 12:47
単細胞OS
 WindowsやLinux等のPC向けのOSはさまざまな機能を取り込み高機能化している。その反面、高性能なCPUや大容量のメモリが無ければ動かない。生物の進化で言えば丁度「恐竜」のような存在に見える。そんな進化の袋小路から抜け出すために、近年ネットワークでの使用に特化することで、低コストで軽快動きをすることを目指したOSもgoogleなどから発表されていることは有名である。  そんな、超高級なOSとは無関係に組込みの世界には色々な姿をした、「リアルタイムOS」と呼ばれているOSがある。リアル... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/12 21:54
ビット操作の損得勘定
 大体のマイコン用のコンパイラはそうであるが、78Kマイコンのコンパイラでも、ビットの扱いを簡単に出来るような仕様になっている。例えばP1レジスタの0bitだけに値を代入する場合などで、ANSI Cの書き方との比較してみると下記のようになる。 ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2009/10/07 23:01
ステートマシンを作ろう
 ステートマシンを作ろうといってもロボットを作るわけではない。 一般的に関数は入力に対してある決められた処理を行い結果を出力する。入力が同じなら結果はいつも同じである。マイコンプログラミングでは、このような関数とは少し毛色が違い、同じ入力でもその時々で違った結果が出てくる関数が良く出てくる。これがステートマシンである。ステートマシンは、関数が終了しても値を保持し(内部状態)、この内部状態よって入力に異なる処理を行うため、同じ入力でもその時々で違った結果が出てくる。このようなプログラム構造を使うこ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/06 21:41
教材演習課題(デジタルタイマ)
 ブログ紹介に書いてある「マイコンプログラミング1」のテキスト書きが、「タイマ割り込み」まで進んだので、ここいらで少し考える課題を用意してみようかと思い、課題の仕様を考えてみた。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/06 12:41
再帰呼び出し(リカーシブルコール)
 ちょっと変わったプログラムの書き方に再帰呼び出し(リカーシブルコール)というのがある。関数の中で自分自身を呼び出す部分があり、丁度合わせ鏡の中にいくつも自分自身が続くちょっと不思議な風情を感じる。C言語の入門テキストでも良く見るのでご存じ方は多いと思うが、テキストの例題では、階乗の計算をやっている例が多いと思う。書き方をちょっと紹介すると、以下のように、関数の中に自分自身を呼び出す部分があるが、必ず何かの条件判断で呼び出しを行わないでreturnする構造になっている必要がある。これは、当然この... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/04 14:23
データ変換処理の作り方
 構造分析で使われるDFD(data flow diagram)は、プログラムの処理は入力データに何らかの変換を行い出力することを基本とするが、プログラムを書くときデータ変換が必要となることは多い。このようなプログラムは、大きく分けて以下の3つのやり方で考えると綺麗なプログラムを書くことができる。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/03 22:34
割り算
 一般的に機能の低いマイコンで、2進10進変換のような割り算を使う処理をやらせようとすると、ほんの1行のCのコードで驚くようなオブジェクトが生成されびっくりすることがある。また処理時間についても数msオーダの時間が掛かることもある。  そこで、今回の78K0/KB2で割り算を使う処理と同じ機能で割り算を使わない処理を2つ作り比べてみた。結果、オブジェクトは、割り算を使うほうが若干大きいものの大きな差は無い様子。そこでと思って、シミュレータで演算時間を測定してみた。4桁の0x270f→9999(... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/10/03 15:57
C言語のビット演算
 組込みプログラミングをやると、どうしても避けて通れないのがビット演算である。ANSI Cにも出ているけれども入門Cでは、ほとんど取り上げられていない内容だ。 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 2

2009/10/03 00:23

トップへ | みんなの「マイコンプログラミング」ブログ

からくり小箱 マイコンプログラミングのテーマ/BIGLOBEウェブリブログ
[ ]