自動列車制御
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
この非常にシンプルなスキームにより、スケジュールどおりに電車にすばやく乗車できます。移動時間と停車時間を調整できます。列車の加速とブレーキも設定可能です。スケッチのスケジュールパラメータを変更することで、あらゆるタイプの自動移動を作成できます。電源を入れるだけで電車は出発します。
スケッチの時間パラメータの変更:
// 1 | 0>時間<5秒(counterScheduler <=5){...... // 2 | 10秒>時間<15秒if((counterScheduler> =10)&&(counterScheduler <=15)){...... // 3 |方向を変更するif(counterScheduler ==16){....など
時刻表を作成します。
変数:
intbrakingDelta =5; int AccelerateDelta =6;
列車の動きのパラメータを定義する
列車の方向は、ピンD6とD7の状態によって決まります。
//デフォルトの方向をFORWARDdigitalWrite(L298_IN1、HIGH);に設定します。 digitalWrite(L298_IN2、LOW);
このスケッチを際限なく変更して、列車の自動移動の新しいオプションを取得できます。
ようこそ!
コード
- スイング
スイング Arduino
// L298 #define L298_ENA 5#define L298_IN1 6#define L298_IN2 7 // SCRIPTS VARIABLESint counterScheduler; unsigned long timerScheduler =0; unsigned long timerLocal =0; byte speedAuto =0; void setup(){//ピンを初期化pinMode(L298_ENA、OUTPUT); pinMode(L298_IN1、OUTPUT); pinMode(L298_IN2、OUTPUT); //デフォルトの方向をFORWARDに設定digitalWrite(L298_IN1、HIGH); digitalWrite(L298_IN2、LOW); } void loop(){//スケジューラーを開始するif(millis()>(timerScheduler + 1000)){// 1秒ごとにチェックするcounterScheduler ++; timerScheduler =millis(); } // ------------- SCRIPT SWINGintbrakingDelta =5; int AccelerateDelta =6; // 1 | 0>時間<5秒if(counterScheduler <=5){//列車を開始if(millis()>(timerLocal + 100)){if(speedAuto <240)speedAuto =speedAuto + AccelerateDelta;それ以外の場合、speedAuto =255; analogWrite(L298_ENA、speedAuto); timerLocal =millis(); }} // 2 | 10秒>時間<15秒if((counterScheduler> =10)&&(counterScheduler <=15)){// 10秒後に列車を停止//列車を停止if(millis()>(timerLocal + 100)){if( speedAuto> 30)speedAuto =speedAuto-brakingDelta;それ以外の場合、speedAuto =0; analogWrite(L298_ENA、speedAuto); timerLocal =millis(); }} // 3 |方向を変えるif(counterScheduler ==16){digitalWrite(L298_IN1、LOW); digitalWrite(L298_IN2、HIGH); } // 4 | 20秒>時間<30秒if((counterScheduler> =20)&&(counterScheduler <=30)){//列車を開始if(millis()>(timerLocal + 100)){if(speedAuto <240)speedAuto =speedAuto + AccelerateDelta;それ以外の場合、speedAuto =255; analogWrite(L298_ENA、speedAuto); timerLocal =millis(); }} // 5 | 31秒>時間<40秒if((counterScheduler> =31)&&(counterScheduler <=40)){//列車を停止する//列車を停止するif(millis()>(timerLocal + 100)){if(speedAuto> 30 )speedAuto =speedAuto-brakingDelta;それ以外の場合、speedAuto =0; analogWrite(L298_ENA、speedAuto); timerLocal =millis(); }} // 6 |ステップ1に戻りますif(counterScheduler> 40){counterScheduler =0; digitalWrite(L298_IN1、HIGH); digitalWrite(L298_IN2、LOW); }}
回路図
製造プロセス