2008-02-27

流れるウインカー基板 パターン処理  

パターン処理も骨組みが出来ました。
複数パターンを考慮しスイッチ入力の処理をつければ全体的な骨組みが出来ます。
スイッチ入力が簡単なようで難しいのです、これはちょっと後回しにしています。

参考資料・・・

const ptntbl as byte[15] = ($00,$18,$3C,$7E,$FF,$E7,$C3,$81,$00,$00,$00,$00,$00,$00,$00)
const ptnctl as byte[15] = (1,2,3,4,5,6,7,0,0,0,0,0,0,0,0)
const ptntim as byte[15] = (2,1,0,0,0,0,1,2,0,0,0,0,0,0,0)

こんな感じでパターンの情報をもたせます。
ptntblの変数が実際のパターンを管理します。
上記の場合こんな感じで点灯します。
○○○○○○○○ $00 0番目
○○○●●○○○ $18 1番目
○○●●●●○○ $3C 2番目
○●●●●●●○ $7E 3番目
●●●●●●●● $FF 4番目
●●●○○●●● $E7 5番目
●●○○○○●● $C3 6番目
●○○○○○○● $81 7番目
以下繰り返し
データは16進でセットしています。

ptnctlが次のパターンを示しています。
1,2,3,4,5,6,7,0と順に7番目までセットすると次は0番目に戻りぐるぐる繰り返すように設定しています。

ptntimが時間(回数)です。設定された数値+1回セットします。
これを考慮して説明すると
○○○○○○○○ $00 0番目 2
○○○○○○○○ $00 0番目
○○○○○○○○ $00 0番目
○○○●●○○○ $18 1番目 1
○○○●●○○○ $18 1番目
○○●●●●○○ $3C 2番目 0
○●●●●●●○ $7E 3番目 0
●●●●●●●● $FF 4番目 0
●●●○○●●● $E7 5番目 0
●●○○○○●● $C3 6番目 1
●●○○○○●● $C3 6番目 1
●○○○○○○● $81 7番目 2
●○○○○○○● $81 7番目 2
●○○○○○○● $81 7番目 2
こんな感じになります。

メインの処理です、あくまでも参考です。
main:
init_rtn
while true
if counter > speed then ' if counter is speed, then
led = ptntbl[ptnstep]
inc(ptncnt)
if ptncnt>ptntim[ptnstep] then
ptnstep=ptnctl[ptnstep]
ptncnt=0
end if
counter = 0
end if
sw_chk
PORTB =led
wend
end.

2008-02-26

流れるウインカー基板 確定  

基板は確定でプログラムを作成中です。

一番ベースとなるスピードコントロール処理が出来ました。
次はパターンテーブルからセットする処理を作る予定です。
今は点滅のみです。

2008-02-16

流れるウインカー基板

流れるウインカー基板出来ました。
PICマイコンのプログラムはこれからです。

全部半田で基板のパターンを作ったのでちょっと大変でした。

動作確認用のLED基板も作成して準備完了です、プログラム作成頑張ります。

2008-01-26

流れるウインカー バイク編

本拠地普通車のウインカーを流すの製作記事をのせていましたが、せいさんと力を合わせて今度はバイクのウインカーを流してみたいと思っています。

普通車のウインカーを流すでは、ロジックIC(シフトレジスタ)を使いましたが、自由なパターンでできるようにPICマイコンで制御を考えています。

制御系は自分が担当で実装系はせいさん担当になるのではと思います。

PICの開発はmikroBASICを使う予定ですが、思うようにならないときはアセンブラで切り替える予定です。

いままで色々やりかけましたが、実装系が面倒で挫折していましたが、今回は力を合わせてできるのでいいものができるのではと楽しみにしています。

2008-01-17

VBAUSBIO.DLLのベータ版(Ver0.51) USB-An命令修正 

VBAUSBIO.DLLにUSB-An命令を追加したベータ版を作成中です。
アナログ入力で255までの値しか取り込めないBUGがあり対応させました。
ダウンロードは以下のアドレスです。
http://bake-san.com/download/vbausbio/beta/vbausbio_v051.lzh

参考までに追加されたUSB-An命令の簡単な説明です

【新機能】
USBで電子制御(Km2Net様著者)のサンプルソースで使われている
USB-An用の関数と互換命令を追加しました。

・openUsbIo
関数 :USB-IOオープン
概要 :接続中のUSB-IOを全てオープン
戻り値:発見したUSB-IO数 存在しない場合は 0

・closeUsbIo
関数 :USB-IOクローズ
概要 :オープン中のハンドルクローズ
戻り値:なし

・outputUsbIo
関数 :USB-IO 出力
引数 :int iUsbioNo オープンしたUsbIo 0~
  :int iPort 出力ポート 0 or 1
:int iData 出力データ
概要 :USB-IO の指定ポートを出力
戻り値:0 出力成功 その他エラー

・inputUsbIo
関数 :USB-IO リード
引数 :int iUsbioNo オープンしたUsbIo 0~
:int iPort 入力ポート 0 or 1
概要 :USB-IOの指定ポートを読取
戻り値:0 以上 入力値 0 未満 エラー

・setUsbAnChannel
関数 :USB-An チャンネルセット
引数 :int iUsbioNo オープンしたUsbIo 0~
:int iCh チャンネル
: 8: 8Bit変換 4Ch 2DIO
: 10:10Bit変換 4Ch DIOなし
概要 :USB-Anの読み取りチャンネル設定
戻り値:0 設定成功 その他エラー

・setUsbAnMode
関数 :USB-An モードセット
引数 :int iUsbioNo オープンしたUsbIo 0~
:int iAnModeParam
: 8: 8Bit変換 4Ch 2DIO
: 10:10Bit変換 4Ch DIOなし
概要 :USB-Anの読み取りモードを設定
戻り値:0 設定成功 その他エラー

・inputUsbAn
関数 :USB-An 入力
引数 :int iUsbioNo オープンしたUsbIo 0~
:int iCh 読み込みチャンネル
概要 :指定チャンネルのアナログ値読み取り
戻り値:0 以上 入力値 0 未満 エラー

・outputUsbAnD
関数 :USB-An デジタル出力
引数 :int iUsbioNo オープンしたUsbIo 0~
:int iData 出力データ
概要 :USB-An 出力
戻り値:0 以上 入力値 0 未満 エラー

・inputUsbAnD
関数 :USB-An デジタル入力
引数 :int iUsbioNo オープンしたUsbIo 0~
概要 :USB-An デジタル入力
戻り値:0 以上 入力値 0 未満 エラー

2007-12-25

VBAUSBIO.DLLのベータ版(Ver0.5) USB-An命令追加 

VBAUSBIO.DLLにUSB-An用の命令を「USBで電子制御」の本のサンプルを参考にして追加しているところです。
やっと、動かせるレベルまでできました、引続きテスト中です。

Dim ret As Long
Dim iVolts As Long
Dim sDsipAD As String

ret = openUsbIo
If ret = 0 Then
MsgBox "USB-IOが見つかりません"
Exit Sub
End If

ret = setUsbAnMode(0, 10)
ret = inputUsbAn(0, 0)
iVolts = ret * 5000 / 1023
sDsipAD = "[電圧:" + Str(iVolts) + "] "
Me.lbl1.Caption = sDsipAD

closeUsbIo

こんな感じでアナログ入力が出来ます。
もちろん今までの命令もつかえます。

開発中のベータ版のダウンロード先は下記のとおりです。
http://bake-san.com/download/vbausbio/beta/vbausbio_v050.lzh

2007-12-23

VBAUSBIO.DLLをバージョンアップしました。 

入力時の不具合(不定期、及び定期的に入力値が0になる)を対応しました。
新命令も追加しています。
・uio_getvid n
 n…番号(0~uio_getdevsで得た値) 繋がれている指定するUSB-IOのvidが戻り値に帰ります.
・uio_getpid n
 n…番号(0~uio_getdevsで得た値) 繋がれている指定するのUSB-IOのpidがstatに帰ります.
・uio_selid vid,pid
 vid…ベンダーID pid…プロダクトID 複数のUSB-IOが繋がれている場合にvid,pidで指定します.

以上の3命令です。

ダウンロードは下記のアドレスです。
http://bake-san.com/download/vbausbio/v040/vbausbio_v040.lzh

引続きバージョンアップを考えています、次はKm2Net様のUSB-An用の命令を追加予定です。
これにより、USB-Anを簡単に使えるようになります。(予定)
命令は「USBで電子制御」で使われている関数に合わせる予定です。
流用がしやすくなるのではと思っています。
こちらのベータバージョンは下記のアドレスからダウンロードできます。
http://bake-san.com/download/vbausbio/beta/vbausbio_v050.lzh
残念ながらまだまともに動いていません。

また、ダウンロードがしやすいように http://bake-san.com/download/ 以下のディレクトリーは表示されるようにサーバーの設定をしました。
ダウンロード可能なファイルは閲覧できるようになりました。
今までUPしたファイルも少しずつ整理をして行く予定です。

2007-12-22

VBAUSBIO.DLLのベータ版3 

今回のベータ版の大きな目的はDLLの不具合を対応することでしたが、
やっと目的が達成できそうです。

不具合の内容
uio_inp命令で入力するが時々値が0になることがある。

原因
USB1.1とUSB2.0の動作の違い
XPと2000の動作の違い

症状
 正式バージョンの場合
  USB2.0で不具合(値が時々0になる)がでる。
 ベータ版2の場合
  USB2.0でOSが2000の時不具合がでる。
  Xpは正常動作するようになった(しかし遅い)
 ベータ版3の場合
  不具合なし(であるといいなぁ)
  正式バージョンで症状が出ているテストプログラムでテスト中、今の所問題なし。

ベータ版3は前回と同様の場所からダウンロードできます。
http://bake-san.com/download/vbausbio/beta/vbausbio_beta.lzh

なんか入力が上手く行かないと心当たりがある人は試して見るといいかも。

近いうちに正式バージョンアップします。

ちなみに現在のバージョン(Ver 0.3)は下記の場所からダウンロードできます。
http://bake-san.com/download/vbausbio/v030/vbausbio.lzh

2007-12-20

VBAUSBIO.DLLのベータ版2 

VBAUSBIO.DLLのベータ版を修正して見ました。
今回の症状を自分の環境で再現できていないのですが、あやしいところを修正して見ました。
同様にテストをお願いできればと思います。

最新版のダウンロードは今までと同じところから出来ます。
http://bake-san.com/download/vbausbio/beta/vbausbio_beta.lzh

2007-12-19

重要:VBAUSBIO.DLLベータ版に早速BUG

早速、報告をいただきました、報告をしていただいた方に感謝します。
入力命令で256回目に必ず、値がおかしくなるようです。
256回目ということはバイト変数の値をインクリメントしながら使っているところがあやしいですね。

とりあえずは今までのDllを使って2度読みで正常に読み込みができると思います。
対応は少し時間をいただければと思います。

2007-12-18

VBAUSBIO.DLLのベータ版公開 

汎用USB-IOをVBAで簡単に制御するためのDllのバージョンアップを予定しています。
現在、作成中のベータ版を公開しますのでテストをお願いできればと思っています。

変更点は大きく2点あります。
1.USB2.0に接続時に入力値が時々0になる不具合を対応(USB1.1等では症状がでません)
2.複数接続時のプロダクトID,ベンダーIDの取得及び、プロダクトID,ベンダーIDによる選択命令追加

使い方はダウンロードした圧縮ファイルの中のテキストを参照してください。
不明な点があればメールや掲示板でご連絡ください。

ダウンロードは下記のアドレスです。
http://bake-san.com/download/vbausbio/beta/vbausbio_beta.lzh

2007-11-23

FC8をVMWareでセットアップする 

最近仕事が本当に忙しくてブログも当分書き込みをしていません、すみません。


今は時間を見つけてFC8を入れてみようとがんばっているところです。
FC7では何も問題なくVMwareで動作したのですが、FC8は簡単に行きそうにないですね。
サウンドはうまく認識できなかった、現在はサウンドを殺して使用しています。
何とかインストールができたもののまだ不安定な状態です。
汎用USB-IOの動作テストまでは道のりが遠い感じがします。


汎用USB-IOとは関係ないですが、自動車の自動ミラー格納をする回路を試しているところです。
簡単な回路でできるのでうまく出来ればこちらもまた報告をいたします。

2007-09-28

↑↑ブログの内容が検索できます  


左上の「ブログ検索」からバケさんの電子工作のブログの内容が検索ができます。

たとえば「USB-IO」で検索すると過去のUSB-IOに関する書き込みが一覧で表示されます。

テスト運用のようですが、活用してみてください。

2007-09-20

「USBで電子制御」の書評を書きました。   


汎用USB-IOを販売されているKm2Netさんが「USBで電子制御」という本を出されています。

初心者にもわかり易く、ノウハウの詰まった本になっています。

アマゾンに書評を書きましたので参考にしてみてください。

おすすめの本です。


ここから見れます。↓

2007-09-18

FC7でRoot権限が無くても汎用USB-IOの動作OK!! 

現在最新のFC7での汎用USB-IOの動作確認OKの報告と
掲示板にご報告をいただいたkosugettiさんの方法でRoot権限が無くても作成したプログラムを正常動作させる方法の動作確認OKの2点を合わせてご報告をいたします。

まず、FC7での汎用USB-IOの動作確認

開発ツールのインストールだけではlibusb(開発用)がインストールされないのでyumで追加インストールします。(suでルート権限を与えてインストールします)

# yum install libusb libusb-devel

このブログで書き込みしたテストプログラムソースをusb-testフォルダーにダウンロードし、コンパイルをします。

$ mkdir usb-test
$ cd usb-test
$ wget http://bake-san.com/bdenshi/musbiobase.h
$ wget http://bake-san.com/bdenshi/usbio_test.c

必要に応じてmusbiobase.hのベンダーID、プロダクトIDを変更してください。
先頭に#defineで設定しているUSB_VENDORとUSB_PRODUCTを持っている汎用USB-IOにあわせます。

コンパイルします。

$ cc -o usbio_test usbio_test.c -I/usr/local/include/ -L/usr/local/lib/ -lusb

-I/usr/local/include/ -L/usr/local/lib/はデフォルト値なので省略しても大丈夫ですが、
念のため設定をしています。

ここでsuでRoot権限を与えてプログラムを実行します。

# ./usbio_test

以上でプログラムで記述した通りに各ポートがON/OFFされると思います。


次は掲示板にご報告をいただいたkosugettiさんの方法で
Root権限が無くても作成したプログラムを正常動作させる方法です。

「/etc/udev/rules.d/55-myrules.rules」というファイルを新たに作ればRoot権限が無くても作成したプログラムを正常動作させることが出来ます。


55-myrules.rulesの内容は下記のとおりです。

# For TECHNO KIT
SUBSYSTEM=="usb_device",SYSFS{idVendor}=="12ed",SYSFS{idProduct}=="1003",MODE="0666"
# For Km2Net
SUBSYSTEM=="usb_device",SYSFS{idVendor}=="1352",SYSFS{idProduct}=="0100",MODE="0666"
SUBSYSTEM=="usb_device",SYSFS{idVendor}=="1352",SYSFS{idProduct}=="0101",MODE="0666"

現在購入可能な汎用USB-IOをすべて記述していますが、持っている汎用USB-IOの記述だけでも大丈夫です。

注意事項が1点あります、FC7が正常に起動してから汎用USB-IOをつなげないと今回の設定が有効になりません。
FC7を起動時に汎用USB-IOをつないでいて正常に動作しない時には一度汎用USB-IOを抜いて差し直せば今回の設定が有効になり、正常に動作できるようになります。
FC7が正常に起動してから汎用USB-IOをつなげないと今回の設定が有効にならない件については引続き調査中です。


情報をいただいたkosugettiさんに感謝いたします。

2007-09-08

汎用USB-IO講座、12個までのLEDをON/OFFする 



汎用USB-IOはPort0とPort1があり、Port1は比較的電流を多く流せます。
Port1をつかえば4つまでのLEDをON/OFFできます。
それ以上のLEDをON/OFFさせるためにはPort0を使う必要があります。
Port0は流せる電流が少ないのでトランジスタなどを使って多くの電流をON/OFFできるようにします。
その回路が図にあるものです。
一気に8個分書いたので複雑に見えますが同じ物が8つあり、比較的簡単な回路だと思います。



回路図通りにブレッドボードを使って回路を組んで見ました。
汎用USB-IOとブレッドボードを接続するにはピン配列変換ケーブルが便利です。組立パソコンのパーツを扱っている店にはあると思います。
自分が持っているブレッドボードではスペース上8個までですが同じ回路をもう4つ作成してPort1も使うと12個LEDをON/OFFできます。

実際にvbausbio.dllを使ってOn/Offさせるプログラムです。

[VB,AB,VBA]

uio_out(0,&hFF,0)'All Off

uio_out(0,&hFE,0)'Port0 0BitのみON
uio_out(0,&hFD,0)'Port0 1BitのみON
uio_out(0,&hFB,0)'Port0 2BitのみON
uio_out(0,&hF7,0)'Port0 3BitのみON
uio_out(0,&hEF,0)'Port0 4BitのみON
uio_out(0,&hDF,0)'Port0 5BitのみON
uio_out(0,&hBF,0)'Port0 6BitのみON
uio_out(0,&h7F,0)'Port0 7BitのみON

uio_out(0,&h0,0)'All ON


uio_out(0,&hAA,0)'1個飛ばしでON


写真は1個飛ばしで出力している時のものです。

次回はもう少し詳しく(ブレッドボードのレイアウト等)説明したいと思います。

2007-08-14

汎用USB-IO講座、4つのLEDをON/OFFする 

汎用USB-IOはPort0とPort1があり、Port1は比較的電流を多く流せます。
赤色LEDなどは10mA程度で光るので何とか制御できます。
光らせたい端子に0を出力するとVccから指定の端子に流れてLEDがつきます。

実際にvbausbio.dllを使ってOn/Offさせるプログラムです。

[VB,AB,VBA]

uio_out(1,&hF,0)'All Off

uio_out(1,&hE,0)'Port1 0BitのみON
uio_out(1,&hD,0)'Port1 1BitのみON
uio_out(1,&hB,0)'Port1 2BitのみON
uio_out(1,&h7,0)'Port1 3BitのみON

「プログラム解説」

uio_outの第1パラメータはPortNoです。
今回はPort1を使用するので1をセットします。

uio_outの第2パラメータは出力データです。
2進数に置き換えてON/OFFをセットしてそれを10進数の値にしてパラメータを与えます。
また、今回の回路は希望のBitを0にするとLEDが点灯します。
全てOFFは2進数で1111 これを16進数にするとF &hをつけると16進数を10進数に変換するのでそれを与えます。
Port1 0BitのみONは2進数で1110 これを16進数にするとE &hEを与えます。
あと同様に
1101、16進でD
1011、16進でB
0111、16進で7
もし0Bitと1Bitをつけたい場合は 1100となり、16進でCになります。

第3パラメータは0で使用してください、高度な制御をする時に使います。(今回は説明を省きます)

最後に今回はPort0を使いませんでした、Port0は電流があまり流せないのでLEDでも上手くつかないのでもし使用する場合電流が流せるようにトランジスタなどで回路を考える必要があります。
次回に説明予定です。

 

2007-06-26

ブレッドボードとアルミ板 



ICをブレッドボードで使う場合、動作不安定になることが良くあります。
コンデンサーをつけても改善されず、困っていました。
WEBを検索してみると、ブレッドボードの下にアルミ板を置くといいようです。
念のため、アースに接続して使っています。
簡単な回路では上手く動いています、今まで上手く動かなかった回路もチャレンジしてみたいと思っています。

上の写真はキャパシタとソーラーを使ってセキュリティダミーのランプを作成してテストをしているところです。
参考までに回路は以下の通り。


Posted by Picasa

2007-06-12

VB6.0でヘルプが表示できません 

VB2005をインストールしてその後、VB6.0をインストールすると「ヘルプが表示できません」とメッセージが出てヘルプが出なくなりました。
逆は大丈夫のようです、おそらくインストールする順番でなるのではと思っています。
これも不確かですが、VB2005とVB6.0を両方インストールしているマシンで出たり出なかったりしています。
VB2005とVB6.0を両方ともアンインストールして、インストールする順番を変えてみたり色々しましたが一度症状が出るとインストールしなおしてもだめなようです。
今回の症状は下記のリンクの内容を対処して上手く出るようになりました。
http://support.microsoft.com/default.aspx?scid=kb;ja;250334

概要は以下の通り。
原因
 vshelp.dll ファイルがオペレーティング システムのレジストリに正しく登録されていません。
先頭へ戻る
解決方法
 regsvr32.exe を使用して vshelp.dll をレジストリに登録しなおします。
 例) regsvr32 "C:\Program Files\Common Files\Microsoft Shared\VS98\VSHELP.DLL"

結構困ったのでブログに記録しておきました。

2007-06-08

ベクターからダウンロード可能(vbausbio.dll) 

VBA用 USB-IOをベクターからダウンロードできるようにしました。

これでダウンロードしやすくなるのではと思います。
また今後、バージョンアップも考えていますので、バージョンアップ通知を設定しておくといいかもね。

<ライブラリ作品番号:PS431109>
VBA用 USB-IOコントロールDll 0.3
vbausbio.lzh (vbausbio.lzh)
07/06/01 5282
概要: VB、AB、Excelで簡単に汎用USB-IOをコントロール
説明ページ: http://www.vector.co.jp/soft/win95/prog/se431109.html

P.S.
このvbausbio.dllは   (Kiffyさん情報ありがとうございます。)
Delphi6でも動作するようです、Delphi用の定義部を準備中です。
VB.Net(VB2005)、C#、の定義部も準備の予定です。