#include <Servo.h>


Servo esc;      // Objeto para controlar el ESC
int pinESC = 9; // Pin PWM al que está conectado el cable de señal del ESC
int maxPowerSignal = 2000; // Valor de microsegundos para máxima potencia
int minPowerSignal = 1000; // Valor de microsegundos para mínima potencia

// Variables para la calibración
unsigned long calibracionStart;
bool calibracionCompleta = false;
bool enviandoMax = false;
bool enviandoMin = false;

void setup() {
  Serial.begin(9600);
  esc.attach(pinESC, minPowerSignal, maxPowerSignal);
  
  Serial.println("Iniciando calibracion del ESC...");
  calibracionStart = millis(); // Guarda el tiempo de inicio de la calibración
  enviandoMax = true;
  esc.writeMicroseconds(maxPowerSignal); // Envía señal máxima al inicio
  Serial.println("Conecta la bateria ahora. El ESC piteara en unos segundos.");
}

void loop() {
  // Proceso de calibración en el loop usando millis()
  if (!calibracionCompleta) {
    if (enviandoMax && millis() - calibracionStart >= 5000) { // Espera 5 segundos
      enviandoMax = false;
      enviandoMin = true;
      esc.writeMicroseconds(minPowerSignal); // Envía señal mínima
      calibracionStart = millis(); // Reinicia el contador para el siguiente paso
      Serial.println("Enviando señal minima para armar. Espera otros 5 segundos.");
    }
    
    if (enviandoMin && millis() - calibracionStart >= 5000) { // Espera otros 5 segundos
      enviandoMin = false;
      calibracionCompleta = true;
      Serial.println("¡Calibracion completa! Motor funcionando a maxima potencia.");
    }
  } else {
    // Código para mantener la máxima potencia de forma constante
    esc.writeMicroseconds(maxPowerSignal);
  }
}

Comentarios

Entradas populares