HOPE-2020自動運転プログラム完成

HOPE-2020
2020/04/01
概要

線路を6つつなげて、ホール素子ICを利用したセンサを4つセットしました。
そして、真ん中の2つのセンサーの前を列車が通った時に踏切が下がるようにしました。

駅も設置しました。
名前は、Grand Central Terminalです。
また、Grand Central Terminalに自動で止まってくれる手動制御装置を作りました。

手動制御+ホールICセンサーによる自動制御のプログラム
  • 線路の端で折り返し運転(ホールIC)
  • 手動制御で駅に停車(手動制御回路基板)
  • 手動制御で出発(手動制御回路基板)
  • 踏切侵入の時のバーの上げ下げ(開閉)
  • 電車の発車前の音楽として、「上海アリス幻樂団」様のゲーム「東方紅魔郷」より「おてんば恋娘」をお借りしました。
最終的な自動運転のプログラム
完成したプログラムNo.1

プログラム公開は途中までしかしていません。
行番号800以降に駅を発車するときに流す発車音楽のデータをBEEPコマンドを使って書いています。

これを公開すると著作権法違反になるそうなので、削除しました。

僕は、ZUNさんの「おてんば恋娘」を発車メロディーにしました。

完成したプログラム

例によってプログラムはコピペしても大丈夫なようにしてあります。

    10 ON ERROR GOTO 430
    20 OUT $E3,$82:CLS 
    30 F%=0
    40 T%=0:GOTO 70
    50 F%=0
    60 T%=1
    70 M%=0
    80 SS%=0
    90 GSS%=0
   100 WG%=0
   110 PS%=0
   120 D%=0
   130 OUT $E2,4
   140 OUT $E0,254
   150 M%=IN($E1)
   160 IF M%=143 THEN OUT $E2,4:T%=1:F%=0:GOSUB 330:WG%=0:GSS%=1:PS%=0
   170 IF M%=143 THEN IF SS%=1 THEN OUT $E0,0:GOTO 380:PS%=0
   180 '7
   190 IF M%=47 THEN IF T%=1 THEN OUT $E2,0:GSS%=0:PS%=0 ELSE OUT $E2,7
   200 IF M%=39 THEN IF T%=1 THEN OUT $E2,0:GSS%=0:PS%=0 ELSE OUT $E2,7:SS%=1
   210 '5
   220 IF M%=31 THEN IF F%=1 THEN OUT $E2,3:GSS%=0 ELSE OUT $E2,4:PS%=0
   230 IF M%=23 THEN IF F%=1 THEN OUT $E2,3:GSS%=0 ELSE OUT $E2,4:SS%=1:PS%=0
   240 '4
   250 IF M%=79 THEN OUT $E2,7:T%=0:F%=1:GSS%=0:GOSUB 350:PS%=1
   260 IF M%=71 THEN OUT $E2,7:T%=0:F%=1:SS%=1:GSS%=0:GOSUB 350:PS%=1
   270 '6
   280 IF M%=7 THEN SS%=1:IF WG%=0 THEN GOSUB 370
   290 '3
   300 IF M%=135 THEN OUT $E0,0:GOTO 380
   310 '7+3
   320 GOTO 150
   330 IF GSS%=0 THEN PRINT "GRAND-CENTRAL-STATION.",TIME$
   340 RETURN 
   350 IF PS%=0 THEN PRINT "PENNSYLVANIA-STATION.",TIME$
   360 RETURN 
   370 PRINT "WE WILL STOP AT GRAND-CENTRAL-STATION.":WG%=1:RETURN 
   380 PRINT "WE STOP AT GRAND-CENTRAL-STATION.",TIME$
   390 PRINT "(RESTART? Y--RIGHT N--LEFT & RIGHTH)"
   400 D%=IN($E1):T%=1:F%=0
   410 IF D%=11 THEN PRINT "YES":GOSUB 800:GOTO 50
   420 IF D%=3 THEN PRINT "NO":CLS :GOTO 480:GOTO 620
   430 IF ERL=230 THEN IF ERR=26 GOTO 460 ELSE GOTO 450
   440 GOTO 400
   450 PRINT "ERROR!!","LIST",ERL,"NUMBER",ERR:GOTO 610
   460 PRINT " ":PRINT "PLEASE WRITE SOMETHING!!":GOTO 380
   470 FOR XX=1 TO 10:PRINT :NEXT XX
   480 PRINT :FOR YY=1 TO 40 STEP 1
   490 PRINT SPACE$(YY);"   _______                    "
   500 PRINT SPACE$(YY);"  | || || |   _______         "
   510 PRINT SPACE$(YY);" ___JJ_LL____/_______L______  "
   520 PRINT SPACE$(YY);"|___________________________| "
   530 PRINT SPACE$(YY);"|   _____   _____   _____   | "
   540 PRINT SPACE$(YY);"|  |__|__| |__|__| |  |  |  | "
   550 PRINT SPACE$(YY);"|  |  |  | |__|__| |__|__|  | "
   560 PRINT SPACE$(YY);"|  |__|__|         |__|__|  |)"
   570 PRINT SPACE$(YY);"|___________________________| "
   580 PRINT SPACE$(YY);"    L__/            L__/      ":PRINT :PRINT :CLS 
   590 IF YY=30 THEN GOTO 620
   600 NEXT YY
   610 STOP 
   620 PRINT "  GGGGG     OOOOO     OOOOO   DDDDDDD"
   630 PRINT " GG   GG   OO   OO   OO   OO  DD    DD"
   640 PRINT "GG        OO     OO OO     OO DD    DD"
   650 PRINT "GG  GGGGG OO     OO OO     OO DD    DD"
   660 PRINT " GG   GG   OO   OO   OO   OO  DD    DD"
   670 PRINT "  GGGGG     OOOOO     OOOOO   DDDDDDD"
   680 PRINT " "
   690 PRINT "BBBBBBB  YY    YY EEEEEEE "
   700 PRINT "BB    BB  YY  YY  EE      "
   710 PRINT "BB    BB   YYYY   EE      "
   720 PRINT "BBBBBBB     YY    EEEEEEE "
   730 PRINT "BB    BB    YY    EE      "
   740 PRINT "BB    BB    YY    EE      "
   750 PRINT "BBBBBBB     YY    EEEEEEE "
   760 FOR B%=1 TO 32767 STEP 1
   770 NEXT B%
   780 CLS 
   790 GOTO 50
   800 '以下音楽再生プログラム
  1340 RETURN 
変数説明

F%,T% = 列車が線路の両端で折り返すとき用のフラグ
M% = ホール素子ICによって入力される信号の数値用の変数

プログラム解説

10 エラーがあったら430行目に移動
20 AポートとCポートを出力、Bポートを入力に設定
30~40 線路の両端で折り返すためのフラグを作成して70行目に移動
50~60 列車を停車させて走り出すときに誤作動しないためのフラグを設定
70 ホール素子ICによって入力される信号の数値用の変数を設定

◀ 前のページへ戻る

◀ 未来の投稿過去の投稿▶