SSブログ

ゲイテッドレーザーサイト その7 (とりあえずソフトウェアの2) [PIC]

ちょっとあいちゃったけど続きで。

今木が付いたんだけど、インクルードのところ <と>の話は、HTMLでかぶるので消えるんだね、
知らなかった。

で、今日は48行目から。

48行目ここからプログラムを開始する。83行目まではプログラムを開始するまでの設定
50行目から53行目ここでは、クロックの設定をしてる。ここでは、4Mに設定
58行目から60行目1番ピンを入力に使うのでそれをアナログとして使えるように設定
63行目から65行目入出力方法の設定。アナログ(コンパレータ入力で使う場合も、亜デジタル入力として設定しておく必要がある。
73行目から75行目コンパレータの入力電圧を決める。
78行目から81行目割り込みの設定。PEIEで周辺割り込みを有効にして、CMIEとGIEで割り込みを有効にする。CMIFを0でリセットしないと、次にコンパレータの状態が変化しても割り込みがかからない。
83行目から86行目プログラムが開始された直後にレーザを500mS間点灯させ、起動処理が完了したことを使用者に通知する
90行目から99行目whileのループに1を設定し、このブロックを永久に繰り返す。
91行目ゲート信号がオンになったら、ライトの点灯を開始し、1500mS間のまち、その後消灯する。その後500mS間ガードタイムとして時間を経過させる。再度ループ処理を繰り返す。 gate信号は、コンパレータ割り込みがかかったときに、コンパレータの状態により設定する。

コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その5 (いつのまにか復活) [PIC]

しばらく、沈黙しておりましたが、こっそり続けてた。

電源の問題は、あるものの、とりあえずおいておいて、まずは作ってみることにした。
以前回路図を出してたけど、いろいろにつめるというか、 削っていくと、以下のようになる。

circuit1.png

マイクのゲインが思いのほかよく、これだけで、いけそうなので、マイクの出力をアナログ比較器で比較するとマイクからの信号をPICのコンパレータ入力に直結できる。

コンパレータで閾値電圧以上の信号を検出したら、トランジスタをON にして、LASERを光らせる。


プロトタイプはこれ。
image-20150328000023.png


回路図がクロスしてて醜いけど、使い方がわからんので、このまま。

コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザサイト しばらく休みます。 [PIC]

電力の制御に問題があることが発覚しました。
CR2032一個で使おうと思ってましたが、どうも電圧が足りない。
なので、電源を含めえ最探索中です。

5Vだったらちゃんと動くんだけど、それでレーザー壊しちゃった。
きっちりレギュレートされた3Vを作らないといけない。

これが意外と難しい。
しかも部品をおけるサイズは決まっている。どうしたものか。。。。

コメント(0) 
共通テーマ:趣味・カルチャー

弾速計再び [PIC]

APS-3につけて使うUSB接続の弾速計を使ってて、Androidに使うには、割と問題なかった。
Google SpreadSheet上で作ったシート上に計測結果を記述しその日の点数とともに記述してたんだけど、
携帯をIPHONEからAndroidにかえて使ってみると、動かない!

まずは、SpreadSheetの仕様が違うので、カーソル移動方法を変更していたが、なんとPC上での使用と同じ様にタブで右に動けるようになった。
しかし、弾速を入力するときたとえば、80.25とかが入力されるときに、80までしか入らない。
わざわざUSBの普通のキーボードを買ってきて、同じストロークを入れると、ちゃんと表示される。

USBデータをキャプチャしてみてみると、キーボードが押されたイベントと、離されたイベントが交互に出るのが本当であるが、どうも離されたイベントが連打されているバグが、弾速計の擬似キーボード処理にあったので、これが、問題なのかなと思って、修正。でも改善しない。

いろいろやったが、改善しないので、一度SpreadSheetをあきらめ、メモ帳とかに入れてみると、 なんとちゃんとはいってる!

そういうことかと、Excelをダウンロードしてみたら、これまたちゃんと動く。
弾速を入力後次のセルにちゃんと移動する。

てめー、SpreadSheet、俺の時間を返せー

と叫んでみたところで、強者が応じてくれるわけも無く。

ということでしばらくExcelで弾即計。
弾速.png

間違い


コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その4 (改めて射撃音を考えよう) [PIC]

冒頭:あまり関係ないとは思うけど、まだAPSと直接関係無いので、過去の記事も含めてカテゴリをPICに変更。順調に読む人も減ってるし。

入力回路として以下の回路を使う。

headRoom.png

前にも書いたとおりマイクとしては、シリコンマイクを使う。物としては、SP01030NCという中華なシリコンマイクだ。このマイクの面白いところは、ゲインコントロールがマイク自体にあり、ゲインコントロールに抵抗とコンデンサをつなげることで、増幅率とハイパスフィルタのカットオフ周波数を調整できる。といっても
6db/Octだから普通のQのあまり高くない1次のフィルタではあるが。
ここに10Kの半固定と0.47uFのコンデンサをつけて、実際にAPS3のシリンダをマイクのすぐうえにおいて
撃発してみる。このときのオシロスコープで観測した画像をいかにしめす。

iphone/image-20150213192241.png

画面の写真なのでちょっと見にくいけど、この信号は、マイクの3番の信号を直接観測している。
画像において少し太めの白の点線が二本あるが下のほうの白の点線は、0Vを表し、上の白い点線は、2.25V付近においており、たてのDivisionは1ブロックあたり0.5Vである。横のDivisionは5mである。

このシリコンマイクには、3Vのリチウム電池(CR2032)が電源として接続されている。であるので、電源的なフルレンジは、1番上のDivisionと、1番したのDivisionの間となる。
このマイクのバイアスはこの絵から約0.8Vであると読める。

下側は0Vでサチッているし、上側は2.5Vでサチッテいる。

先ほどもしめしたように、半固定抵抗によりゲインコントロールが可能であり、感度を落とすことも可能だ。

感度調節によりもっとレベルを低くすることも可能であるので、たとえば、2V越えを検出することにより、この信号が入力されたこととできそうだ。

ただし、コンプレストコッキングによる音声を確認する必要がある。コッキングは”そっと”行うことも可能であるので、そこで、対応するか。



コメント(0) 

ゲイテッドレーザーサイト その3 (ハードウェア) [PIC]

ハードウェアについて考える。
なるべく小さい回路を作りたいので、PICは12F683を使う。
509でもいいけど、どうせならなるべ、サイズが小さくて、中身がでかいほうがいい。
最近は6ピンのもあるけど、そこまでは。。。って感じで。

circuit.png


回路図には描いてないけど、12F683はICSPによる書き込みができるので、ICSPポートを併設しそれを使って書き込む。こうすると、基板上に展開した後も変更が可能になる。

入力としては今回シリコンマイクを使う。まあ、コンデンサマイクと変わらないんだけど、小さく作るのが目的とする。
マイクからの音声をいったんトランジスタでうけ、直列に接続された抵抗により電流を変更し、ゲインを調整する。
トランジスタのhfeは、200ぐらいであるので、2kぐらいのプルアップをかけておけば、0Vまできっちり落ちてくれると想像する。
本当は12f683の内部抵抗値の影響も受けるので、プルアップ抵抗については、カットアンドトライが必要。
#ちゃんとしたプロならば、ここも計算で出すんだろうけど。

出力はトランジスタで電流をいくらでも流せるようにして、40mAをレーザダイオードに流すようにする。電流制限抵抗値も計算する必要があるが、電池が3Vなので、たぶん不要でいいとおもう。

コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その2 (動作状態遷移) [PIC]

deli氏により、とってもナイスな提案をしていただいたが、部品代が上がってしまうので、今回はパスをさせていただくことにした。実際に作るところまで行ってどうしてもほかに手がなかったら、それも含めて再検討するかもしれない。

3軸加速度センサからのデータを、銃身方向の回転、銃身に水平方向の回転を検出し、ある程度の範囲に来たときに、すべての動作を許容する事になるが、今回使用予定のコンピュータは、8pinの格安仕様で、メモリ容量が少ないので、難しいかなと判断したためである。

18F14k50 位のサイズが使えれば、もう少しいけると思うんだけど。

今回のお題は、なるべく小さく作らないといけないので、サイズも結構重要。

ということで、今回使用するコンピュータは、PIC12F683というもの。初めて使うものなので、うまく動かせるかどうかも不明ではあるが。

それでは、話を戻そう。

昨日、提示した状態遷移を表に起こすと以下のようになる。

GatedLaserSightStates.png

ここで、横軸は、状態、縦軸はそのとき入力された信号を示し、それぞれ、

名前意味動作
stIdleアイドル状態。すべての処理の基底状態音声入力があるまで待機する
stGateゲート状態。レーザを発光させた状態レーザを発光させ、フォロースルータイマを開始する
stGuardガード状態。レーザ消灯後、すべてのイベントから動作を保護するレーザを消灯させ、ガードタイマ満了を待ち、ガードタイマ満了を持って、アイドル状態に移行する
stCancel検出禁止状態すべての動作をキャンセルタイマ満了するまで無視する。
evSound音声入力検出された音声。アイドル状態では、ゲート状態に移行し、ゲート状態では、検出禁止状態に移行する
evGateフォローする時間満了レーザを発光を停止し、ガード状態に移行する
evGuardガード時間満了ゲート時間中に音声を検出したときは、しばらく のイベント検出を無効化するガード状態が満了したことを示す。アイドル状態に移行する


状態遷移型プログラムとして、上記を記述するといいことになる。
stGuardとstGateは良く見ると時間だけが異なるだけで、タイマー以外のイベントをすべて無視するという動作は同じなので、状態によりタイマー値を変更することも可能であるが、プログラムの構造を簡単にするために、別々の状態として考えることにしよう。



コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その1 (トリガーの検出のために) [PIC]

一般的なレーザーサイトは、常時点灯しており、撃発の前後で動作をかえることはない。
ディレイドレーザーサイトと名をつけたが、何かに関して遅延して発光するわけではないので、良く考えると間違いなので、これからは、ゲイテッドレーザーサイト(Gated Laser Sight)ということにする。
#いきなり仕様変更などとは言わないように。
ゲイテッドとは、門で囲われたということで、昔のシンセドラムのゲイテッドリバーブ(時間幅を限定したリバーブ)という音もあったし、発想は良く似てるので。

レーザーサイトの発光時間に幅を持たせるには、まずトリガーの時刻を検出する必要がある。時刻といっても何時何分何秒みたいな数字が必要なのではなく、

”いま、発射した”

がわかればいいだけではあるが。

APS-3で、検出できそうなトリガーの検出方法は、

・ストライカーがレシーバへ接触したことを電気的に検出する(いわゆるスイッチ)
・ストライカーがレシーバへ激突したことを音響的に検出する(マイクによるスイッチ)
・ストライカー、レシーバを改造し、光学的に検出する
・トリガーの位置を工学的に読み取り、撃発後最終位置を検出する
があげられる。

あげたけど、実質的には、激突音を音響的に検出する以外は、APS-3に対しての改造が必須になるので、不適である。

そこで、銃近傍で、録音した音声により、は、以下のようになっている。

singleshot.png

これは、プレートの第一ターゲットへ射撃時の周囲音を、銃近傍で、録音したものである。
開始から、”プレートスタンバイレディ”の音声
3.5秒付近からプレートブザー音
6.4秒付近からストライカー音と、銃の共振音
8.0秒付近からコッキング音

が観測される。

検出しなければいけない音声は、6.4秒付近で観測されるが、問題はそれ以外の音も聞こえてしまうことだ。ストライカー打撃音だけでしか聞こえないのであれば、スレッショルドを超えた音が検出された時点から数秒発光するようにすればいいだけ出会った。

しかし、今回の音をみてみると撃発とほぼ同じ量の音が存在する。コッキング動作だ。

コッキング動作の音は、質量の大きな部品がきっちり動いた結果なので、これを消すことは至難の業となりそうだ。そこで、この波形をみながら、何回も何回も聞きなおして、対策を考えることとしよう。

音の特性を見てみると、撃発を終わり、コッキング操作を終わるまで、約4秒。コッキング動作だけを見ると約2秒となっている。
ということは、フォロースルーを3秒に設定し、直後に5秒間の音声検出禁止区間をつけることで、うまく避けることができそうである。

つまり、
撃発検出後、 フォロースルー時間経過後、音声検出禁止区間を得て、検出待ち状態に戻る。
これを案1とする。

一見、案1はうまく動作するように見える。しかし、弾を発射する動作の前には、必ずコッキングをしなければいけないので、そこで検出されて、フォロースルー期間が開始される。コッキングを開始してあと、ふぉロスルー時間3秒、撃発禁止時間5秒間は、使えないことになる。高々8秒間なので、このままでもいいかもしれないが、もう少し短くしたい。

そこで、
撃発検出後、1秒以内に音を検出した場合、そこで、即座に消灯し、2秒間の音声禁止区間を置いた後、検出開始、すなわち、案1の初期状態に戻ることとする。

これを状態遷移図に示すと以下のようになる。

gatedSightStates.png
ここで、この状態遷移図の記載方法はちょっと一般的なものと違うが、わかると思う。


これをどのように実装するかを次回以降で考える。
メモリが少ないからこれは大きすぎるかもしれないが。



コメント(2) 
共通テーマ:趣味・カルチャー

14k50 のデバッグ [PIC]

デバッガが使えないからめんどくさい。
だれか便利なやりかたしってたら、教えてください。

追記


コメント(0) 
共通テーマ:趣味・カルチャー

ケース加工でなんてこったい (シューティングタイマー) [PIC]

というわけで、分解した電卓からシューティングタイマーにすべくケースを加工するわけだが、まあ難しい。

加工前のケースは、これ。
CIMG2641.jpg

問題は、スピーカー。開口面積を多くしたいので、なるべく大きく取れるように最初は3mmのドリルで穴をいっぱい開ける計画だったけど、きれいに並ばないので、ヤスリで削ったら、まあ、不恰好になった。

CIMG2642.jpg


一応この穴の明け具合で、本体に取り付けると、

CIMG2643.jpg
こんな感じ

というので、これはMODELAを使って切削だ! といって、CADで図面書いて、もう一個あるケースをつかってMODELAにかけてみた。一晩掘っておいて朝見ると、あるはずのケースが無い!

なんと削りカスがエンドミルに絡み付いて、それがケースを引っ張りあげて、全部抜けきらないときに、ほかの位置に動こうとして斜めにきっかり貫通筋がいれる。そうすると位置が微妙にずれるので。。。を繰り返して保持用の捨て板から外れたらしい。
CIMG2645.jpg

この写真は、ためしに削られるように取り付けられた、ケース。

これに化粧板つけるんならそれでもいいとは思ったけど、ちょっと悔しいので、四角穴と丸穴をMODELAで開けるプログラムをエクセルで作成!
これでどうだ。


まあ、保持用の捨て板がスタイロフォームなので、何回かゆすってるとへっこむんだけどね。

結果は明日、削ってみることにする。

#またケース買ってこないと。

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

電卓じゃないよ。シューティングタイマー (タイトル変更だけどその5) [PIC]

電卓を分解したところにみえるといわれていますが、シューティングタイマーです。

まず、外注にだしてた基板が到着。ケースの中で3枚の基板で構成するようになっています。しかし、3枚として注文すると、高くなるので、1枚の基板として注文します。

AyBX0.jpeg

まあ、これを切断すると、
UEKxH.jpeg

になります。切断は、回転砥石をつかって切断します。まあ、ここ見てるような人には説明不要だと思うので、わからない人は、自力で解決してください。

ケースは、タカチのLCS135H9Vにしようと思っていて、まず、穴を開けるために、電池フォルダ側に基板をくみ上げます。まだ、主要のパーツ以外は取り付けてません。

fEhmq.JPG

やっぱり分解した電卓に見えるなあ。

nice!(0)  コメント(4) 
共通テーマ:趣味・カルチャー

ShotTimer というかStopWatch (その5) [PIC]

発射音というか、ガスガンの作動音で、タイマーを止めるべく、マイクで音声を拾って、タイマーをとめることにして。
作戦は、秋月のマイクアンプ付きコンデンサマイクの信号をマイク付きアンプで100倍増幅して、電源5Vで、マイクから30cmくらいで、5Vから0Vまでフルスイングするようなので、これでいけるかなあって感じ。

発射センサ.jpg

マイクからの出力が単電源なので、約2.5Vでバイアスかかっているので、コンデンサで直流カットをして、ダイオードで整流。その後、C2のコンデンサで、チャタリングを除去した信号を、トランジスタで反転。信号としては負論理になるけど、シュミットトリガ一個省略できる。レベルの変更は、プログラムでも可能なので、これでいけそう。約100mS程度引っ張ってくれてるので、検出にも問題ないかんじ。

途中にあるポテンショで感度の調節もかのうだけど、ほぼ前回で問題ないし、50%ぐらいまで絞ると、ほぼ入力できなくなる。

ソフトウェア的には、ビープ時に入力のキャンセルがいるのと、タイマー持ってる人の動作で音拾わないかを試してみる必要がありそう。でもケースでそのあたりは変わっちゃうからまだ試せない。

まあ、それでも回路的には、できそうだからこれで行くか。

問題は”大音量ビープ”


nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ShotTimer というかStopWatch (その4) [PIC]

ということで、その4です。

ParTimeはPar Setという機能で、APSのプレートみたいなもの。
だそうです。
ゲートタイムを設定するとその開始と最後にブザーがなる。
しかし、設定時間は、0.1S単位であること。が条件でした。
たとえば、2.8秒を設定したとすると、単位は、0.1単位なので、28回押して設定することになるんだけど、これを開放するのも28回おさないといけない。

ちょっとめんどうなので、1秒以上の長押しでオートリピートをつけることにしよう。
すべての設定ボタンは、+、-のボタンは1秒以上押したらオートリピート開始。
間隔は、250mSぐらいで1単位上がる。さっきの例だと、5秒くらい押してれば、2.5秒まで来るので、後は一回ずつ押して設定。-を押し続けると、0以下にはならないはずなので、ずうっと押してると0になってそれを競っているすると設定解除。

これで行こう!


でこれができるとランダムと併用すると、プレート用の。。。。。


nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ShotTimer というかStopWatch (その3) [PIC]

やっぱりというか、案の定というか、Partime の仕様がおかしかったらしい。

どちらかというと プレートの時間設定ができるような感じらしい。

その他のだめだし。
・音がちいせー。
・銃声で動くようにしろー。

だそうな。
外付けで対応しようかな。

音が小さいのは、ショーがないから、アンプを作ってスピーカをならすことにしよう。
4KHzの発信機をどうやって作るかが鍵だな。

銃声で動くようにするには、ちょっと骨かな。だいぶ研究しないといけない。
コンデンサマイクで尾と拾ってアンプでTTLレベルまで全波整流増幅して検波すればいいだけどどうすんだ。


どっちにしても来週以降。だな。

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ShotTimer というかStopWatch (その2) [PIC]

ShotTimerの続きです。

前回のビデオは、ストップウォッチ機能だけを搭載したものだけど、今回作成するものは、以下の機能を持たせようと思っています。
1即時開始計測
2遅延開始計測
3ランダム開始計測
4サイクル開始計測


1番の機能は普通のタイマーでいわゆるストップウォッチです。
2番の機能は、スタートボタンを押してから、開始するまでに遅延を伴うものです。たとえば3秒遅延って設定しておいたら3秒後に開始されるというもの。
3番の機能は、開始される直前でさらに設定秒までのランダム秒を挿入してちえんさせます。たとえばここで5秒を設定すると最長5秒までのランダム値をランダム遅延値として設定します。
4番の機能は、前回の計測が終わってから指定された秒数後に自動的に計測を開始するというもの。とおもってる

で1番以外の機能は時間を設定する必要があるので、設定機能を持っていて、ちょっと醜いけど、ボタンと動作はこの図のように動作する。
stjob.jpg
予定。






タグ:pic タイマー
nice!(1)  コメント(0) 
共通テーマ:趣味・カルチャー

ShorTimer というかStopWatch  (その1) [PIC]

タクさんからShootingタイマー頼まれてて、ちょっと時間がかかるよーとか行ってたんだけど、まずはストップウォッチができました。


ブレッドボード上のものなので、すぐ壊れちゃうから、このままとかは盛っていけないけど、
とりあえずストップウォッチまでにはなりました。
LEDはデバッグ用についてるもので、現物にはなくなります。

液晶のバックライトがなぜか暗いのと、ブザーの音がちょっと小さいのが気になりますが。

まずはストップウォッチとしては組めたので、後は、DelayとランダムとParTimeを組んだ後、
基板を作ればいけそうです。


だけどParTimeってどう動くのが正解?

組み込みの予定はまたいずれ。。

ソフトウェアをもう少し改造して、行けばいいかな。と。

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

Bulls Eye Target USBアダプタ その4 [PIC]

もはや、カテゴリはAPSではないので。
基板を作るのに感光基盤を使います。

昔は、プリントパターンを作るのに銅箔の上にマジックで線をひいてとかやってたみたいですが、たいていマジックを使うとそのまま、プラスチックの板が出来上がるまで溶けます。

で、最近は感光基盤というものがあり、それを使うと割と細かいパターンまできれいにできます。

まず、感光パターンを用意する必要があります。
いろいろ、調べましたが、一番簡単にできそうなのが、透明なフィルムラベルにパターンを印刷して、
それをトレーシングペーパにはって、マスクパターンを作るものです。
#写真って無いので、ここは割愛。

それを感光基盤に焼き付けるんだけど、時間は適当。
いわゆる机につける蛍光灯で、20~30分間当てます。
その後、現像液に浸すとパターン以外のところが溶け出します。

それをエッチングするわけです。一般的というかマニュアルには、バットを使って現像液等に浸してと書いてありますが、私はビニール袋を使います。そしてそれぞれの液を使い捨てにします。

現像液は現像剤をお湯に溶かして現像液とするんだけど、本来の作り方は、指定された量の水に溶かして作るけど、適当な量の粉に適当にお湯を注いでできあがり。
この中に基盤をつけるわけです。

で、こんな感じ
CIMG2183.jpg

これはエッチングの様子だけど、液はサンハヤトのエッチング液です。塩化第2鉄水溶液のはずです。
これを3倍くらいに薄めて使っています。3倍希釈で、この量なので、元の量はたかが知れてます。
塩化第二鉄は、結構めんどくさい薬なので、このくらいに薄めて使ったほうがいいような気がします。

写真はかなりエッチングが進んだ状態ですが、液が緑色なのがいい感じです。
塩化第二鉄の水溶液は、もともと黄色ですが、銅イオンの青色が加わるので、緑色になるようです。
においはさびのにおいそのままなおで、ちょっとくさいです。

これを40度くらいのお湯の中で振り続けた後切断、穿孔するとこんな感じになります。
CIMG2184.jpg

3枚のうち、真ん中の位置にいたものはパターンが若干浮いて線が細くなっています。マスクの浮きに気をつけましょう。

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

Bulls Eye Target USBアダプタ その3 [PIC]

タイトルがゆれてるとかはいいとして。
ユニバーサル基板上での配線は後々、手間がかかりそうなので、プリント基板化をすることにしました。一個しか作らないものにそんなに手間かけて持って話はまあありますがね。自己満足。自己満足。

っても、まったく新規に追加する回路は、スイッチとLEDのみだから、回路図は省略。でプリントパターンをおこしてみた。

btu.jpg

3個分あるのは、確実に成功するかどうかはいまいち不明だから。

これをトレーシングペーパに印刷して、感光基板に焼き付けようと思ったんだけど、トレーシングペーパだとプリンタがペーパーを見つけられない!
なんてこった。せっかくパターンまで作ったのに。

で、感光基板までは買ってあるからどうしても感光基板でやら無いといけない。。。。。。

nice!(1)  コメント(0) 
共通テーマ:趣味・カルチャー

今はやりの加速度センサ [PIC]

秋月でうってる加速度センサがちまたではやってますが、そんなことになるまえからしいれてあったけど、お蔵入りしてました。
この加速度センサってのは、とっても優秀で、重力加速度も計測できます。

以前紹介した、UBWは、この手のセンサの試験にとっても便利な、機能を持っているので、
#本当はできることを紹介するためのソフトで、本来の目的じゃあない。
それをつかって連続にデータを取り込んでみました。

静止しているときは、静止して、その後、動かすとなにやら数値が変わっていきます。

このセンサを鉄砲に載せて重力加速度方向を監視すると、水準器になります。

水準器にするだけなら、2次元データで住むかもしれないので、出力形態をどうするかはあるけど、LEDの2灯にして、水平で消灯傾いてる方に明るくつくなんてのができそうです。

前やってる人いたなあ。そういえば、2番煎じか。

nice!(0)  コメント(0) 

弾数カウンタ (その5) [PIC]

PICのコンフィグレーションワードについてです。
と言うかHITEC-Cでのと言うことにもなります。

PICのプログラムは今まではほとんどが、アセンブラで書いてました。
#TK-80みたいにさらにハンドアセンブルなんてことはなくなりましたが。
が、今回はC言語で書くことにしました。一般的に高級な言語を使うと、冗長性が高くなるので、小さいプログラムでも大きなメモリ容量が必要になります。しかし、今回使用した16F88は巨大なメモリエリアを持っているので、C言語を使っても問題なくプログラムできます。

でもって、Hitec-Cでのコンフィグレーションワードです。

今回は以下のように設定しています。

__CONFIG(
UNPROTECT & CCPRB3 & DEBUGDIS & LVPDIS & BORDIS & PWRTEN & WDTDIS & INTCLK & MCLRDIS
);
__CONFIG(
FCMDIS & IESODIS
);

このおまじないは、ROMエリアのプロテクトはなしで、CCPはRB3ポートを使い、デバッグ機能は使わず、ブラウンアウトリセットは使わず、低電圧プログラムは行わず、パワーアップタイマは使用して、ウォッチドッグタイマは使用しないで、内部クロックを使い、リセットは使わないことと、
クロック喪失検出しない、内部クロックで外部クロックを補完しないことを宣言しています。
機能設定値説明
コードプロテクトPROTECTROMに書かれた内容をプログラマから参照できないようにガードする
コードプロテクトUNPROTECTROMの内容をプログラマからさん賞できないようにしない
キャプチャー・コンパレータ・PWMCCPRB0キャプチャー・コンパレータ・PWMをRB0ポートで使用する。
キャプチャー・コンパレータ・PWMCCPRB3キャプチャー・コンパレータ・PWMをRB3ポートで使用する。
インサーキットデバッグDEBUGENPicKit2等を利用してターゲット基板上でのデバッグを可能にする。ただし、ホストとの通信用に3本のPIN(MCLR,RB6,RB7)を使用する
インサーキットデバッグDEBUGDISインサーキットデバッグを使用しない。RB6,RB7が使用可能。
フラッシュメモリアクセスUNPROTECT使用可能
フラッシュメモリアクセスWP0多分ポート1だけ使用可能
フラッシュメモリアクセスWP1多分ポート0だけ使用可能
フラッシュメモリアクセスWPA使用できない
データEEメモリUNPROTECT使用可能
データEEメモリCPD使用不可
低電圧プログラムLVPEN使用可能
低電圧プログラムLVPDIS使用不可
ブラウンアウトリセットBOREN電源電圧が、だんだん低くなってきて動作が不安定になる前にリセットを発行
ブラウンアウトリセットBORDIS電源電圧が、だんだん低くなってきて動作が不安定になる前にリセットを発行しない
パワーアップタイマトPWRDTEN電源投入時に安定するまでタイマを使用して動作を止める。
パワーアップタイマトPWRDTDIS電源投入時に安定するまでタイマを使用して動作を止めずに即座に起動する。
ウォッチドッグタイマWDTENプログラムが定期的に割り込みを発行しないとリセットする。
ウォッチドッグタイマWDTDISプログラムが定期的に割り込みを発行しなくてもリセットしない。
クロック設定RCCLK外部部RCクロックを利用し、OSC1ピンにクロックを出力する
クロック設定RCIO外部RCクロックを利用し、RA6,RA7は入出力に使用する
クロック設定INTCLK内部RCクロックを利用し、OSC1にクロックを出力
クロック設定RCIO内部RCクロックを利用し、RA6,RA7はIOに使用する
クロック設定EC外部RCクロックソースを利用する。
クロック設定HS高速水晶、クリスタル発振子を使う
クロック設定XT外部水晶発振子を利用する。
クロック設定LP低電力水晶発振子を利用する。


の内、機能を設定したいほうの定義を宣言します。






nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。