Controle Automático de Trem DIY com Arduino – Simples, Confiável e Personalizável
Componentes e Materiais
| Componente | Quantidade | Observações |
|---|---|---|
| Jumpers (genéricos) | 1 | |
| Arduino UNO (qualquer placa: UNO, NANO, MEGA, etc.) | 1 | |
| Driver de Motor Duplo H-Bridge L298 (módulo) | 1 | Recomendo módulo L298 padrão como no esquemático |
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Este esquema simples coloca seu trem na programação rapidamente. Ajuste tempo de movimento, tempo de parada, aceleração e frenagem. Alterando parâmetros no sketch, cria qualquer tipo de movimento automático. Ligue a alimentação e o trem parte!
Parâmetros de Programação (Sketch)
Alterando tempos no código cria-se uma tabela horária:
// 1 | 0 > Tempo < 5 seg
if (counterScheduler <= 5) { ...... }
// 2 | 10 seg > Tempo < 15 seg
if ((counterScheduler >= 10) && (counterScheduler <= 15)) { ...... }
// 3 | Inverter direção
if (counterScheduler == 16) { .... }
// etc.
Variáveis de Movimento
int brakingDelta = 5; // Parâmetro de frenagem
int accelerateDelta = 6; // Parâmetro de aceleração
Definem o comportamento de movimento do trem.
Controle de Direção
A direção é definida pelos pinos D6 e D7:
// Direção padrão: FRENTE
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);
Modifique o sketch infinitamente para novas opções de movimento automático.
Boa viagem!
Código Completo (Arduino)
// Pinos L298
#define L298_ENA 5
#define L298_IN1 6
#define L298_IN2 7
// Variáveis do script
int 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);
// Direção padrão: FRENTE
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);
}
void loop() {
// Agendador: tick a cada 1 segundo
if (millis() > (timerScheduler + 1000)) {
counterScheduler++;
timerScheduler = millis();
}
// ---------- SCRIPT: IDA E VOLTA (SWING)
int brakingDelta = 5;
int accelerateDelta = 6;
// 1 | 0 a 5 seg: Acelera e anda
if (counterScheduler <= 5) {
if (millis() > (timerLocal + 100)) {
if (speedAuto < 240) speedAuto += accelerateDelta;
else speedAuto = 255;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// 2 | 10 a 15 seg: Desacelera e para
if ((counterScheduler >= 10) && (counterScheduler <= 15)) {
if (millis() > (timerLocal + 100)) {
if (speedAuto > 30) speedAuto -= brakingDelta;
else speedAuto = 0;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// 3 | 16 seg: Inverte direção
if (counterScheduler == 16) {
digitalWrite(L298_IN1, LOW);
digitalWrite(L298_IN2, HIGH);
}
// 4 | 20 a 30 seg: Acelera e anda (volta)
if ((counterScheduler >= 20) && (counterScheduler <= 30)) {
if (millis() > (timerLocal + 100)) {
if (speedAuto < 240) speedAuto += accelerateDelta;
else speedAuto = 255;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// 5 | 31 a 40 seg: Desacelera e para
if ((counterScheduler >= 31) && (counterScheduler <= 40)) {
if (millis() > (timerLocal + 100)) {
if (speedAuto > 30) speedAuto -= brakingDelta;
else speedAuto = 0;
analogWrite(L298_ENA, speedAuto);
timerLocal = millis();
}
}
// 6 | > 40 seg: Reinicia ciclo
if (counterScheduler > 40) {
counterScheduler = 0;
digitalWrite(L298_IN1, HIGH);
digitalWrite(L298_IN2, LOW);
}
}
Esquemáticos


Processo de manufatura
- Circuitos de Controle: Fundamentos, Aplicações e Melhores Práticas
- Sistema Automatizado de Enchimento e Monitoramento de Piscina
- Entendendo Bancada de Trabalho: Definição, Aplicações e Benefícios
- Entendendo o Controle de Qualidade: Garantindo Excelência Consistente
- Máquinas de Prensa Automáticas: Função, Benefícios e Aplicações
- Entendendo Prensas de Potência Automáticas: Características, Benefícios e Aplicações
- Dobradores de Tubos Automáticos: Funções, Benefícios e Aplicações
- Entendendo Mesas Rotativas Automáticas: Precisão e Eficiência na Metalurgia
- Guia Abrangente de Sistemas de Transmissão Automática
- Sistemas de Lubrificação Automática: Como Funcionam e Por Que São Importantes