So-net無料ブログ作成

S88 Detectorを作る 追加頒布分到着しました [自動運転]

 Nucky様のワンコインデコーダ3が頒布開始とのことで、どれがいいかなあとウインドウショッピングしていたら、悩んでいる間に売り切れてしまいました。また、追加されるとのことで、どれにしようかなあともう少し悩もうと思っております。(趣味の買い物は、買うまでの悩んでいるときが楽しいので)
 ところで、11月19日(木)の朝に注文したS88 Control基板とS88 Detector基板が本日届きました。今回も最短っぽいDHLシンセンでの送付です。順次、振り込みのご案内をいたします。また、順次、送付いたしますので、よろしくお願いいたします。

S88 Detectorで自動運転 その2(N-PX280) [自動運転]

 Yaasan様の自動運転(スクリプト)のWikiを見ていたら、何例か出ているので、それ以外のをやろうと考えた。
 TomixのTCS自動運転ユニットN<5563>のページで、なんか、基本的で面白そうな運転がないか探したら、あった。モード4、ダブルクロスポイント運転モード。
 トミックスのN-PX280は、以前買って、とりあえずDSDecR1で動かせた時点で、おもちゃ箱にしまい込んでおいた。理由は簡単で、Katoの電車やMicroAceのSLとか脱線するから。おまけに鉄コレもクロス通過中で集電不良で止まったりするし・・・。私の中で、かっこいいが使えないポイントということにしておいた。
 ただ、DSDecR3にKeepAliveコンデンサ(100uF)をつけると、集電不良を無視して、それなりに動くこともわかっているので(EM13だと止まることも多い)、一日かけてやってみた。
 以下が最終的な実験写真(汚い)。PCから自動運転のコントロールを行い、DSMaiinR4で全体の制御を行う。S88基板は、3.5mmミニプラグコードが1mしかないので、手前と奥の線で分けるため、2枚をデイジーチェーン接続している。センサは1,2,17,18を使用。TomixのN-PX280の給電状態はよくわからないので、4本の支線すべてにDCフィーダーを配線し、ポイントコントロールのため、DSDecR1を2つ使用。スケッチは、Yaasan様の物にGreen/RedでLEDが点いたり、消えたりするよう細工したものを使用。
 re_DSC00322.jpg
 クロスポイントとセンサの拡大写真は以下。
re_DSC00323.jpg
 いろいろ引っかかりまくって、朝始めたのに、出来上がったのは夕方・・・。こんなパターンばっか。
 まず、はじめの失敗。デコーダ開発ボード+琴電(アナログモータ)でやったのだが、クロスポイント中央辺りで集電不良で止まる。一生懸命、電車もポイントも掃除したが、余り良化せず、断念。
 で、昭和の鉄道模型を作る1巻のおまけ電車をDCC化(+KeepAliveコンデンサ100uF)したものでやることにした。スケッチもVVVFのK97にして、CV3,CV4の加速率、減速率は10とかですぐに止まるように設定。
 次に、二つ目の失敗。因縁のN-PX280制御のため、DSDecR1を二つ出して、KeepAliveコンデンサを一つは470uFで、もう一つは1000uFにつないだ。コンデンサの充電時の制限抵抗は2W?、47Ω。そして、DSMainR4の12V出力を入れても、動かない!。TB6643KQの過電流検出機能に引っかかってるとのこと。DSDecR1はレール経由で給電したら起動した。昭和おまけ電車も動かない!  たぶん、コンデンサの突入電流のせいでDSMainR4のポリスイッチが働いているんじゃないかなあと思って、ポイント用コンデンサを外してやったが、やっぱり動かない。  よくわからんので、全部外してDSDecR1一つにしたら(ポイント用コンデンサは外した状態)12V Onで動く。二つつなぐと動かない・・・。  昔の実験を見たら、DCC/MM2シールドでやっている。ここら辺の違いはポリスイッチ(3A)かなあと思い、まずは12V On(RUN/STOPボタン)して、その後、制限抵抗をつけたDSDecR1を一つずつそーっとつなぐと、ちゃんと電源Onできた。  途中で、電源容量かなあと思って、12V 1Aと4AのACアダプタを試してみたが、症状は同じで最終的には1Aのアダプタで普通に動いている。
 以下が、ポイント配線周りの写真。(実験だけで終わらせる予定なので、ワニ口クリップで。あと、470uF側のー側が抜けているが、実験中はちゃんとつながっていました)
re_DSC00324.jpg
 初めて4つのセンサを使ったのだが、センサ調整用のボリュームの位置は200KΩ中の左 目いっぱいとか中心とかなので、固定抵抗の200kΩか100kΩでいいんじゃないのかとふと思ってしまった・・・。そうしたら、そこの部分の価格は300円(=ボリューム50円*6)→6円(=固定抵抗1円*6)だが・・・。
 あと、気になったのは、S88を二つもつなぐと5Vを結構使うせいなのか、DSMainR4のIC3(LM7805)が結構熱くなる。触れる程度のすごい熱い程度なので、50℃~55℃かなあと思う。
 このときの、センサ部のスクリプトは、以下。4つセンサがあるので、4つあるが、中身としては、ポイントの切り替え二つ(ダブルクロスポイントのため)と電車の方向転換の組み合わせである。
 センサ位置は、全体写真の右下がセンサ1、左下がセンサ2、右上がセンサ18、左上がセンサ17で、開始トリガはすべて[進入](たぶん在線でも同じ動き)。昭和おまけ電車の番号は3。右方向が正方向。

[センサ1]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,0,0
WAIT,10,,0
ACCESSORY,3,0,0
DIRECTION,0,2,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

[センサ2]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,1,0
WAIT,10,,0
ACCESSORY,3,1,0
DIRECTION,0,1,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

[センサ17]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,0,0
WAIT,10,,0
ACCESSORY,3,0,0
DIRECTION,0,2,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

[センサ18]

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,10,,0
ACCESSORY,1,1,0
WAIT,10,,0
ACCESSORY,3,1,0
DIRECTION,0,1,0
WAIT,10,,0
SPEED,0,200,0
WAIT,50,,0
EXIT,,,0

 そして、以下が、完成した時の動画。なんとなく、2パターン取っておいた。
その1(正面から)


その2(いろいろな制御機器の光などの確認、ポイント、S88のセンサ状態)


 
 

S88 Detectorで自動運転 その1 [自動運転]

 前回、単純な往復運転をしたのだが、いくつか問題点があった。
(1)DesktopStationでセンサを踏んでイベントを開始してから、イベント中にもう一度センサを踏むと、最初からイベントが開始されてしまい、動きが変になる。
 具体的には、センサを踏んだら、まず電車を止めて、方向転換して、走り出す、イベントがもう一回起きないようにWAITを入れておく。とやったのだが、センサを二回踏むため、そこで再イベントが発生し、はじめから(つまりまた止まる!)となってしまっていた。
(2)S88の検出間隔は1秒~3秒で選べるが、もっと頻繁にイベントを見てほしい。(1秒間隔だと列車通過後のイベント開始が結構ばらつくため(最大1秒))
(3)VVVFスケッチは音を滑らかにするため、速度にLPF計算(中身は60回分の速度バッファ)を持っており、すぐに止まらない。使いづらい・・・。
(4)S88 Control基板のRUN LEDが意味もなくピカピカ光っててイラつく(たぶん100ms周期)。

 一つ、一つ、解決したので記す。
(1)再イベント問題
 Yaasan様に確認したら、イベントの最後にExitを入れないと、再イベントになります。とのこと。
以前のスクリプトは

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,20,,0
DIRECTION,0,2,0
SPEED,0,250,20
WAIT,50,,0

で、Exitを入れていない・・・。
で、直して、

DESKTOPSTATION,SCRIPT,2013
SPEED,0,0,0
WAIT,20,,0
DIRECTION,0,1,0
SPEED,0,250,20
WAIT,50,,0
EXIT,,,0

としたら、ちゃんと、WAIT後まで、再イベントが開始されなくなった。
(上記スクリプトはDESKTOPSTATION,からEXIT,,,0を選んで、EVスクリプトの画面で貼り付けするとそのまま、貼り付けられる)
スクリプトの説明は、Yaasan様のWikiにあるのだが、やはり、読んでからやらないとだめね。(日本語のページありませんでしたっけ?)
また、最新DesktopStation V0.94 (Nov 19, 2015)では、EVスクリプトタブの実行状態タブの実行ログ内でExit無しで再イベントが始まった警告(ForceExit)が出るようになり、わかりやすい。

(2)S88の取り込み周期
 Yaasan様の最新DesktopStation V0.94 (Nov 19, 2015)で0.2秒間隔で取ってこれるようになっている。これで、イベント開始のばらつきが減ったので、停止位置が安定するようになった。

(3)VVVFスケッチはいわゆる加速率、減速率を緩慢にして、その状態でパラメータを固定のため、きびきびした運転ができない。この理由はデコーダー内部でモーター指示値を補間してやって、モーター音階を連続にするためである。DCCから一秒に数回モーター制御デコーダに指令が行くが、これを正直にVVVF音化すると、悲しいことに、全部ドレミファインバーター化する。(おまけにちょっとカッコ悪い音になる)。今回、この部分を普通のデコーダーのように加速率、減速率を変更できるようにした。だから、これで、即応にすると、ドレミファインバーター(カッコ悪い)になる。
スケッチはこちら(K97)
CV3 加速率 0:即応、~255:緩慢
CV4 減速率 0:即応、~255:緩慢
(0~20あたりが実用域かなあと思う。電車、VVVFの選びによって違いそうだが)
 最初、新しくCV値を作ろうとしてたが、Yaasan様から、それはCV3,4だと指摘され気づいた。(そんな基本的なパラメータがないわけないですよね)
 あとは、DSmainR5からCV読み値機能が付くそうで、それ用に、notifyCVAck部分を少々書き直した。(CV読み込み対応のコントローラを持っていないのでこれで合っているかどうかはわからない)
 なんか、Win10のPCを再インストールして、ArduinoのIDEを1.6.6にしたら、PWMDacSynthがWarningを出すようになった。まあ、ちゃんと動いているしいいか。

(4)S88 Control基板のピカピカLEDがイラつく
 6個のセンサーの在線フラグが一つでも立っていると、RUN_LEDが付くようにした。これで、最初のセッティング時にシリアルコネクタをつけてPCで見なくても、センサとボリュームだけでどうにかなるはず?
スケッチは、こちら(K4)
 




S88 Detectorを作る 頒布のお知らせ(追記5) [自動運転]

<追記5>
 ご希望のかたがいらっしゃいましたら、こちらのページでご確認ください。
 現状、在庫ありませんが、ある程度枚数がまとまりましたら、追加頒布を検討いたします。

S88 Control基板 1枚 600円
S88 Detector基板 12枚セット 600円
送料 200円

S88 Detectorを作る その4(とりあえず完成) [自動運転]

 11月8日に基板の設計が出来た!ということで、夜中、Elecrowに注文した。前回、基板が4日程度で製造されたにもかかわらず、送料をケチった(多分SALとかいうやつ)ため、その後11日間、着かないなあとウジウジしていた思い出があるので、今回はDHL(shenzhen 4 business day?)と言う、見かけ一番早そうな送付にしてみた。ただし、高くなった。(基板2種で6000円ぐらい。趣味の立場で言うと円安嫌い。)
 結果、11月12日にシンセンから送付、11月14日の夕方に家(神奈川県)に到着という、注文後5~6日で来て、中国すごいと思った。DHLのトラッキングによると、11月13日の昼に輸送業者に引き渡しとなって、その後トラッキングできないという悪評通りだったが、次の日佐川急便の方が持ってきてくれた。
 今回は、もし、しくじっていたら嫌だったので、S88 Contorol基板を単体で、S88 Detector基板を面付けで10㎝*5㎝サイズで10枚ずつ頼んだ。10cm*10cmサイズにして、設計間違えていたら、立ち直れないような気がしたので。(値段はあまり変わらないような気もするのだが)
 そして、これが到着した基板の写真。S88 Detectorの方は8枚面付けを想定していたのだが、12枚面付けしてくれた。Elecrow太っ腹!
DSC00308-1.jpg
 左がS88 Detector基板で右がS88 Control基板。
 基板の接続には3.5mmジャックを使うのだが、基板の穴パターンが長穴になる。で、Elecrowへの長穴の頼み方が分からず、Yaasan様にお聞きしたら、DS MainR5で4pinの3.5㎜ジャックを使っていて、製作実績がある部品図をお分けいただいて、今回それをコピペして作った。ちゃんと長穴になっていた。Yaasan様ありがとうございます。
 で、次に、ATMEGA328P-PUのブートローダーをどうするか。今回ケチって秋月電子から生のATMEGA328(ブートローダー無し)を買っている。
 スマイルライター+デコーダー開発ボードを組み合わせて、生のATMEGA328にブートローダーを書き込めばよいのだが、今回は、以前、スマイラー様からいただいた、(幻の)DSDecR2b(スマイルデコーダー初版)の基板に余りがあったので、こちらを使った。スマイラー様ありがとうございます。
 DSC00309-1.jpg
 28PinのDIPソケットとセラロック(16MHz)だけつければ完成なので、それで、ブートローダー書き込みをした。
 DSC00310-1.jpg
 それで、あとは、何も考えずに、図面通りに、はんだ付けして、
DSC00311-1.jpg
S88 Control基板は完成。S88 RJ45のIn側は繋がないので、実装しなかった。Out側をDSMinR4につなぐ。(何か間違っていたらご指摘ください。何せ、S88の本物を持っていないものでよくわかっていません)
 次に、S88 Detector基板だが、TomixのS70(70㎜直線線路)に付ける予定で作ったら、あとで気づいたが、S72.5だった。まあ、2.5㎜の違いだし細かいことは気にしない。
 まずは線路の裏に基板を載せて位置決め。フィーダー線をつける真ん中にPC1(photo detector)が来るように基板位置を決める。
DSC00312-1.jpg
 マジックで削る場所だけ黒く塗って、
DSC00313-1.jpg
プラモデル用ニッパで切る。(最初リューターでやろうと思ったが、たぶんプラモデル用ニッパの方が楽と思われる)
DSC00314-1.jpg
 基板を線路の裏に両面テープでつけて、センサ用の穴を開ける。基板の穴は1.0㎜なので、ピンバイスは0.8㎜とした。センサはTPR-105だが、0.8㎜の穴でICの足が通った。
 そして、センサと3.5㎜ジャックを半田付けする。ここで、3.5mmジャックの足があると線路が斜めってしまうので、足のうち出てしまう部分は、はんだ付け前に切った。また、センサ側のはんだを盛りすぎると線路下より飛び出てしまうので、盛り具合に気を付ける必要がある。
 あと、センサ面は、当たり前だが真上を向くようにしてやらないと、感度が悪くなる。ある程度はボリュームで調整可能だが。
 できたものの写真が以下。
DSC00315-1.jpg
 3.5mmジャックは4端子版を使用しているが、使っているのは3線だけなので、Daisoの両側3.5㎜プラグ線が使用可能である。(Yaasan様のアイディア)
DSC00316-1.jpg

 一応、動作確認のため、単線の往復をさせてみた。VVVFスケッチは音を滑らかにするため、速度を0にしてもすぐに止まらないのだが、それでやると電車のターンでセンサをオーバーしてしまい、ターンで行き/帰りとセンサを二回踏んでしまい、DesktopStationのS88イベントが2回起きてしまい、いろいろと面倒である。今回は、センサ内で止めるために、センサを踏んだら方向転換とした。そうすればVVVFスケッチでも即時停止するため。


 次に、複数個接続の確認を行った。とりあえずできた。
DSC00317-1.jpg

 あと、2つ注意点があり、
(1)純正品のマニュアルによると、RJ45の1pinは5Vか12Vが選べるらしいが、今回の基板は5V駆動だけを考えて作っている。12Vを入れると、マイコン(耐圧5.5V)と、Photo ReflectorのLEDが飛ぶ。
(2)Arduinoのソフト書き込みのために6pin端子を付けているが、これはS88端子ではない。DSMainのS88端子に繋ぐと悲しいことが起きる可能性がある。

 作り方やスケッチについては、Wikiにまとめる予定。(Yaasan様からいただいた元の図面なども掲載予定)
 少々お待ちください。

 

S88 Detectorを作る その3 [DCC/MM2シールド]

 S88のボードが大体出来上がったような気がするので、Elecrowに頼もうと思う。
 今回の基板は、
<概要>
(1)電気図面はYaasan様からいただいたS88の回路図と、アートワークから改造し、
(2)Arduinoのスケッチはrudysmodelrailway様を流用しつつ、
(3)Detector部分の原理は拓啓ぽん様のをそのまま、
(4)ポート数はATMEGA328の制限から6ch
 という、張り合わせ(の部分のみ自分でやっている)のものになる。
<入出力仕様>
・ポート数:6ch(16ch占有、or 8ch占有)
 ATMEGA328のAnalog入力6ポートだけを使用するので、6chだが、16ch占有と8ch占有の2バージョンを制作予定、スケッチで分ける。(もちろん、外部回路を設ければ、chを増やすことは可能だがやっていない)
・接続
 DSMainR4とはLANコネクタ経由、フォトリフレクタとは3.5㎜ジャックで接続。
・基板サイズ
 S88基板は50mm*100mmサイズ。(100mm*100mm基板で2個取り)
 フォトリフレクタ基板は25mm*25mmサイズ。(100mm*100mm基板で16個取り?)
<コスト>
・S88基板
原価 1枚1500円ぐらい(部品代 約1200円 + 基板代 約300円)
 LANコネクタ、3.5㎜ジャック、入力調節用のボリュームなどがそれなりの値段のため。
(S88を6ピンのコネクタ、ボリュームを固定抵抗にすると、ここから500円ぐらい安くはなるが。)
また、ATMEGA328はブートローダ付きを買うか、プログラムを書き込む必要がある。(+αで結構高くつくかも)
・フォトリフレクタ基板
 原価 1枚 140円ぐらい(部品代 約100円 +基板代 約40円)
 もちろん、線路代は別で、加工をしないと線路にはつかない。

で、最終的なS88基板の回路図は、
PCDetectorK3.PNG
アートワークはこんな感じ。
基板イメージS88.png

フォトリフレクタ基板の回路図は、
DetectorBoard_sch.PNG
なお、CN2とPC2は未使用(貧乏性で何かのとき用に入れた)
アートワークは、以下。
PR_Detector.png


KATO デハ268を組み立てた [その他]

 S88ボードは作り中。大体、アートワークはできたが、それは別記事で紹介する。
 で、本題のデハ268だが、鉄道模型コンテストでほぼ衝動買いしてしまったようだが、頼んでいたことをすっかり忘れていた。荷物が来て思い出した。
 組み立てた。見た感じ、DCCフレンドリーじゃなさそう。(FL12を下から付けられそうな床下ではなかった。それ以上分解していないのでわからないが。) 車体は、実物保存時のペンキの光沢感があり、良い感じ。
 ヘッドライト点灯。とてもきれい。→組み立てミスってた!
DSC00305-1.jpg
 と思ったら、ちょっと組み立てミスっていたっぽい。もうちょっと、ボディーを下まで押せて、
ちゃんとすると、上だけ点く。快特でも快速でもいいじゃん様のBlog写真を見て初めて気づいた。
DSC00307-1.jpg
 テールライト点灯。ヘッドライトのところが赤くなるのね。
DSC00306-1.jpg
 あとは、室内灯は蛍光灯な色。
 ジャンパー栓を付けるのは老眼進行中のため、つらかった。
 このデハ268買った後にホビーセンターKatoに行って気づいたのだが、両側運転台ではない・・・。ので、2両以上買わないと、なんか、走らせてもカッコ悪そう。走らせるには、もう一両買って(3600円)、動力ユニット買って(4200円)のため、そのぐらいのお金出すなら、もうちょっとお金ためて、D51とか蒸気機関車が欲しいような気もする。どうしようか?動力車セットで出してくれないんだろうか?ともう一両買うかどうかは悩み中。DCC化するのも少々面倒っぽいし。
 まあ、この値段でも鉄コレ(にヘッドライト、テールライト、室内灯改造を入れる)に比べると、恐ろしく安くて出来が良いと思いますが。

かわね路号のDCC+サウンド [ds-DCCデコーダ]

 明日は11月3日で休みなので、今日も休みを取って土日を合わせて4連休にした。
 で、かわね路号が届いたので、まずはC11をDCC化することにした。
 まず、分解。下の写真までは簡単にできた。たぶん、SmileDecoderは入らない。EM13も突起を切らないと無理そう。
DSC00286-1.jpg

 
 次に、この後ろの石炭積むところの台座部分が外れない。結局後ろに思い切り引っ張ったら抜けたが、踏ん切りがつかなくて時間がかかった。
 DSC00287-1.jpg
 DSC00288-1.jpg

 で、今回は、EM13を使用するので、前後のライトユニットは使えないので、外した。あとで、子供と遊んでたら、「プラレールの蒸気機関車はライト点くよ!」と自慢された。ネットを見ていると、DZ125は加工なしで載せられそう?
 DSC00290-1.jpg

 EM13は後ろのライトユニットとほぼ同じ大きさだから入るかなあと漠然と思った写真。
 EM13の接続について参考にさせていただいたページ
DSC00291-1.jpg
 
 で、漠然と、つないだ。(結構モーターのところは端子を切らずにはんだ付けしたら難しかった。)

DSC00292-1.jpg

 ボディーをかぶせようとしたら、EM13が引っかかって入らない・・・。
 で、石炭のところと機関室の仕切り部分を削ろうと思った。下は削る前の写真。
DSC00293-1.jpg
 
 これが削った後の写真。でも入らない・・・。
 DSC00296-1.jpg
 やりたくなかったが、仕方なく後ろのライト基板の爪を切った。
 DSC00297-1.jpg

 で、めでたく入った。
 DSC00298-1.jpg

 そして、その後、オハ47のSoundOptionC11と組み合わせた動画。

 
 なお、EM13の起動電圧や、中間電圧、最高電圧は下げて、それっぽくしている。
 これで、とりあえずC11 SoundOptionは終了。
(結構、C11のモーター音が大きい・・・。)

S88 Detectorを作る その2 [自動運転]

 明日11月2日にかわね路号が届くらしいので、明日以降に蒸気機関車にどうDCCを載せるかを考える。
 数日前に、東海道線で電車待ちをしていたら、EF64 1000番台 JR貨物新更新色(3024-1)が走っているのを初めて見てしまい、欲しくて仕方なくなってしまったのだが、(ヨドバシでもAmazonでもなんか安売りっぽくなっているし)、トミックスのロマンスカーとか、Katoの京急2100系とかも欲しいからと、ぐっとこらえている。こらえられないかもだが。
 で、S88 Detectorだが、
(1)rudysmodelrailway様のスケッチがDSMainR4で動くか確認
(2)Analogポート(6ポート)だけ使うので、16ポート→6ポートに減らせるか確認
(3)S88スケッチを2個つなげて動くか確認。(どうせ6ポートじゃ足りないし)
(4)S88 PhotoReceptorスケッチの作成と確認。
(あとはまた今度)
という感じで進める。

(1)rudysmodelrailway様のスケッチがDSMainR4で動くか確認
まず、S88のコネクタだが、(私はS88の本物を見たことがない)
DSMainの端子の名前と配列は
1:Data
2:GND
3:CLK
4:LOAD
5:RST
6:+5V
で、rudysmodelrailway様の名前付けは、
1:DATA
2:GND
3:CLOCK
4:PS
5:RESET
6:5V
となっている。細かいことは知らないが、たぶん、一緒でしょうと推測して、
スケッチのコメント通りに、
1:data->13
2:GND->GND
3:Clock->2(interrupt 0)
4:PS->3(interrupt1)
5:Reset->not used
6:Vcc->Vin(Vinは7V以上と書いてあるが、5V端子から給電すると壊れることがあるとどっかに書いてあるし)
とArduinoUnoをつないで、動かしたら、まんまで動いた。よかったよかった。

(2)Analogポート(6ポート)だけ使うので、16ポート→6ポートに減らせるか確認
 RB-S88スケッチのvoid clock()命令内の
clockCounter =(clockCounter +1) % 16;
で、16を必要なポート数に変更すれば(今回は6)、出来そうだったので、そうしたら、できた。
ただし、DSMainR4で使用時の癖なのかS88というものがそうなのかは知らないが、ポートは16個ずつ開くようで、6に変えると、1~6までは送られているが、7~15までは信号が送られないためか、緑になる。(下記キャプチャ参照)
センサイメージ.png
 となり、なにか、S88について突然不安になった

(3)S88スケッチAruduinoUnoを2個つなげて動くか確認。(どうせ6ポートじゃ足りないし)
 ということで、デイジーチェーン接続してどうなるかを確認するために、もう一つArudinoUnoを用意して、どちらも6ポートだけ開くようにして、実験したら、思惑通りに1~6,7~12ポートは開いて、13~16ポートは緑色という振る舞いになったので、OK。

DSC00282-1.jpg

 まあ、なんか、4ポートずっと緑になるのも微妙なので(どんどんずれてくし、8ポートにして、6ポートはアナログから取り込んで、2ポートはデジタルから取り込むとかにするか?)これはまた考える。

(4)S88 PhotoReceptorスケッチの作成と確認。
 で、とりあえず、6ポートのアナログで動かすスケッチを作った。できた。
一応こちら(すごいことに、外部ライブラリが一つもない)だが、このブレッドボード用の回路図すら作っていない。
早く作らなきゃ。
ソフトの説明をすると、
1.ポートをAnalog6ポートに制限
→void clock()の中身で
clockCounter =(clockCounter +1) % 16;

clockCounter =(clockCounter +1) % ANALOG_PORT_NUM;
として、ANALOG_PORT_NUMは、
#define ANALOG_PORT_NUM 6
で宣言。
2.センサーの検知ルーチンは、Loopから呼ばれるvoid detect_analog()で、
20msごとにステートを進めていくステートマシンにしている。
State0:赤外線LED On
State1:赤外線LED On時のフォトトランジスタ値を読む
State2:赤外線LED Off
State3:赤外線LED Off時のフォトトランジスタ値を読む
State4:On時の値 - Off時の値が diff_value_threshold(=200) 以上なら在線、以下なら車両無し
ということで、1サイクル100[msec]というところ。

3.もともとのスケッチの機能で、S88の信号は、interrupt0,1で対処。
とした。
S88信号の割り込みとLoop内のdetect_analog()がバッティングした時にどういう振る舞いになるかは知らない・・・。