自动列车控制
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
这个非常简单的方案可以让您快速按时搭乘火车。您可以调整移动时间和列车停止时间。列车加速和制动也是可配置的。通过更改草图中的计划参数,您可以创建任何类型的自动移动。只需打开电源,您的火车就会开路。
更改草图中的时间参数:
// 1 | 0> 时间 <5 secif (counterScheduler <=5) { ......// 2 | 10 sec> Time <15 secif ((counterScheduler>=10) &&(counterScheduler <=15)) { ......// 3 |改变方向if (counterScheduler ==16) {.... etc.
制定时间表。
变量:
int BrakingDelta =5; intAcceleratorDelta =6;
定义列车运动参数
列车的方向由引脚D6和D7的状态决定:
// 设置默认方向为 FORWARD digitalWrite(L298_IN1, HIGH);数字写入(L298_IN2,低);
您可以无休止地更改此草图以获得自动列车运动的新选项。
欢迎登机!
代码
- 摆动
Swing 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,输出); pinMode(L298_IN1,输出); pinMode(L298_IN2, OUTPUT);// 设置默认方向为 FORWARD digitalWrite(L298_IN1, HIGH);数字写入(L298_IN2,低); }void loop() { // 启动调度程序 if (millis()> (timerScheduler + 1000)) { // 每 1 秒打勾 counterScheduler++; timerScheduler =毫秒(); } // ------------- SCRIPT SWING int BrakingDelta =5; int 加速Delta =6; // 1 | 0> Time <5 sec if (counterScheduler <=5) { // 开始训练 if (millis()> (timerLocal + 100)) { if (speedAuto <240) speedAuto =speedAuto +AcceleratorDelta;否则 speedAuto =255;模拟写入(L298_ENA,speedAuto); timerLocal =毫秒(); } } // 2 | 10 sec> Time <15 sec if ((counterScheduler>=10) &&(counterScheduler <=15)) { // 10 秒后停止训练 // 停止训练 if (millis()> (timerLocal + 100)) { if ( speedAuto> 30) speedAuto =speedAuto - BrakingDelta;否则速度自动 =0;模拟写入(L298_ENA,speedAuto); timerLocal =毫秒(); } } // 3 |改变方向 if (counterScheduler ==16) { digitalWrite(L298_IN1, LOW);数字写入(L298_IN2,高); } // 4 | 20 sec> Time <30 sec if ((counterScheduler>=20) &&(counterScheduler <=30)) { // 开始训练 if (millis()> (timerLocal + 100)) { if (speedAuto <240) speedAuto =speedAuto + 加速Delta;否则 speedAuto =255;模拟写入(L298_ENA,speedAuto); timerLocal =毫秒(); } } // 5 | 31 sec> Time <40 sec if ((counterScheduler>=31) &&(counterScheduler <=40)) { // 停止火车 // 停止火车 if (millis()> (timerLocal + 100)) { if (speedAuto> 30 ) speedAuto =speedAuto - 制动Delta;否则速度自动 =0;模拟写入(L298_ENA,speedAuto); timerLocal =毫秒(); } } // 6 |返回步骤 1 if (counterScheduler> 40) { counterScheduler =0;数字写入(L298_IN1,高);数字写入(L298_IN2,低); }}
示意图
制造工艺