BasicStamp(U)が好きだ

このコーナーは本当に有意義に観てくれる人がいるのか疑問です。もし1通でもおメールを頂けたらもっとちゃんと作ろうと(結線図等)思います。宜しくお願いします。
自分は学校等で電子及びコンピュータの専門教育を受けたことがありません。ですからこれから書くことは知識あるあなた様から見れば「なにすっとんきょーなこと書いてんだ」と、感じられることが多々あるものと思います。その際はどうぞ慈悲の心で寛容なるご容赦と、是非その部分を教えてください。

LCD16桁*2行表示

概要:BasicStampUでLCDを使ってみました。

使用したLCD:M1632−0A セイコー電子工業株式会社(勿論、秋月電子で購入)

結線:以下、「Pin No.」−「LCDの端子記号」−「LCDの端子No.」の順番で記します。

0−DB0−8
1−DB1−7
2−DB2−6
3−DB3−5
4−DB4−4
5−DB5−3
6−DB6−2
7−DB7−1
8− E−9
9− RS−11
GND−R/W−10
GND−Vss−13
+5V−Vdd−14
+5V−「10KΩ半固定抵抗」−Vlc−12:10KΩ半固定抵抗で液晶のコントラストを調整します

サンプルプログラム:画面に0.1秒おきに「ABC…」と表示するプログラムを作ってみました。

'Yoshi LCD controler

'Shoki shoki
E CON 8
RS CON 9
CHAR VAR BYTE
KETA VAR BYTE
 
'LCD Shoki
OUTS=0
DIRS = %0000001111111111 'SET TO IN/OUT PINS
PAUSE 200
OUTL=%00110000 'set to 8bit operation
PULSOUT E,1
PAUSE 10
PULSOUT E,1
PAUSE 10
PULSOUT E,1
PAUSE 10
OUTL=%00111000 'set to function
PULSOUT E,1
PULSOUT E,1
OUTL=%00001110 'set to disp/cursor
PULSOUT E,1
OUTL=%00000110 'set to cursor shift
PULSOUT E,1
HIGH RS

MAIN:
PAUSE 100
CHAR = CHAR MIN 32
KETA = CHAR // 32
GOSUB WR_LCD
CHAR = CHAR + 1
IF KETA = 16 THEN RETDOWN
IF KETA = 0 THEN CLEAR
GOTO MAIN

WR_LCD: 'LCD WRITER
OUTL=CHAR
PULSOUT E,1
RETURN
 
RETDOWN: 'CHANGE COLUM
LOW RS
OUTL = %11000000
PULSOUT E,1
HIGH RS
GOTO MAIN

CLEAR: 'CLS DISP
PAUSE 1000
LOW RS
OUTL = %00000001
PULSOUT E,1
HIGH RS
GOTO MAIN

LCD16桁*2行表示あとがき

最初はこれをBS1でせっせと作っていたのですが、ファンクションセットの時,4ビット動作に設定するとLCDの上の行しか表示されませんでした。

 

16キー入力

概要:BasicStampUで16キー入力デバイスを作ってみました。

使用した16キー:下の写真の物。メーカー不明(秋葉原のガード下2階の一番大通り寄りの店で購入)



結線:BSUのPin No.0-3を横4段下から0-3、Pin No.4-7を縦4列左から接続します。各4-7ピンから10kΩの抵抗をGNDに接続します。

キー入力プログラム:
DIRL = %00001111
Colom var byte
Row var byte
key var byte
FOR Row = 4 TO 7
INPUT Row
NEXT
key16:
Colom = 0
Row = 0
KEY16_SCAN:
HIGH Colom
Row = NCD(INB)
IF Row <> 0 THEN PUSHED
LOW Colom
Colom = Colom + 1
IF Colom < 4 THEN KEY16_SCAN
GOTO KEY16
PUSHED:
KEY = Colom * 4 + Row - 1
DEBUG DEC(Colom),TAB,DEC(Row),TAB,DEC(KEY),CR
LOW Colom
PAUSE 500
GOTO KEY16

メーターパルス入力

概要:パルス出力する流量メーターから信号を拾って総流量積算、バルブ制御をします。

使用したメーター:ND20愛知時計電機 管材屋で購入

接続: 結線図


オペレーション:
スタートボタンを押すとPin12がHighになって、リレー等を駆動し配管の弁を開放します。
被測量体(水)が流れ出しメーターがパルスを発します。
積算値が設定値になると、Pin12がLowになって弁を閉鎖します。
測量中にキャンセルボタンを押すとPin12がLowになって弁を閉鎖します。
 このメーターは 25cc/パルス です。

プログラム

output 12:valve_control var out12
input 13:blow_start var in13
input 14:blow_cancel var in14
input 15:input_meter_pulse var in15
setteichi var word
so_pulse var word
gen_pulse var word
zen_pulse var bit
setteichi = 250

Main:
if blow_start = 1 then meter_count_start
goto main

meter_count_start:
gen_pulse = 0
zen_pulse = 0
so_pulse = setteichi / 25
high 12 'valve open
meter_count:
if blow_cancel = 1 then meter_count_end 'blow cancel
if input_meter_pulse > zen_pulse then pulse_on 'pulse.off-on
zen_pulse = input_meter_pulse 'record scaned pulse
goto meter_count:

pulse_on:
zen_pulse = 1 'record scaned pulse
gen_pulse = gen_pulse + 1 'count up
if gen_pulse = so_pulse then meter_count_end
goto meter_count:

meter_count_end:
low 12'Valve close
goto main:

配管注意:
このメーターは逆流してもパルスを発しますので配管には逆止弁を取付けてください。

後書き:
このメーターの構造は簡単で本体に磁気センサー、羽根車に磁石が付いているだけの物です。ですから信号の形は正確にはパルスとは呼べません。信号がオフからオンに変わる時だけ加算させるのが面倒でした。