¿Cómo podemos saber si la polaridad de nuestro robot está correcta?
Para eso debemos asegurarnos que cuando ejecutes este código, ambas ruedas del robot se muevan para adelante (si alguna rueda va en el sentido contrario, debes cambiar la polaridad de la rueda, desconectando el motor y conectándolo al revés).
#define PINBUZZER 10
#define PINBOTON 2
# define AIN1 8 // pin 1 de dirección del Motor Izquierdo
# define AIN2 9 // pin 2 de dirección del Motor Izquierdo
# define PWMA 5 // pin PWM del Motor Izquierdo
# define BIN1 4 // pin 1 de dirección del Motor Derecho
# define BIN2 7 // pin 2 de dirección del Motor Derecho
# define PWMB 6 // pin PWM del Motor Derecho
void setup() {
TB6612FNG_init();
Peripherals_init();
pinMode(13, OUTPUT);
Motores(0, 0);
WaitBoton();
delay(1000);
digitalWrite(13, HIGH);
}
void loop() {
Motores(40, 40);
WaitBoton();
delay(300);
Motores(0, 0);
WaitBoton();
delay(300);
}
void TB6612FNG_init() {
pinMode(AIN1, OUTPUT);
pinMode(AIN2, OUTPUT);
pinMode(PWMA, OUTPUT);
pinMode(BIN1, OUTPUT);
pinMode(BIN2, OUTPUT);
pinMode(PWMB, OUTPUT);
}
void MotorIz(int value) {
if (value >= 0) {
// si valor positivo vamos hacia adelante
digitalWrite(AIN1, HIGH);
digitalWrite(AIN2, LOW);
} else {
// si valor negativo vamos hacia atras
digitalWrite(AIN1, LOW);
digitalWrite(AIN2, HIGH);
value *= -1;
}
// Setea Velocidad
analogWrite(PWMA, value);
}
void MotorDe(int value) {
if (value >= 0) {
// si valor positivo vamos hacia adelante
digitalWrite(BIN1, HIGH);
digitalWrite(BIN2, LOW);
} else {
// si valor negativo vamos hacia atras
digitalWrite(BIN1, LOW);
digitalWrite(BIN2, HIGH);
value *= -1;
}
// Setea Velocidad
analogWrite(PWMB, value);
}
void Motores(int left, int righ) {
MotorIz(left);
MotorDe(righ);
}
void Peripherals_init() {
pinMode(PINBOTON, INPUT);
pinMode(PINBUZZER, OUTPUT);
}
void WaitBoton() { // Entra en un bucle infinito de espera.
while (!digitalRead(PINBOTON)); // Se sale del bucle cuando se aprieta el botón
tone(PINBUZZER, 2000, 100); // Cuando sale del bucle, suena el buzzer
}
void beep() {
tone(PINBUZZER, 2000, 100);
delay(200);
}
No responses yet