senda/ものづくり
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
[[senda]]
* ものづくり [#p0b3753c]
11月のものづくり教室にむけて、教育的視点から魅力的な電子...
** コメント [#idbef4ea]
- おお。はじまっとる。 -- [[akita]] &new{2008-07-27 (日) ...
- ↓Zのときに一列が光るのは、もしかしたら、光電流によるも...
- 各列のLEDとジャンパピンの間に1個ダイオードを入れれば、8...
- ADCの割り込みのところはなやましいですね。CPU_CLOCKを、S...
- ありがとうございます。CPU_CLOCKは、SYSCLK/1にすると怒ら...
- ダイオードは…配線が大変そうな予感。今度試してみます。 -...
- ああ、3.3VではCPU動作速度が12MHzまでなので、SYSCLK/2が...
- そろそろ基板設計開始ですかね? -- [[akita]] &new{2008-0...
- そうですね。なにはともあれ、まずはPCBEの操作に慣れるこ...
- ↓本番で注意ですね・・・>LED逆挿し -- [[akita]] &new{20...
#comment
** 記事一覧 [#h67693fb]
#contents();
** コンセプト [#a2e8a9fd]
- つくった後も遊べる
- 直感的に遊べる
- 自分でアレンジして遊べる
ということをコンセプトに掲げ、何か電子おもちゃを作れない...
** 提案 [#v6eed285]
モリワキット「水盤キット」、バンダイ「超撥水GAME aqua dro...
- LEDのアレイ上を、
- 加速度センサから得た、筐体の傾き情報をもとに
- 光が水滴のように動き回る
ようなおもちゃを考えました。
さらに、迷路状に壁を置き、スタートとゴールを設けることで...
* 08.10.27 (Mon.) [#v030a178]
[[./壁]]
* 08.10.15 (Wed.) [#ab07e3ad]
長らく更新をサボってましたが…
** やってきたこと [#kffb83b0]
- 組み立てマニュアルづくり(未完)
- 小分けされた袋を開けて、部品ごとにまとめた
- 『壁』づくり(未完)
- 加速度センサの変換基板とりつけ
- ピンヘッダを、3pinづつカットする作業(疲れた…)
** やること [#t8413268]
- 『壁』をせっせとつくる
- 部品を1人分づつ袋につめる
- マニュアルを完成させる
- プログラムの調整&スタート・ゴールの設定
- アンケートをつくる
* 08.09.21 (Sun.) [#j2e72834]
** 部品到着 [#t0049c88]
組み立てマニュアルを作成するために、写真を撮りながらの本...
慣れたもので、1時間そこそこで組みあがる。
…が、まさかのLED25個全部逆挿し
orz
* 08.09.11 (Thu.) [#s8d65ef1]
** 基板到着 [#hf4d1f41]
早速1枚実作してみる。
部品が到着してないので電池ボックスが無いですが…。
動作は問題なさそうだ。
が、切ないミスが1点。
** やること [#t1fd37ca]
- 配線の都合上、LEDのY方向の配列を逆にしたのを修正する
- 2ボタンになったので、難易度選択などを実装する
- その他、それらしい機能を実装する
-- Z方向の加速度を使ってジャンプする
-- etc...
* 08.08.23 (Sat.) [#b4b2f918]
** 基板作成 [#u64e7c8d]
秋田先生の、[[PCBEによる基板設計の手引き:http://akita11.j...
去年の、[[「ふるディスプレイをつくろう」をつくろう:http:/...
さらに、こんちさんからもデータと基板をいただく。
パッドを並べて、ラインで接続していく作業は、なんとなくつ...
* 08.08.21 (Thu.) [#mb590d5f]
** ジャンパピン [#c1b4fdba]
まぁやってみよう、ということで、「ジャンパブロックにダイ...
試作基板の変更はなし。
ただし、実作のときは、試作基板では2pinのピンヘッダを、3pi...
** 壁 [#fc9b3436]
傾きに応じて動くLEDと、壁の動作を実現完了!
調整は必要だが、最低限動く。
* 08.08.20 (Wed.) [#s16c1e5f]
** ジャンパピン [#w931c00f]
ダイオードを挿入し、無関係なLEDが光る問題は解決した。
しかし、再び問題発生。
#ref(current_diode.png)
緑の丸で囲ったようにピンをショートしたとき、同電位("H")...
青の矢印で示したピンはオープン状態なのだが、この状態に関...
これでは、ショートされていると誤って読み取ってしまうこと...
任意の向きの「L字」に反応して発生するので、ゴールできな...
これも現状では不可避な気が…。
もっとも単純には、全ジャンパピンに対して1つのダイオードを...
遊ぶ前に、ピンを1列ずつ読み取らせてから、スタートする、...
これもスマートじゃないし、気軽に遊べなくなってしまう。
というか、1列ずついちいち抜き差しするのはありえないだろ...
以前の問題が発生したときに、戯れで考えた解決法に、
「ジャンパブロックにダイオードを埋め込む」
というのがあったが…
<メリット>
- ダイオードをはんだづけする必要が無いので、製作の手間に...
-- 当然、ダイオードを埋め込んだブロックを作る必要はあるの...
- ダイオードを埋め込むついでに、それこそ『壁』を模したよ...
- ピン全部に対してダイオードをつけるよりは素子数が少なく...
<デメリット>
- ジャンパブロックに向きができてしまい、遊ぶときの手間が...
-- ダイオードに極性があるので、逆向きに挿されると用を成さ...
-- 「直感的」がキーワードだけに、なかなかやっかい。
- 市販のジャンパブロックが流用できない。
-- ジャンパブロックは小さくて失くす可能性があるが、比較的...
- 埋め込む手間と、相当数のダイオードが必要。
うーん…
メリットに対してデメリットのほうが目立つかなぁ。
** アイディアメモ [#d296bac1]
もう少しアイディアを膨らませてみる。
任意の向きに挿されると困るなら、ジャンパブロックを一定の...
どうせ『壁』なので、いくつかつなげて使うのが普通だろう。
ならば、最初からつながった状態で用意されていても、別段問...
例えば、4つ分。
某テ○リスのブロック型に、7種類の「壁ブロック」を用意して...
現状、ジャンパピンはLEDに対して全方向に対称に、きれいに並...
これを、例えば右下方向に少しずらす。
または、少し角度をつけて、斜めに配置する。
そうすれば、「壁ブロック」はLEDと干渉したり、ピンと合わな...
あ、回転できないんじゃテト○スとは別物か…(謎)
* 08.08.18 (Mon.) [#s90c84e9]
** 動作 [#y2d3b190]
次のグローバル変数を用意
: acc_x, acc_y | 加速度センサから得られる、x方向、y方向の...
: vel_x, vel_y | 一定時間(100ms)ごとに、加速度を足し込...
: pos_x, pos_y | 一定時間ごとに速度を足し込むことで得られ...
タイマ割り込みは10Hzなので、100msごとに加速度を読み込む。
加速度は、-2g〜+2gを8ビット(256等分)。
よって、得られるacc_x, acc_yの単位は、
[(9.8/64)m/(0.1)s^2] ~= [(0.153)m/(0.1)s^2] = [(153)mm/(0...
と計算して、実サイズに沿った係数で動かしてみたものの、加...
ということで、トライ&エラーで適当な係数を決めることにす...
* 08.08.17 (Sun.) [#x67bec76]
** ダイオード [#ucf7227e]
コメントで、ダイオードの挿入にゴーサインをいただいたので...
しかし、LEDの数(25個)だけ必要だと思っていたのに、列の数...
どうすればいいだろうか…。
#ref(failed_current2.png)
現状で問題なのは、ショートしたジャンパピンから流れてくる...
ということで、ジャンパピンと縦バスとの間にダイオードをは...
縦バスとLEDは直結で問題なし。
ということは…こうか!
#ref(led_array_with_diode.png)
縦にもう1本バスを通してやり、PSoCのピンからダイオードを通...
そのバスからジャンパピンに流す、という仕様に。
#文字だと説明しづらいな…。
* 08.08.16 (Sat.) [#i41c8249]
** 動作モード [#cf5dfb67]
A/D変換もなんとかなりそうなので、動作部分に取り掛かる。
- main()内部
動作モード変数 mode を定義し、while(1)ループ内部で、mode...
modeの値は、とりあえず次のようにした。
-- CONF ・・・CONFIGモード;初期設定を行う
-- PLAY ・・・PLAYモード;実際に動作させる
-- OVER ・・・GAME OVER状態;タクトスイッチ押下でCONFに移行
- Timer8_1_ISR()関数
1kHzでタイマ割り込みをかけて動作する関数。
タクトスイッチの状態読み取り、LEDのダイナミック駆動の制御...
#ホントはジャンパピンの読み取りもここでやりたいが、保留...
- Timer8_2_ISR()関数
10Hzで割り込み。
加速度センサから読み取ったx,y方向の加速度値(acc_x, acc_y)...
予定。
* 08.08.14 (Thu.) [#kaf6b7c4]
** ADC [#g65db884]
加速度センサは動いてるし、配線も間違ってはいない(と思う...
ということで、とりあえずできることをいろいろ試してみる。
- Global Resourcesをいろいろ変えてみる
-- Ref Mux : (Vdd/2)+/-(Vdd/2) に
--- これは必須。入力電圧0V〜Vdd
-- Analog Power : SC On/Rf Highに
-- Op-Amp Bias : Highに
-- A_Buff_Power : Highに
-- Trip Voltage[LVD (SMP)] : 3.13V (3.25V)に
--- いずれも特に変化なし
- PGAの設定を見直す
-- Reference : AGNDに
--- Vdd/2にする。まぁ1倍だから関係ないか…
- PGAとTRIADCのStartする順序を変えてみる
-- 関係なし
どこだ…
- Timer8(2つ)のClockを落としてみる(VC3に)
-- 割り込みが頻繁に起こるとADCのデータ取得が追いつかない...
--- …ここでした。
ADCのClockはVC2(125kHz)、Timer8のClockもVC2で、Periodは...
10クロックで割り込まれたらA/D変換はできないか…。
モジュールを増やしたりデバッグしたりするたびに、VC1、VC2...
現状をとりあえずメモ。
- SysClk : 24MHz
- CPU_Clock : SysClk/8 = 3MHz
-- ここまでは固定。
- VC1 : N=12, VC1 = 24MHz/12 = 2MHz
-- これもこんなもんでいいか。N=16が最大で、1.5MHzまで落と...
-- TRIADC8のClockに使う。
- VC2 : N=10, VC2 = 2MHz/10 = 200kHz
-- N=16が最大。キリのいいところでこんなもんで。
-- Timer8_1のClockに使う。
--- ダイナミック駆動のラインカウント(ライン変更)用に、5...
--- Preiod=39で、200kHz/40 = 5kHz。
- VC3 : Source=VC2, Devider=200, VC3 = 200kHz/200 = 1kHz
-- Timer8_2のClockに使う。
--- 加速度をもとに、LEDの光が動く速度を演算するために、適...
--- とりあえず、Period=99で、1kHz/100 = 10Hz
としてみたら、またしても同じような症状で動かなくなった。
Timer8_1のPeriodを39->199とし、1kHzで割り込みをかけるよう...
1列につき200Hzだが、まぁ目視できるほどではないからいいか…。
* 08.08.11 (Mon.) [#q4139c56]
** ADC [#w24ddeb1]
さしあたり、ピンはオープンにしておけば動作に問題はないの...
- [[PSoCと3軸加速度センサーでXYZ軸の加速度を計測する(dino...
- [[ブレッドボードで簡単PSoC - Gセンサを使ってみる:http:/...
同じ秋月の加速度センサを使っているサイトを参考に、TRIADC8...
3入力で、分解能は8bit。
TRIADC8のInputには、直接I/Oピンを指定できないので、それぞ...
データシートを見ると、Clockには8MHz〜125kHzを入れるように...
プログラムも、ほとんどデータシート通り。
while(1)
{
// Read ADC
while(TRIADC8_1_fIsDataAvailable() == 0); // Wait fo...
acc_x = TRIADC8_1_cGetData1(); // Get Dat...
acc_y = TRIADC8_1_cGetData2(); // Get Dat...
acc_z = TRIADC8_1_cGetData3ClearFlag(); // Get Dat...
・・・
}
その他適宜設定して、書き込み。
が、思ったように動作しない。
- テスタで測ってみると、加速度センサの出力ピンは、所望の...
- TRIADC8_1, PGA_1, PGA_2, PGA_3はちゃんとStartしている。
- いろいろ試してみると、どうやらwhileループの中の、while(...
-- ADCがready状態にならない(?)
-- 割り込み関係だろうか。でもM8C_EnableGInt;はちゃんと入...
* 08.08.09 (Sat.) [#n8cc124f]
** ジャンパピン [#f56c6898]
現状のH/W構成では、先の問題を根本的に解決できないような気...
H/W構成の変更も視野に入れた解決法としては、次のようなこと...
- 現状LEDとジャンパピンで共用しているダイナミック駆動用の...
-- こうすることで、ジャンパピンによる意図しない電流は、少...
-- が、29466のピン数上、5x5は不可能になる
- 各ジャンパピンの根元にダイオードを挿入する
-- こうすれば、横バスから縦バスに電流が流れなくなるのでは?
-- ただし、さらに素子が増えるので、材料費と半田付けの手間...
他にもあるだろうか…
* 08.08.06 (Wed.) [#k8a2265d]
** GPIO [#p5f597f7]
昨日の続き。
縦バスの駆動がStrongだと、同列のジャンパピンをショートす...
そこで、駆動をOpen Drain Highにしてみる。
が、今度は横1列すべてのLEDが光ってしまうようになった。
#ref(led_array_z.png)
縦バスをハイインピーダンスにすると、電圧が不定になり、LED...
不定ではまずいので、縦バスに"L"を出すべきタイミングでは、...
実際に抵抗をかませると、所望の動作をしているように見える。
ん、そもそも駆動をPull Downにすればいいんじゃないか?
ということで、縦バスの駆動をPull Downにする。
どうやらこれで思い通りの動きをしてくれそうだ。
** ジャンパピン [#iad1e1bf]
ダイナミック駆動はなんとかうまくいった。
が、やはり光らなくていいLEDが光る。
#ref(failed_current2.png)
青で囲ったLEDだけが光ってほしいのだが、横のピンをショート...
* 08.08.05 (Tue.) [#e367f808]
** ジャンパピン [#n5692d04]
ダイナミック駆動がうまくできているので、ジャンパピンの値...
が、どうもうまくいってない様子。
同じ列のピンを複数ショートすると、LEDが光らなくなる。
よくよく考えてみると、ピンを通して変な方向に電流が流れる...
#ref(failed_current.png)
どうすればいいだろうか…。
* 08.08.03 (Sun.) [#dd87c769]
** スイッチ [#lb3cb87d]
タクトスイッチの動作確認をしてみるも、思ったように動かな...
テスタで測ってみると、常にONになっている様子。
スイッチが壊れたか、、、と思ってよく見たら、90度回転して...
初歩的なミスが続くナァ…。
しばらくやりたくないとか言いつつ、3日間のインターバルでは...
まぁ、しょうがない。
修正して、スイッチの動作を確認した。
** ソフトボール大会 [#yf05c83c]
2日目。
朝9時過ぎに来たのに、朝の試合は不戦勝とのこと。
なんだかなぁ…。
準決勝に敗れた後の3位決定戦。
8点差をひっくり返しての逆転勝ち。
すげぇ。
* 08.08.02 (Sat.) [#ubd964f8]
** ダイナミック駆動 [#wf841918]
昨日の箇所を修正。
無事、所望のLEDだけが光るようになった。
<教訓>
1命令サイクルも馬鹿にできない。
** ソフトボール大会ですね [#c7266566]
今日は2試合出場で、5打数3安打、1四球。
* 08.08.01 (Fri.) [#i3c83c5f]
** ダイナミック駆動 [#af286b6e]
ダイナミック駆動に必要な処理をひと通り書いて、実行。
が、光らせたいLED以外も(控えめに言って)薄っすら光る。
秋田先生のアドバイスに従い、
- 駆動電圧を3.3Vに
- ダイナミック駆動の切り替えを目で見えるほどゆっくりに
してみると、どうも切り替えのタイミングに一瞬だけ光ってい...
// Row line
PRT0DR &= 0xE0;
PRT0DR |= (0x01<<line);
// Column line
PRT1DR &= 0xE0;
PRT1DR |= (~led_table[line] & ~0xE0);
Column lineの最初の行で、当該ラインを全部いったん"0"にし...
確かに。
ということで、Row lineは全部をいったん"0"に、Column line...
きょうは、ここまで。
* 08.07.30 (Wed.) [#u988e3dd]
** はんだづけ [#xcf14756]
ひと通り終了。
総工程約15時間。
#ref(080730_1832~0001.jpg,,50%)
しばらくはんだづけやりたくないです…。
** GPIOについて [#fdf883ea]
PSoCのI/Oポートでは、8種類の駆動方式から選択できる。
StrongとPull Upくらいしか理解してなかったので、ダイナミッ...
簡単にまとめる。
: High Z |一般的なディジタル入力用。ハイインピーダンス。
: High Z Analog |アナログ出力用。デフォルトはこれ。Drive...
: Open Drain High |'0':ハイインピーダンス, '1':"H"出力。...
: Open Drain Low |'0':"L"出力, '1':ハイインピーダンス。い...
: Pull Down |'0':抵抗プルダウン, '1':"H"出力。プルダウン...
: Pull Up |'0':"L"出力, '1':抵抗プルアップ。プルアップ抵...
: Strong |'0';"L"出力, '1':"H"出力。一般的なディジタル出...
: Strong Slow |上の立ち上がり/立下りを穏やかにしたもの。
参考:
桑野雅彦著「はじめてのPSoCマイコン」
Dr.Matrix.jp - PSoC関連 - [[I/Oポートの使い方>http://dr.m...
** ダイナミック駆動 [#p3695359]
ということで、LEDの駆動は、
LEDに流すバス(Row_bus)・・・Open Drain High
LEDから流れ出るバス(Col_LED)・・・Open Drain Low
にすると、該当しないラインはオープンになるからいい…のかな?
Row_busは共通なので、ジャンパピンには駆動している列のみ"H...
よって、
ジャンパピンの値(ショート/オープン)を読むためのバス・...
にして、いったん'0'を書き込んでから値を読むと、ショートさ...
** ピン対応表 [#lc74d7cc]
|Port|Pin No.|Connect to|Type|Drive|
|P0[0]|24|Row_bus[0]|Digital_Out|Open Drain Low|
|P0[1]| 4|Row_bus[1]|Digital_Out|Open Drain Low|
|P0[2]|25|Row_bus[2]|Digital_Out|Open Drain Low|
|P0[3]| 3|Row_bus[3]|Digital_Out|Open Drain Low|
|P0[4]|26|Row_bus[4]|Digital_Out|Open Drain Low|
|P0[5]| 2|KXM52 OutZ|Analog_In|High Z Analog|
|P0[6]|27|KXM52 OutY|Analog_In|High Z Analog|
|P0[7]| 1|KXM52 OutX|Analog_In|High Z Analog|
|P1[0]|15|Col_LED[0]|Digital_Out|Open Drain High|
|P1[1]|13|Col_LED[1]|Digital_Out|Open Drain High|
|P1[2]|16|Col_LED[2]|Digital_Out|Open Drain High|
|P1[3]|12|Col_LED[3]|Digital_Out|Open Drain High|
|P1[4]|17|Col_LED[4]|Digital_Out|Open Drain High|
|P1[5]|11|Col_CJP[0]|Digital_In|Pull Down|
|P1[6]|18|Col_CJP[1]|Digital_In|Pull Down|
|P1[7]|10|Col_CJP[2]|Digital_In|Pull Down|
|P2[0]|20|Col_CJP[3]|Digital_In|Pull Down|
|P2[1]| 8|Col_RJP[0]|Digital_In|Pull Down|
|P2[2]|21|Col_RJP[1]|Digital_In|Pull Down|
|P2[3]| 7|Col_RJP[2]|Digital_In|Pull Down|
|P2[4]|22|Col_RJP[3]|Digital_In|Pull Down|
|P2[5]| 6|Col_RJP[4]|Digital_In|Pull Down|
|P2[6]|23||||
|P2[7]| 5|SW_0|Digital_in|Pull down|
* 08.07.27 (San.) [#w2db60e7]
PSoCのI/Oピンは融通が利くしー、と思って、深く考えずに適当...
あわててDesignerでアナログブロックにADCを設置し、入力に使...
ということで、P0[5]〜P0[7]につなぎなおす。素子の配置をミ...
* 08.07.25 (Fri.) [#ca662533]
#ref(080725_1920~0001.jpg,,50%)
きょうは、ここまで。
* 08.07.24 (Thu.) [#x63c456f]
** 始動。 [#kdda1a75]
使用部品
- PSoCマイコン (CY8C29466-24PXI)
- 加速度センサモジュール(KXM52-1050)
- LED(白色5φ ×25ヶ)
- ヘッダピン(2x1pin ×40ヶ)
- タクトスイッチ
- MeRL標準DCジャック
- ユニバーサル基板
- 抵抗、他
終了行:
[[senda]]
* ものづくり [#p0b3753c]
11月のものづくり教室にむけて、教育的視点から魅力的な電子...
** コメント [#idbef4ea]
- おお。はじまっとる。 -- [[akita]] &new{2008-07-27 (日) ...
- ↓Zのときに一列が光るのは、もしかしたら、光電流によるも...
- 各列のLEDとジャンパピンの間に1個ダイオードを入れれば、8...
- ADCの割り込みのところはなやましいですね。CPU_CLOCKを、S...
- ありがとうございます。CPU_CLOCKは、SYSCLK/1にすると怒ら...
- ダイオードは…配線が大変そうな予感。今度試してみます。 -...
- ああ、3.3VではCPU動作速度が12MHzまでなので、SYSCLK/2が...
- そろそろ基板設計開始ですかね? -- [[akita]] &new{2008-0...
- そうですね。なにはともあれ、まずはPCBEの操作に慣れるこ...
- ↓本番で注意ですね・・・>LED逆挿し -- [[akita]] &new{20...
#comment
** 記事一覧 [#h67693fb]
#contents();
** コンセプト [#a2e8a9fd]
- つくった後も遊べる
- 直感的に遊べる
- 自分でアレンジして遊べる
ということをコンセプトに掲げ、何か電子おもちゃを作れない...
** 提案 [#v6eed285]
モリワキット「水盤キット」、バンダイ「超撥水GAME aqua dro...
- LEDのアレイ上を、
- 加速度センサから得た、筐体の傾き情報をもとに
- 光が水滴のように動き回る
ようなおもちゃを考えました。
さらに、迷路状に壁を置き、スタートとゴールを設けることで...
* 08.10.27 (Mon.) [#v030a178]
[[./壁]]
* 08.10.15 (Wed.) [#ab07e3ad]
長らく更新をサボってましたが…
** やってきたこと [#kffb83b0]
- 組み立てマニュアルづくり(未完)
- 小分けされた袋を開けて、部品ごとにまとめた
- 『壁』づくり(未完)
- 加速度センサの変換基板とりつけ
- ピンヘッダを、3pinづつカットする作業(疲れた…)
** やること [#t8413268]
- 『壁』をせっせとつくる
- 部品を1人分づつ袋につめる
- マニュアルを完成させる
- プログラムの調整&スタート・ゴールの設定
- アンケートをつくる
* 08.09.21 (Sun.) [#j2e72834]
** 部品到着 [#t0049c88]
組み立てマニュアルを作成するために、写真を撮りながらの本...
慣れたもので、1時間そこそこで組みあがる。
…が、まさかのLED25個全部逆挿し
orz
* 08.09.11 (Thu.) [#s8d65ef1]
** 基板到着 [#hf4d1f41]
早速1枚実作してみる。
部品が到着してないので電池ボックスが無いですが…。
動作は問題なさそうだ。
が、切ないミスが1点。
** やること [#t1fd37ca]
- 配線の都合上、LEDのY方向の配列を逆にしたのを修正する
- 2ボタンになったので、難易度選択などを実装する
- その他、それらしい機能を実装する
-- Z方向の加速度を使ってジャンプする
-- etc...
* 08.08.23 (Sat.) [#b4b2f918]
** 基板作成 [#u64e7c8d]
秋田先生の、[[PCBEによる基板設計の手引き:http://akita11.j...
去年の、[[「ふるディスプレイをつくろう」をつくろう:http:/...
さらに、こんちさんからもデータと基板をいただく。
パッドを並べて、ラインで接続していく作業は、なんとなくつ...
* 08.08.21 (Thu.) [#mb590d5f]
** ジャンパピン [#c1b4fdba]
まぁやってみよう、ということで、「ジャンパブロックにダイ...
試作基板の変更はなし。
ただし、実作のときは、試作基板では2pinのピンヘッダを、3pi...
** 壁 [#fc9b3436]
傾きに応じて動くLEDと、壁の動作を実現完了!
調整は必要だが、最低限動く。
* 08.08.20 (Wed.) [#s16c1e5f]
** ジャンパピン [#w931c00f]
ダイオードを挿入し、無関係なLEDが光る問題は解決した。
しかし、再び問題発生。
#ref(current_diode.png)
緑の丸で囲ったようにピンをショートしたとき、同電位("H")...
青の矢印で示したピンはオープン状態なのだが、この状態に関...
これでは、ショートされていると誤って読み取ってしまうこと...
任意の向きの「L字」に反応して発生するので、ゴールできな...
これも現状では不可避な気が…。
もっとも単純には、全ジャンパピンに対して1つのダイオードを...
遊ぶ前に、ピンを1列ずつ読み取らせてから、スタートする、...
これもスマートじゃないし、気軽に遊べなくなってしまう。
というか、1列ずついちいち抜き差しするのはありえないだろ...
以前の問題が発生したときに、戯れで考えた解決法に、
「ジャンパブロックにダイオードを埋め込む」
というのがあったが…
<メリット>
- ダイオードをはんだづけする必要が無いので、製作の手間に...
-- 当然、ダイオードを埋め込んだブロックを作る必要はあるの...
- ダイオードを埋め込むついでに、それこそ『壁』を模したよ...
- ピン全部に対してダイオードをつけるよりは素子数が少なく...
<デメリット>
- ジャンパブロックに向きができてしまい、遊ぶときの手間が...
-- ダイオードに極性があるので、逆向きに挿されると用を成さ...
-- 「直感的」がキーワードだけに、なかなかやっかい。
- 市販のジャンパブロックが流用できない。
-- ジャンパブロックは小さくて失くす可能性があるが、比較的...
- 埋め込む手間と、相当数のダイオードが必要。
うーん…
メリットに対してデメリットのほうが目立つかなぁ。
** アイディアメモ [#d296bac1]
もう少しアイディアを膨らませてみる。
任意の向きに挿されると困るなら、ジャンパブロックを一定の...
どうせ『壁』なので、いくつかつなげて使うのが普通だろう。
ならば、最初からつながった状態で用意されていても、別段問...
例えば、4つ分。
某テ○リスのブロック型に、7種類の「壁ブロック」を用意して...
現状、ジャンパピンはLEDに対して全方向に対称に、きれいに並...
これを、例えば右下方向に少しずらす。
または、少し角度をつけて、斜めに配置する。
そうすれば、「壁ブロック」はLEDと干渉したり、ピンと合わな...
あ、回転できないんじゃテト○スとは別物か…(謎)
* 08.08.18 (Mon.) [#s90c84e9]
** 動作 [#y2d3b190]
次のグローバル変数を用意
: acc_x, acc_y | 加速度センサから得られる、x方向、y方向の...
: vel_x, vel_y | 一定時間(100ms)ごとに、加速度を足し込...
: pos_x, pos_y | 一定時間ごとに速度を足し込むことで得られ...
タイマ割り込みは10Hzなので、100msごとに加速度を読み込む。
加速度は、-2g〜+2gを8ビット(256等分)。
よって、得られるacc_x, acc_yの単位は、
[(9.8/64)m/(0.1)s^2] ~= [(0.153)m/(0.1)s^2] = [(153)mm/(0...
と計算して、実サイズに沿った係数で動かしてみたものの、加...
ということで、トライ&エラーで適当な係数を決めることにす...
* 08.08.17 (Sun.) [#x67bec76]
** ダイオード [#ucf7227e]
コメントで、ダイオードの挿入にゴーサインをいただいたので...
しかし、LEDの数(25個)だけ必要だと思っていたのに、列の数...
どうすればいいだろうか…。
#ref(failed_current2.png)
現状で問題なのは、ショートしたジャンパピンから流れてくる...
ということで、ジャンパピンと縦バスとの間にダイオードをは...
縦バスとLEDは直結で問題なし。
ということは…こうか!
#ref(led_array_with_diode.png)
縦にもう1本バスを通してやり、PSoCのピンからダイオードを通...
そのバスからジャンパピンに流す、という仕様に。
#文字だと説明しづらいな…。
* 08.08.16 (Sat.) [#i41c8249]
** 動作モード [#cf5dfb67]
A/D変換もなんとかなりそうなので、動作部分に取り掛かる。
- main()内部
動作モード変数 mode を定義し、while(1)ループ内部で、mode...
modeの値は、とりあえず次のようにした。
-- CONF ・・・CONFIGモード;初期設定を行う
-- PLAY ・・・PLAYモード;実際に動作させる
-- OVER ・・・GAME OVER状態;タクトスイッチ押下でCONFに移行
- Timer8_1_ISR()関数
1kHzでタイマ割り込みをかけて動作する関数。
タクトスイッチの状態読み取り、LEDのダイナミック駆動の制御...
#ホントはジャンパピンの読み取りもここでやりたいが、保留...
- Timer8_2_ISR()関数
10Hzで割り込み。
加速度センサから読み取ったx,y方向の加速度値(acc_x, acc_y)...
予定。
* 08.08.14 (Thu.) [#kaf6b7c4]
** ADC [#g65db884]
加速度センサは動いてるし、配線も間違ってはいない(と思う...
ということで、とりあえずできることをいろいろ試してみる。
- Global Resourcesをいろいろ変えてみる
-- Ref Mux : (Vdd/2)+/-(Vdd/2) に
--- これは必須。入力電圧0V〜Vdd
-- Analog Power : SC On/Rf Highに
-- Op-Amp Bias : Highに
-- A_Buff_Power : Highに
-- Trip Voltage[LVD (SMP)] : 3.13V (3.25V)に
--- いずれも特に変化なし
- PGAの設定を見直す
-- Reference : AGNDに
--- Vdd/2にする。まぁ1倍だから関係ないか…
- PGAとTRIADCのStartする順序を変えてみる
-- 関係なし
どこだ…
- Timer8(2つ)のClockを落としてみる(VC3に)
-- 割り込みが頻繁に起こるとADCのデータ取得が追いつかない...
--- …ここでした。
ADCのClockはVC2(125kHz)、Timer8のClockもVC2で、Periodは...
10クロックで割り込まれたらA/D変換はできないか…。
モジュールを増やしたりデバッグしたりするたびに、VC1、VC2...
現状をとりあえずメモ。
- SysClk : 24MHz
- CPU_Clock : SysClk/8 = 3MHz
-- ここまでは固定。
- VC1 : N=12, VC1 = 24MHz/12 = 2MHz
-- これもこんなもんでいいか。N=16が最大で、1.5MHzまで落と...
-- TRIADC8のClockに使う。
- VC2 : N=10, VC2 = 2MHz/10 = 200kHz
-- N=16が最大。キリのいいところでこんなもんで。
-- Timer8_1のClockに使う。
--- ダイナミック駆動のラインカウント(ライン変更)用に、5...
--- Preiod=39で、200kHz/40 = 5kHz。
- VC3 : Source=VC2, Devider=200, VC3 = 200kHz/200 = 1kHz
-- Timer8_2のClockに使う。
--- 加速度をもとに、LEDの光が動く速度を演算するために、適...
--- とりあえず、Period=99で、1kHz/100 = 10Hz
としてみたら、またしても同じような症状で動かなくなった。
Timer8_1のPeriodを39->199とし、1kHzで割り込みをかけるよう...
1列につき200Hzだが、まぁ目視できるほどではないからいいか…。
* 08.08.11 (Mon.) [#q4139c56]
** ADC [#w24ddeb1]
さしあたり、ピンはオープンにしておけば動作に問題はないの...
- [[PSoCと3軸加速度センサーでXYZ軸の加速度を計測する(dino...
- [[ブレッドボードで簡単PSoC - Gセンサを使ってみる:http:/...
同じ秋月の加速度センサを使っているサイトを参考に、TRIADC8...
3入力で、分解能は8bit。
TRIADC8のInputには、直接I/Oピンを指定できないので、それぞ...
データシートを見ると、Clockには8MHz〜125kHzを入れるように...
プログラムも、ほとんどデータシート通り。
while(1)
{
// Read ADC
while(TRIADC8_1_fIsDataAvailable() == 0); // Wait fo...
acc_x = TRIADC8_1_cGetData1(); // Get Dat...
acc_y = TRIADC8_1_cGetData2(); // Get Dat...
acc_z = TRIADC8_1_cGetData3ClearFlag(); // Get Dat...
・・・
}
その他適宜設定して、書き込み。
が、思ったように動作しない。
- テスタで測ってみると、加速度センサの出力ピンは、所望の...
- TRIADC8_1, PGA_1, PGA_2, PGA_3はちゃんとStartしている。
- いろいろ試してみると、どうやらwhileループの中の、while(...
-- ADCがready状態にならない(?)
-- 割り込み関係だろうか。でもM8C_EnableGInt;はちゃんと入...
* 08.08.09 (Sat.) [#n8cc124f]
** ジャンパピン [#f56c6898]
現状のH/W構成では、先の問題を根本的に解決できないような気...
H/W構成の変更も視野に入れた解決法としては、次のようなこと...
- 現状LEDとジャンパピンで共用しているダイナミック駆動用の...
-- こうすることで、ジャンパピンによる意図しない電流は、少...
-- が、29466のピン数上、5x5は不可能になる
- 各ジャンパピンの根元にダイオードを挿入する
-- こうすれば、横バスから縦バスに電流が流れなくなるのでは?
-- ただし、さらに素子が増えるので、材料費と半田付けの手間...
他にもあるだろうか…
* 08.08.06 (Wed.) [#k8a2265d]
** GPIO [#p5f597f7]
昨日の続き。
縦バスの駆動がStrongだと、同列のジャンパピンをショートす...
そこで、駆動をOpen Drain Highにしてみる。
が、今度は横1列すべてのLEDが光ってしまうようになった。
#ref(led_array_z.png)
縦バスをハイインピーダンスにすると、電圧が不定になり、LED...
不定ではまずいので、縦バスに"L"を出すべきタイミングでは、...
実際に抵抗をかませると、所望の動作をしているように見える。
ん、そもそも駆動をPull Downにすればいいんじゃないか?
ということで、縦バスの駆動をPull Downにする。
どうやらこれで思い通りの動きをしてくれそうだ。
** ジャンパピン [#iad1e1bf]
ダイナミック駆動はなんとかうまくいった。
が、やはり光らなくていいLEDが光る。
#ref(failed_current2.png)
青で囲ったLEDだけが光ってほしいのだが、横のピンをショート...
* 08.08.05 (Tue.) [#e367f808]
** ジャンパピン [#n5692d04]
ダイナミック駆動がうまくできているので、ジャンパピンの値...
が、どうもうまくいってない様子。
同じ列のピンを複数ショートすると、LEDが光らなくなる。
よくよく考えてみると、ピンを通して変な方向に電流が流れる...
#ref(failed_current.png)
どうすればいいだろうか…。
* 08.08.03 (Sun.) [#dd87c769]
** スイッチ [#lb3cb87d]
タクトスイッチの動作確認をしてみるも、思ったように動かな...
テスタで測ってみると、常にONになっている様子。
スイッチが壊れたか、、、と思ってよく見たら、90度回転して...
初歩的なミスが続くナァ…。
しばらくやりたくないとか言いつつ、3日間のインターバルでは...
まぁ、しょうがない。
修正して、スイッチの動作を確認した。
** ソフトボール大会 [#yf05c83c]
2日目。
朝9時過ぎに来たのに、朝の試合は不戦勝とのこと。
なんだかなぁ…。
準決勝に敗れた後の3位決定戦。
8点差をひっくり返しての逆転勝ち。
すげぇ。
* 08.08.02 (Sat.) [#ubd964f8]
** ダイナミック駆動 [#wf841918]
昨日の箇所を修正。
無事、所望のLEDだけが光るようになった。
<教訓>
1命令サイクルも馬鹿にできない。
** ソフトボール大会ですね [#c7266566]
今日は2試合出場で、5打数3安打、1四球。
* 08.08.01 (Fri.) [#i3c83c5f]
** ダイナミック駆動 [#af286b6e]
ダイナミック駆動に必要な処理をひと通り書いて、実行。
が、光らせたいLED以外も(控えめに言って)薄っすら光る。
秋田先生のアドバイスに従い、
- 駆動電圧を3.3Vに
- ダイナミック駆動の切り替えを目で見えるほどゆっくりに
してみると、どうも切り替えのタイミングに一瞬だけ光ってい...
// Row line
PRT0DR &= 0xE0;
PRT0DR |= (0x01<<line);
// Column line
PRT1DR &= 0xE0;
PRT1DR |= (~led_table[line] & ~0xE0);
Column lineの最初の行で、当該ラインを全部いったん"0"にし...
確かに。
ということで、Row lineは全部をいったん"0"に、Column line...
きょうは、ここまで。
* 08.07.30 (Wed.) [#u988e3dd]
** はんだづけ [#xcf14756]
ひと通り終了。
総工程約15時間。
#ref(080730_1832~0001.jpg,,50%)
しばらくはんだづけやりたくないです…。
** GPIOについて [#fdf883ea]
PSoCのI/Oポートでは、8種類の駆動方式から選択できる。
StrongとPull Upくらいしか理解してなかったので、ダイナミッ...
簡単にまとめる。
: High Z |一般的なディジタル入力用。ハイインピーダンス。
: High Z Analog |アナログ出力用。デフォルトはこれ。Drive...
: Open Drain High |'0':ハイインピーダンス, '1':"H"出力。...
: Open Drain Low |'0':"L"出力, '1':ハイインピーダンス。い...
: Pull Down |'0':抵抗プルダウン, '1':"H"出力。プルダウン...
: Pull Up |'0':"L"出力, '1':抵抗プルアップ。プルアップ抵...
: Strong |'0';"L"出力, '1':"H"出力。一般的なディジタル出...
: Strong Slow |上の立ち上がり/立下りを穏やかにしたもの。
参考:
桑野雅彦著「はじめてのPSoCマイコン」
Dr.Matrix.jp - PSoC関連 - [[I/Oポートの使い方>http://dr.m...
** ダイナミック駆動 [#p3695359]
ということで、LEDの駆動は、
LEDに流すバス(Row_bus)・・・Open Drain High
LEDから流れ出るバス(Col_LED)・・・Open Drain Low
にすると、該当しないラインはオープンになるからいい…のかな?
Row_busは共通なので、ジャンパピンには駆動している列のみ"H...
よって、
ジャンパピンの値(ショート/オープン)を読むためのバス・...
にして、いったん'0'を書き込んでから値を読むと、ショートさ...
** ピン対応表 [#lc74d7cc]
|Port|Pin No.|Connect to|Type|Drive|
|P0[0]|24|Row_bus[0]|Digital_Out|Open Drain Low|
|P0[1]| 4|Row_bus[1]|Digital_Out|Open Drain Low|
|P0[2]|25|Row_bus[2]|Digital_Out|Open Drain Low|
|P0[3]| 3|Row_bus[3]|Digital_Out|Open Drain Low|
|P0[4]|26|Row_bus[4]|Digital_Out|Open Drain Low|
|P0[5]| 2|KXM52 OutZ|Analog_In|High Z Analog|
|P0[6]|27|KXM52 OutY|Analog_In|High Z Analog|
|P0[7]| 1|KXM52 OutX|Analog_In|High Z Analog|
|P1[0]|15|Col_LED[0]|Digital_Out|Open Drain High|
|P1[1]|13|Col_LED[1]|Digital_Out|Open Drain High|
|P1[2]|16|Col_LED[2]|Digital_Out|Open Drain High|
|P1[3]|12|Col_LED[3]|Digital_Out|Open Drain High|
|P1[4]|17|Col_LED[4]|Digital_Out|Open Drain High|
|P1[5]|11|Col_CJP[0]|Digital_In|Pull Down|
|P1[6]|18|Col_CJP[1]|Digital_In|Pull Down|
|P1[7]|10|Col_CJP[2]|Digital_In|Pull Down|
|P2[0]|20|Col_CJP[3]|Digital_In|Pull Down|
|P2[1]| 8|Col_RJP[0]|Digital_In|Pull Down|
|P2[2]|21|Col_RJP[1]|Digital_In|Pull Down|
|P2[3]| 7|Col_RJP[2]|Digital_In|Pull Down|
|P2[4]|22|Col_RJP[3]|Digital_In|Pull Down|
|P2[5]| 6|Col_RJP[4]|Digital_In|Pull Down|
|P2[6]|23||||
|P2[7]| 5|SW_0|Digital_in|Pull down|
* 08.07.27 (San.) [#w2db60e7]
PSoCのI/Oピンは融通が利くしー、と思って、深く考えずに適当...
あわててDesignerでアナログブロックにADCを設置し、入力に使...
ということで、P0[5]〜P0[7]につなぎなおす。素子の配置をミ...
* 08.07.25 (Fri.) [#ca662533]
#ref(080725_1920~0001.jpg,,50%)
きょうは、ここまで。
* 08.07.24 (Thu.) [#x63c456f]
** 始動。 [#kdda1a75]
使用部品
- PSoCマイコン (CY8C29466-24PXI)
- 加速度センサモジュール(KXM52-1050)
- LED(白色5φ ×25ヶ)
- ヘッダピン(2x1pin ×40ヶ)
- タクトスイッチ
- MeRL標準DCジャック
- ユニバーサル基板
- 抵抗、他
ページ名: