#define IN1 10 // Porta PWM ~10
#define IN2 9 // Porta PWM ~9
#define IN3 6 // Porta PWM ~6
#define IN4 5 // Porta PWM ~5
// Função para mover para frente
void Frente(int velocidade) {
analogWrite(IN1, velocidade);
analogWrite(IN2, 0);
analogWrite(IN3, velocidade);
analogWrite(IN4, 0);
}
// Função para mover para trás
void Tras(int velocidade) {
analogWrite(IN1, 0);
analogWrite(IN2, velocidade);
analogWrite(IN3, 0);
analogWrite(IN4, velocidade);
}
// Função para girar no sentido horário
void GiroHorario(int velocidade) {
analogWrite(IN1, 0);
analogWrite(IN2, velocidade);
analogWrite(IN3, velocidade);
analogWrite(IN4, 0);
}
// Função para girar no sentido anti-horário
void GiroAntiHorario(int velocidade) {
analogWrite(IN1, velocidade);
analogWrite(IN2, 0);
analogWrite(IN3, 0);
analogWrite(IN4, velocidade);
}
// Função para parar o movimento
void Pare() {
analogWrite(IN1, 0);
analogWrite(IN2, 0);
analogWrite(IN3, 0);
analogWrite(IN4, 0);
}
void setup() {
Pare(); // Inicialmente o robô está parado
}
void loop() {
// Movimentação para frente
Frente(255);
delay(2000);
Pare();
delay(500);
// Movimentação para trás
Tras(255);
delay(2000);
Pare();
delay(500);
// Giro no sentido horário
GiroHorario(255);
delay(2000);
Pare();
delay(500);
// Giro no sentido anti-horário
GiroAntiHorario(255);
delay(2000);
Pare();
delay(500);
// Reduz a velocidade até parar (decrementando a velocidade)
for (int i = 255; i >= 0; i--) {
Frente(i);
delay(50);
}
Pare();
delay(500);
// Aumenta a velocidade até o máximo (incrementando a velocidade)
for (int i = 0; i <= 255; i++) {
Frente(i);
delay(50);
}
Pare();
delay(500);
// Motor apenas IN1 em alta velocidade
analogWrite(IN1, 200);
analogWrite(IN2, 0);
analogWrite(IN3, 0);
analogWrite(IN4, 0);
delay(2000);
Pare();
delay(500);
// Motor apenas IN3 em alta velocidade
analogWrite(IN1, 0);
analogWrite(IN2, 0);
analogWrite(IN3, 200);
analogWrite(IN4, 0);
delay(2000);
Pare();
delay(500);
}