====== DSbasic ====== DSbasicは、DCC対応の鉄道模型をBasicで制御するための機器です。ArduinoにDSbasicシールドを装着し、PS/2キーボードとTVがあればご利用になれます。DSbasicを動かすためのパソコンは不要です。 {{http://buin2gou.sakura.ne.jp/sblo_files/powerele/image/DSbasic_Rx5-thumbnail2.jpg}} {{http://buin2gou.sakura.ne.jp/sblo_files/powerele/image/DSbasic_Rx4-thumbnail2.jpg}} ===== 参考文献 ===== 以下のサイトを参考に開発しました。御礼を申し上げます。 * [[http://siva.cc.hirosaki-u.ac.jp/usr/koyama/avr/tinybasic.html|Arduino版tiny Basicを使ったものづくり]] 弘前大学教育学部 * [[http://ht-deko.com/arduino/tinybasic.html|Tiny Basic を動かしてみる]] ===== 特徴・概要・対象 ===== DSbasicは上級者向けとなります。ベーシック言語を理解されている方、Arduinoのプログラミングができる方が対象です。 サンプルのスケッチには、未知のバグなどが含まれています。ご理解の上、利用ください。 ===== 動かすのに必要なもの ===== * TV, モニタ(RCA端子搭載、デジタル系は一切不可) * PS/2キーボード(USBは未対応のもの) * ACアダプタ * DSbasic Shield * Arduino UNO(互換機も可) * スケッチを書き込むパソコンとUSBケーブル {{http://buin2gou.sakura.ne.jp/sblo_files/powerele/image/DSbasic_exwiring.png}} ※上記の例では、アマゾンで販売されている[[https://www.amazon.co.jp/%E3%80%90%E3%83%8E%E3%83%BC%E3%83%96%E3%83%A9%E3%83%B3%E3%83%89%E5%93%81%E3%80%912%E7%B3%BB%E7%B5%B1%E3%81%AE%E6%98%A0%E5%83%8F%E5%85%A5%E5%8A%9B-12V%E8%BB%8A%E7%94%A8-%E3%83%9F%E3%83%8B%E3%82%AA%E3%83%B3%E3%83%80%E3%83%83%E3%82%B7%E3%83%A5%E6%B6%B2%E6%99%B6%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC-4-3%E3%82%A4%E3%83%B3%E3%83%81-%E3%83%90%E3%83%83%E3%82%AF%E5%88%87%E6%9B%BF%E5%8F%AF%E8%83%BD/dp/B0079RJ4AE/ref=lp_2111183051_1_1?s=automotive&ie=UTF8&qid=1468064670&sr=1-1|爆安4.3inchモニターTV]]を使用しています。12V ACアダプタから[[http://akizukidenshi.com/catalog/g/gC-06723/|分岐するケーブル]]があると便利です。 ===== 部品表 ===== ^Parts No ^ Parts type ^ Spec ^ Akizuki No.^ |C1|Capacitor|0.1u, 5mm pitch|| |C4|Capacitor|220-470u, 3.5mm pitch|| |C5|Capacitor|1u, 5mm pitch|| |CN1|Connector|6pin Long Header|| |CN2|Connector|8pin Long Header|| |CN3|Connector|8pin Long Header|| |CN4|Connector|8pin Long Header|| |CN5|Connector|2x3 long pin header|| |CN6|Connector|2pin Terminal box|| |CN7|Connector|RJ-2410N/Y|C-06508| |CN8|Connector|PS/2, MJ-373/6|C-09018| |CN9|Connector|RJ45, 7810-8P8C|C-00159| |D1|LED|3mm, Yellow|| |D2|LED|3mm, Green|| |D3|LED|3mm, Red|| |IC1'|DIP Socket|DIP Scoket|| |IC1|MCU|ATMEGA328P| DSCore R217書き込み済であること| |IC2|Motor Driver|TB6643KQ|I-07688| |R1|Resistor|1k, 1/4W|| |R2|Resistor|1k, 1/4W|| |R3|Resistor|1k, 1/4W|| |R4|Resistor|470, 1/4W|| |R5|Resistor|1k, 1/4W|| |R6|Resistor|6.8k, 1/4W|| |R7|Resistor|6.8k, 1/4W|| |R8|Resistor|6.8k, 1/4W|| |SW1|Tackt Switch|SKHHLPA010|P-07193| ===== 組み立て手順 ===== - 部品をすべてそろえる。 - IC1のATMEGA328PにDSCore R217が書き込まれているか確認する。書き込み済みATMEGA328Pが付属しているキットの場合は飛ばして構いません。AVRisp mk2等を持っていなくて、Arduino IDEを使ってどうにかする場合は、[[http://fujigaya2.blog.so-net.ne.jp/2016-02-28-1|フジガヤさんのメモ]]を参照のこと。 - 背の低い部品からはんだ付けする。LEDや電解コンデンサは方向があるので注意する。 - 背の高い部品をはんだ付けする。RJ45やコネクタ類。 - はんだ付けが終わったら、テスタで5VとGNDを当てて、ショートしていないか確認する。ショートしていたら、はんだ付けミスをしているのでショートの個所を頑張って探します。 - 問題なければ、Arduino UNOに合体してPOWERのLEDが点灯しているか確認する。 - Arduino UNOに、所望のスケッチ(通常はDSbasicスケッチ)を書き込む - ACアダプタをつなぎ、フィーダー線をつないで、PS/2キーボード、RCAケーブルをテレビにつないで、動作確認する。 - 「PWR 1(エンターキーを押す)」で、RUN LEDが付くか確認する。付けば動作OK。 - あとはお好きにお使いください。 DSbasicは、Tiny Basicをベースとしており、弘前大の解説ページなどの資料も参考にできます。 ===== よく使うBasicコマンド ===== ^コマンド^ パラメータ ^ コメント ^ |NEW|なし | プログラムを初期化します。 | |RUN|なし | プログラムを実行します。 | |SAVE|なし | プログラムを保存します。 | |LOAD|なし | 保存されたプログラムを復帰させます。 | |LIST|なし | プログラムの一覧を表示します。 | |MEM|なし | プログラムの残りの仕様可能量を表示します。 | |PRINT| 文字や変数など | 文字を表示できます。変数も表示できます。| |DELAY| 遅延時間(ms)| 千分の1秒単位でウェイトさせます。| |DWRITE |ピン番号,出力状態 |デジタル端子(Dx)でデジタル信号出力 | |AWRITE |ピン番号,出力状態 |アナログ端子(Ax)でデジタル出力 | |INKEY | なし | 入力されたキー番号を返します。| ===== DSbasic 独自コマンド ===== ^コマンド^ パラメータ ^ コメント ^ |PWR|電源ON/OFF(1 ON, 0 OFF) | 線路への電源ON/OFFを制御します。 | |SPD|DCCアドレス,速度(0-100)|即時速度指定。速度は0(停止)~100(最高速度)。| |SPX|DCCアドレス,開始速度,完了速度,時間(1d=0.1sec) |徐々に加速、徐々に減速の速度指定\\ 速度は0(停止)~100(最高速度)。| |DIR|DCCアドレス,方向(0 FWD, 1 REV)| 進行方向を変えられます| |FNC|DCCアドレス,ファンクション番号,ON/OFF(1/0)| ファンクションを操作できます| |FNX|DCCアドレス,ファンクション番号 |ファンクションのモーメンタリ動作。OFF->ON->OFFを一気に行えます。\\ 警笛とかで2行使うのは勿体無いので。| |ACC|DCCポイントアドレス,分岐/直進(分岐0, 直進1)| DCCのポイントを切り替えできます | |GS8|S88デコーダ番号(8bit間隔)| S88デコーダのデータを取得します。8bit間隔なので注意。\\ 0を指定すると16bitタイプのS88デコーダであれば1~8のデータが取れます。\\ 1を指定すると、9~16のデータが取れます。\\ 2を指定すると、17~24のデータが取れます。設定できる範囲は0-3までです。| なお、公式には出していませんがスケッチをちょっとだけ改造することで、Marklin Motorolaの車両やポイントが操作できます。 ===== DSbasic Editor ===== DSbasicをより一層便利に使えるWindows用の管理ソフト DSbasic Editorを開発しました。無償でご利用いただけます。 DSbasicスケッチR0.40b以降でご利用いただけます。 特徴:\\ * 打ち込んだBasicファイルをPCでファイルとして保存したり、ファイルから読みだせる。データ共有が非常に楽になります。 * 専用画面で使いやすい * オープンソース * 無償 DSbasicとのシリアル通信速度は38400bps固定になっています。DSbasicスケッチの古いバージョン(R0.40b以降ではないもの)では動きませんのでご注意ください。 {{http://buin2gou.sakura.ne.jp/sblo_files/powerele/image/DSBasic_Editor3-thumbnail2.png}} ===== Download ===== DSbasicスケッチ*\\ * [[http://desktopstation.net/bin/DSbasic_r4b.zip|DSbasic スケッチ]] 2016/7/30 更新 R0.40b * [[http://desktopstation.net/bin/DSbasic_r3.zip|DSbasic スケッチ]] 2016/7/25 更新 R0.30 DSbasicEditor:\\ * [[http://desktopstation.net//bin/DSbasicEditor_r01.zip|DS basic Editor 0.1]] 2016/7/30 更新履歴:\\ (R0.40b)\\ ・SPD,ACC,FNX,FNC,DIRの内部処理に100ms程度のウェイトを追加。連続実行可能になった。 ・シリアル通信速度を38400bpsに落とした(DSbasic Editorとの通信の安定性確保) (R0.30)\\ ・弘前大の改善機能を取り込み。ESCで強制停止、シリアル経由でテキスト入力、自動ロード&実行、And(&)、Or(|)、剰余(%)のコマンドの追加、RAM配置バグ修正\\ ・SPXコマンドでウェイトが無いバグ、速度ダウンの時に動かないバグを修正\\ ・EEPROMロード&セーブがおかしいバグを修正\\ (R0.21)\\ [[http://fujigaya2.blog.so-net.ne.jp/2016-07-13|フジガヤさんに指摘されたバグ]]を修正。\\ S88デコーダの情報を読む関数GS8を追加。 アップデート時の注意:\\ R0.30ではEEPROMの管理方式を変更しています。R0.2xからアップデートしてお使いの場合、NEWコマンドでメモリをクリアしてから作業を行ってください。 ===== 頒布 ===== Arduinoでご利用できる基板(シールド)を頒布しております。 * 部品キット 3500円 * 完成品 販売しておりません 送料は、200円(個数に限らず一定額となります)です。 ===== ユーザーレビュー ===== * フジガヤさん [[http://fujigaya2.blog.so-net.ne.jp/2016-07-13|DSbasicを試す]],[[http://fujigaya2.blog.so-net.ne.jp/2016-07-24-1|DSBasicによる自動運転デバッグ]] * hhiroseさん [[http://d.hatena.ne.jp/zourimushi-2/20160717/1468720778|DS basic]]