// define os pinos do botão e do LED
const int BUTTON_PIN = 2;
const int LED_PIN = 13;

// define o estado atual do botão
bool buttonState = false;

void setup() {
  // configura o pino do botão como entrada
  pinMode(BUTTON_PIN, INPUT_PULLUP);

  // configura o pino do LED como saída
  pinMode(LED_PIN, OUTPUT);
  Serial.begin(9600); // Inicia a comunicação serial
}

void loop() {
  // verifica se o botão foi pressionado
  if (buttonPressed()) {
    // chama a sub-rotina que acende o LED
    Serial.println("hello world!");
    turnOnLED();
  } else {
    // chama a sub-rotina que apaga o LED
    turnOffLED();
  }
}

bool buttonPressed() {
  // verifica se o botão está pressionado
  if (digitalRead(BUTTON_PIN) == LOW) {
    // aguarda um curto período para evitar o efeito de bouncing
    delay(50);

    // verifica novamente o estado do botão
    if (digitalRead(BUTTON_PIN) == LOW) {
      // se o botão ainda estiver pressionado, retorna true
      return true;
    }
  }

  // se o botão não estiver pressionado, retorna false
  return false;
}

void turnOnLED() {
  // define o pino do LED como HIGH para acender o LED
  digitalWrite(LED_PIN, HIGH);
}

void turnOffLED() {
  // define o pino do LED como LOW para apagar o LED
  digitalWrite(LED_PIN, LOW);
}
$abcdeabcde151015202530354045505560fghijfghij