作業日誌

目次

メニュー

テンプレへのコメント

コメントはありません。 Comments/wada/2009年度

お名前:

過去の日記

10月16日(金)PM10

骨折

先日の話ですが、ついにPSoCマイコンの足を折ってしまいました。
どまえさんのアドバイスをもとに復元を試みました。

wada13.jpg

結果、無事復活して書き込み、動作が出来ました。左手前の足です。

次回やってしまったとき(無いように気をつけよう)用にメモ・・・

・付け直す足は何を使えばよいのか
→義足は適当な抵抗の切れ端などで問題ないもよう
・半田付け時に両手がふさがってマイコンの向きが固定出来ない
→寝かせたラジオペンチで軽く挟んでおくとやりやすかった
・不安定なので半田とこてを持ちながら義足をつけるのが難しい
→まずマイコンの足の付け根にさっと半田をつけて、
 次に溶かして義足を埋めるようにするとやりやすいかも

9月9日(水)PM7

wada12.jpg
マイコンペに向けてネタ練りと練習ってことで
とりあえずラミエルを作ってみました。
拡散型?のLEDを初めて使ってみたけど、たしかに広がりますね。
あとは電池ボックスとスイッチを買ってきて
独立した置物にしてみようかと考え中。
(ラミエルについてはこちら→ http://dic.nicovideo.jp/a/%E3%83%A9%E3%83%9F%E3%82%A8%E3%83%AB

マイコンペにはもうちょっと壮大なものを検討中。。。

7月30日(木)PM4

フルカラー

先日、お土産(おつかい)にもらった(買った)
フルカラーLEDの光り方とか抵抗の程度について実験してみる。
OSTA5131A http://akizukidenshi.com/catalog/g/gI-02476/
説明書を参考にR300Ω、G120Ω、B80Ωくらいでやってみたら、
だいたい真っ白に近い感じになった。と、簡単にメモ。
ブレッドボードの使い方をちょっと習得、というか思い出した。
実験第一が懐かしい・・・
wada11.jpg
目視だと白っぽいけど手をかざしてみると何となく青っぽく見える。
アクリル板と組み合わせる場合はどっちが自然だろうか・・・。
木材とアクリル板をさがしてきてみよう。

第一回マイコンブLEDコンテスト(仮)出展に向けての計画の一環です。

7月28日(火)PM0

通信サイコロ

先日のサイコロはずっと同じ基板を流用してやってるので、
UART用のピンと配線が用意されている。
と、いうことでUARTをまだうまく使えてないので何かやってみようと思った。
とりあえず案は・・・

・スイッチと同様にPCからの受信データによって回転と停止
(0を送ったら回転開始、1〜6を送ったら停止など)
・出た目を送信し返してとりあえず数字で表示
・停止のときに送ったのと同じ目が出たら当たりフラグを送信

あたりをとりあえず思い付いた。
無限ループの中で『ある条件を満たしたときに一回だけ送信』
みたいな動きをどう作っていいのかなかなか考え付かない。
うーん。

7月24日(金)PM4

サイコロ

wada09.jpg
wada10.jpg
偉大なる先輩様方もかつて作ってらっしゃったという、
電子サイコロを僕も真似して作ってみました。
一応、構成とかプログラムまで真似すると勉強にならないので、
ほぼ記憶にない状態から考えてやってみました。
結果、とりあえずそれっぽい感じに動きました。
『(具体的に)〜を作ってみよう』と思って、
やってみて実現出来るとなかなか気分が良いですね。
適当ーに組み合わせていじってのときと違って、
目標というかゴールみたいなものがあるので達成感が。

配線も当初よりはだいぶマシになってきた。と、思います。
最初にソケットをつけたときの酷い配線の邪魔なこと・・・
写真では見にくいですが、直角に曲がってる配線はだいたい今日のやつです。
びよ〜んとしてるのはだいたい前のやつ・・・

今回のサイコロの簡単な動作は、
タイマーが常時定期的に割り込みをしていて、
ボタンを押しているときにcountの値を増やし、
123456123456・・・と推移するのを読んで、
それぞれの目の光り方を定義した関数dice1〜6を呼ぶ、
ついでにボタンを押しているときに赤、離している時に緑のLEDが光る。
くらいのものです、以下にソースの概略。

過去にsendaさんのサイコロ記事を読んだときに、
6ピン7ピン使わなくても6個の目を再現出来るということを
薄っすらと覚えていたのでちょっと考えてみたら
たしかに出来るなーと。でも今回は6ピン7ピン使ってみました。
(7/25AM3、ふと目覚めると同時に誤字に気付いたので訂正します)

あと考えてるのは、目が変わる速度がだんだん遅くなって
やがて目が確定する、みたいなことなんですけど、
これはタイマーの使い方を変えないと出来なそう?
目が変わる速度の初期値もたとえば加速度センサなんかで
激しく傾けたら早くとかに出来たら、面白そう。
あとはタイマーによる擬似擬似乱数(?)だと
ある程度ゆっくりで駆動していると目押し出来てしまうので、
かと言ってあんまり高速だと値が推移してる感じがしないというか、
全部点灯のダイナミック駆動っぽくなっちゃうので、
擬似乱数生成のモジュール(Random seq?)を使ってみたいかなとか。

	PRT1DR&=~0x10;
	if((PRT1DR & 0x10)!=0x00)
	{
		LED_1_Off();
		LED_2_On();
	}
	else
	{
		LED_1_On();
		LED_2_Off();
	}
	switch(count){
		case 1:	dice1();
			break;
		case 2:	dice2();
			break;
		case 3:	dice3();
			break;
		case 4:	dice4();
			break;
		case 5:	dice5();
			break;
		case 6:	dice6();
			break;
		default:;
	}
	#pragma interrupt_handler Timer8_1_ISR
	void Timer8_1_ISR(){
		PRT1DR&=~0x10;
		if((PRT1DR & 0x10)!=0x00)
		{
			count++;
			if(count>6){count=1;}
		}
	}

7月23日(木)PM12

マルツ

wada08.jpg
今更なのですが、マルツパーツ館金沢西インター店に行ってきました。
ようやくの電子工作部品専門店デビューです。
http://www.marutsu-group.jp/kanazawa/
実は知らなかったんですが、ここって自作PCのパーツ類も置いてあるんですね。
対して通ではないですが自分も高一の時から自作erやってたのに
どうしてこんなに近場の店を知らなかったんだろう。
残りの市内の自作パーツを扱ってる店は全部回ったつもりなのだが・・・
「あの店はよく分からないが業務用の何か電子部品の店だろう」
みたいなことを長年思ってた気がしますが、先入観って恐ろしい。
(西金沢は何かと縁がなくて経験不足なのもありますが・・・)
電子工作×自作PC=天国ということで、今後通うことになりそうです。

あと今日は、電子サイコロのパクrでもやってみようとふと思いまして。
とりあえず配線・・・とこれまではやってみてたのですがその前に、
どのピンを何にどんな経路で回すかなどを簡単に考えてからやろうということで、
あーでもないこーでもないとメモをして考えてみました。
やってみて気付きましたが、最初にやろうとしたことよりも
いい配線が思い付いたり、共有して簡略化出来るものを意識したり、
先に考えてから手を動かすことも大事だなあとつくづく思いました。

今までのチュートリアルっぽい段階は
・冷蔵庫を漁る→調理→味付け→完成(ぽくなるまで味付け)
今後目指すべき何か作るという段階は
・レシピ検討→買い出し→調理→味付け→完成
な、イメージなんだろうか。
ある範囲のパーツを組み合わせた結果何か出来そうなので、
プログラムをいじいじしてたら何か出来た、が前者。
ネタがあってそのためにパーツを揃えて組み合わせて、
プログラムをいじいじして目標に近づける、が後者。
「作ること」が目的から手段に変わるのかな?
まだ自分にはよく分かりません。掴みたいです。

ツマルところ、最近、料理にもハマってます。
先日はオムライス作ってみました。

7月13日(月)PM4

うあrt

wada07.jpg
↑ピンをはんだ付けするときに、裏からだけ見ていた結果、
取り付け角度が気付いたら随分と傾いて(×かたがって)しまった・・・。
体裁もよくないし端子とかに負担かかりそうなので、今後注意しよう。

今回はLEDを増やしてみたり、シリアル通信用のピンを繋いでみたり改造。
とりあえず、スイッチ押してる時にPCから送った数値に1足して返す、などの
簡単なもので無事通信が出来ていることを確認しました。
これは色々と遊べそう。

	d=UART_1_cGetChar();
	PRT1DR&=~0x10;
	if((PRT1DR & 0x10)!=0x00)
	{
		UART_1_PutChar(d+1);
	}

以下ちょっとメモ。

・ドライバの在り処
チュートリアルに載ってる場所から動いてる模様。
今回は↓ここから入手しました。
https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

GetCharの引数
UART_1_cGetChar(d);とチュートリアルにありましたが、
こう書くと『too many arguments』と言われたので、
d=UART_1_cGetChar();とするとdに値を取得できました。

・4ピンの向き
アダプタの、黒いチップが乗ってる側を見た場合に
右からGND、VDD、受信(RX)、送信(TX)と並んでいる。

7月10日(金)PM2

ぇd

	PRT1DR&=~0x10;
	if((PRT1DR & 0x10)!=0x00)
	{
		if(count>100){
			LED_1_On();
		}
		else
		{
			LED_1_Off();
		}
	}
	else
	{
		LED_1_Off();
	}
	#pragma interrupt_handler Timer16_1_ISR
	void Timer16_1_ISR(){
		count++;
		if(count>200){count=0;}
	}

とか(↑端折ってます)しょうもないことをして、
ボタンを押してるときにLEDがパカパカ光る程度に改造してみた。
タイマーで割り込みつつ条件分岐の練習、ってことで・・・

無限ループにおいての条件分岐は、設計演習のGBAアプリ開発で
かなり頭を捻ってそれなりに掴めてたはずなんだけど、
久しぶりにやろうとするとどういうフラグでどう分岐すればよいか
なかなか閃かずこの程度で相当苦労してしまった。
と言ってもコレも十分ナンセンスな書き方な気がする。
久々に一年前のソースでも見てみようかな。

そういえば、PWMとタイマーをちょっと組み合わせたら、
簡易電子蛍っぽいものが、このチュートリアル一式だけでも作れそうな気がする。
時間に応じてデュティ比を上げ下げする早さを変えたパターンをいくつか作っておいて、
(光らないも含めて)何とかしてランダムに分岐させたら、
こう、蛍っぽい感じになりそうな・・・
しかしGBAのときもそうだったけど、肝心の乱数の生成が問題になりそう。
あの時はあるライブラリの乱数生成の関数を無条件にループ内でまわし続けることで、
ボタンを押したタイミングによって乱数が変わるように無理矢理仕向けたが。
ボタンひとつの電子蛍をやろうとすると、不規則な要素というか
そもそもインタラクティブな要素が何もないから無理だろうか・・・。
光とか温度センサで不定の値をこっそり回収すれば出来なくもない・・・?
あ、でもGBAのときと同じように無駄に乱数を生成し続ければ、
ボタンを押したタイミングで乱数の値が変わるかも知んない。
では乱数の生成はどうすれば・・・rand()とか出来なそうだし・・・
と思ったら、しっかり専用のRandom Seqってモジュールがあるんですね。
何でも揃ってんだなあー

7月9日(木)PM6

27443

今回は27443で書き込めない原因の解明と、
(29466でも)スイッチが反映されていなかったことの解明を。
結果としては無事、チュートリアル部分を終われました。
wada06.jpg

・27443が書き込めなかった件
一応、確認していたつもりだった
プロジェクトとか書き込み機の型番の設定を
もう一回確認して書き込みを試みる。
それでもやはりBUSYでとまったので次の手として、
新品の27443に取り替えて同じく書き込んでみる。
あっさり成功・・・ということは、最初に借りた方の
27443が少なくとも部分的に不調だったと思われます。
足が一本折れて付け直した跡があったけど、
ここは以前テスタで測ったら接触は問題なかった(部長談)。
ということは足を直すときに熱でおかしくなってたんだろうか・・・。

・スイッチが動かない件
まず、スイッチの四本足のうち繋ぐべき箇所を間違えていた。
スイッチの説明はこないだ誰かに聞いたはずだけど、
どうやらそのときに見間違えて90度間違えて覚えてた模様。
これに関してテスタでの通電チェックを今更ながら教わって覚えた。
テスタのこういう使い方は初な気がするけど、
ショートしてそうな部分とか複数本の足を間違えてないかとか、
スイッチがまともに動いてるかとか、色々チェック出来て便利だと痛感。
で、スイッチの足のチョイスを改めるもまだ動かず。
何だかんだで原因はチュートリアルの
>>さらに、スイッチに接続したピンの、DriveをPull Downに設定します。
の部分を『LEDに接続したピンの』だと思い込んで読み違えてたことだった。
ということは、スイッチを通してvddと繋いだところで、
HiZだから何にも入れない状態になってたということかな。
10回以上この文章を読んでいたはずなのに、思い込みとは恐ろしい・・・

二つとも疑問が解決して、一応チュートリアルは終わりました。
マイコンをほんの少しでも征服できた感がなかなか素敵ですね。
今後はプログラム上なり、センサ等を繋ぐなりで色々遊んでみたいです。
(チュートリアル用としては29466より27443の方が安いらしいし、
書き込みが早くて向いてるかも知れない・・・?)

7月7日(火)PM3

29466

入門してみました。
半田付け楽しい・・・
wada04.jpg
wada05.jpg
余ってるらしい27443を借りてチュートリアル通りに動かしてみようとしたら
書き込みのときにBUSYで止まる現象、何回やっても同じく。
電源は供給出来てるようだったので理由が検討つかず、
とりあえずショートしてるかも知れない半田付け部分を訂正してみた。
それでも変わらないので改めて29466を借りて、
同じプログラム等を作って書き込み等をまたやってみる。
書き込めたので配線とかの問題ではなそう。
そうすると今度はLEDが光っていない。
LEDの向きを間違えたか、どっかショートしてるのか、
とか思ったけどループ内をLED_1_Onのみにしたら無事光った。
と、いうことはきっとスイッチ関係のif文の書き方を間違えたのかな。
結局、27443が何故動かなかったのかも気になるところ・・・

写真の配線で斜めにやってる怪しいところは、
お隣とショートしてるかも?と思って外側経由に修正した結果で、
もともとはその二本もソケットの下というか内側を通してました。
最初は全部この中に収めることで、各ピンにLEDとかつけるときに
邪魔にならなくて快適だろうなんて考えてやってましたが、
実際にこの通り配線し終えてから各ピンに抵抗やスイッチを
つけようとしたときにビニール線がスレスレのところに
うじゃうじゃしててどうも失敗だったような気がした。
正解ってような配線の仕方はないのだろうけど、
だからこそ毎回考えるのが楽しそう?

7月3日(金)PM5

http://jp.makezine.com/blog/2009/06/the_solder_test.html?CMP=OTC-T10K41815721
はんだ付けの練習として↑これに近いことをやってみた。
酷い出来だけど意外に燃えた。
wada03.jpg
ムキになりすぎて半田ガス(?)を正面から吸いすぎたせいか、頭痛が痛い。
せっかくなので作った□は溜め込んでいって、
以後自分の成長を実感できるようにしよう。
そういう要素が大事だと輪講で使った論文にあったので・・・
(題:Effective Design and Use of Requirements Engineering Training Games)

6月5日(金)PM1

秒2

秋田先生にアドバイスいただいたPWM16の使い方。
最初はよくわからなかったが考えてみればそもそも
パルス幅をデュティ比(覚えたての言葉)にしか
使おうとしないからあんなへんなカウントで
光っていると光っていないを切り替えていた模様。
一個のパルスを一秒にしてしまえば、
光っている時間をパルス幅によって任意に出来るとわかった。
現状ではとりあえず6000Hzなので0.5秒光る感じに。
PWM16を二個目も使って、毎秒緑が光る、10秒枚に青が光る。
プログラムを見ると数分で終わっただろうと思われそうだけど、
この程度にまだ数時間かかってしまいます。

	M8C_EnableGInt;
	PWM16_1_Start();
	PWM16_2_Start();
	while(1){
		PWM16_1_WritePulseWidth(3000);
		PWM16_2_WritePulseWidth(3000);
	}

6月4日(木)PM6

何かやってみようと思って1秒間に一回
LEDが光るものでも作ってみようと思ったら、
24MHzを割っても60Hzくらいまでしか来れない気がして
結局こんな感じの変なプログラムになった。
これは割り込みである必要がないかも知れない。

設計演習のGBAソフト作成でも割り込みが出来なくて
こんな感じのカウントと分岐を多用して、
それっぽい動作を無理矢理作ってたような気がする。
http://jaco.ec.t.kanazawa-u.ac.jp/kitagawa/edu/GBA_TM/index.html
↑大量のフラグとカウントで割り込みやってます(ソース載ってないけど)

	void Timer8_1_ISR(){
		count++;
		if(count<50){
			PWM8_1_WritePulseWidth(0);
			}
		if(count>=50){
			PWM8_1_WritePulseWidth(255);
		}
		if(count==60){
			count=0;
		}
	}

6月3日(水)PM7

Timer

チュートリアルのスライダとタイマ割り込みを試す。
マニュアルどおりにやってるのになかなか動かず、
最終的に原因はhandlerをhundlerと書いていたことだと、
ずいぶん時間がかかって判明、注意力が欠けてる。
コンパイラがエラーは吐いていなかったので見落としていたけど
よく見たら警告は吐いていたので気をつけなければ・・・

コメント欄をまた置いてみたら前のやつと連動してるみたいで。
そもそも見出しの横についてる英数字も意味がわからないし、
(記事ごとにID振ってるとかなのかな)
wikiの仕組みもうちょっと勉強しないと謎が多いです。

コメントはありません。 Comments/wada/2009年度

お名前:

6月2日(火)PM1

Sense

チュートリアルのCapSenseの項を試す。
wada02.jpg
プログラミング能力が落ちきっていてミスが相次いだり、
センサを違うものと勘違いしててで、
(青ビニール=温度センサと考えていたことや、
ケースの中にしっかり埋まっていて見落としていたり)
これだけでかなり時間を食ってしまった。
とりあえず進めてみるのもいいけど必要そうな部分を先によく読んでおかないと、
今の場合どの部分が何の機能かとか把握しておくことも大事だなあと。

あとコメント欄とかテストしてみる。

コメントはありません。 Comments/wada/2009年度

お名前:

6月1日(月)PM10

テスト

PSoC FirstTouchはじめてみました。(と同時にマイコンブ入部?)

まずは環境の準備とここのwikiのチュートリアルから。
金曜日に一回やってみたんですが、何故かLEDが光らなかったのでした。
今日は一回全部消してはじめからやり直してみようと思って、
とりあえずUSBポートに挿してみたら何故か動いてました。
wada01.jpg

改めてビルドから書き込みまでやり直してみてもやはり光らず、
書き込み後に一旦書き込み機から抜いて挿し直すと動く様子。
もしかして、古そうなUSB1のハブを使ってるんだけども、
これがACアダプタからの電源供給で、ハブ自身も全ポートも
常時供給されてるみたいなので、書き込み後に再起動とかが
うまく出来てないとかあるのかも知れません。

・・・と思ってマザボのUSBポートに直接挿してみましたが、
同じように書き込んでも抜き差ししないとLED光らず。
こういうもんなんだろうか・・・

あとHTMLとかCGIは多少は弄ったことあるものの
wikiを書くのは初なのでヘルプ様様でした。
wikiのルールもなかなか面白いもんですね。


添付ファイル: filewada03.jpg 669件 [詳細] filewada07.jpg 710件 [詳細] filewada12.jpg 674件 [詳細] filewada06.jpg 697件 [詳細] filewada02.jpg 684件 [詳細] filewada13.jpg 699件 [詳細] filewada11.jpg 676件 [詳細] filewada10.jpg 708件 [詳細] filewada08.jpg 709件 [詳細] filewada09.jpg 704件 [詳細] filewada05.jpg 699件 [詳細] filewada01.jpg 691件 [詳細] filewada04.jpg 714件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-02 (日) 11:12:58