#define SERIAL_SPEED 9600

const int buttonPin = 12;
const int ledPin = 25;  

int buttonState, prev_buttonState;
int ledState;
int reading;

unsigned long last_DebounceTime = 0;
unsigned long debounce_delay = 50;

void setup() {
  // Configuracion de puertos
  pinMode(ledPin, OUTPUT);
  Serial.begin(SERIAL_SPEED);
  // Inicializacion de variables
  buttonState = 0;
  ledState = LOW;
  digitalWrite(ledPin, ledState);
  prev_buttonState = buttonState;
  // Iniciacion del puerto serial  
  Serial.println("Inicio...");
}

void loop() {
  reading = digitalRead(buttonPin);
  // Verificacion si el boton no se ha estabilizado (hay rebote)
  if (reading != prev_buttonState) {
    // Reset del timer asociado al rebote
    last_DebounceTime = millis();
  }
  // Verificacion si el boton se estabilizo
  if ((millis() - last_DebounceTime) > debounce_delay) {    
    // Se verifica se el boton cambio de valor
    if (reading != buttonState) {      
      buttonState = reading;   
      Serial.println("[T]");
      // Se verifica si el cambio obedece a un flanco positivo
      if (buttonState == HIGH) {     
        // Cambio del led
        Serial.print("[T+]-> Led:");
        Serial.println(ledState);
        ledState = !ledState;
        digitalWrite(ledPin, ledState);
      }
    }
  }
  prev_buttonState = reading;
}

$abcdeabcde151015202530fghijfghij