// Definindo os pinos para os LEDs e o botão
#define led1Pin  12
#define led2Pin  11
#define led3Pin  10
#define buttonPin 0

// Variáveis para armazenar o estado do botão
bool buttonState = false;
bool lastButtonState = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;

// Variáveis para controlar os LEDs
bool led1On = false;
bool led2On = false;
bool led3On = false;
bool doubleClick = false;
bool clickts = false;

// Variáveis para controlar o tempo
unsigned long anteriorMillis = 0;    // Armazena o tempo da última mudança de estado do LED
const long intervalo = 1000;         // Intervalo desejado em milissegundos (1 segundo)

// Variável para armazenar o estado do LED
int estadoLED = LOW;

void setup() {
  // Inicializa os pinos dos LEDs como saída
  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  // Inicializa o pino do botão como entrada
  pinMode(buttonPin, INPUT);
  //Serial.begin(115200);
  
}

void loop() {
  // Lê o estado do botão e faz a detecção de clique duplo
  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {
    lastDebounceTime = millis();
  }

  if ((millis() - lastDebounceTime) > debounceDelay) {
    if (reading != buttonState) {
      buttonState = reading;
      //digitalWrite(led1Pin, buttonState ? HIGH : LOW);//reativo
      if (buttonState == HIGH) {
        digitalWrite(led1Pin, !digitalRead(led1Pin));
        //Serial.println("Vermelho!");
      }

      if (buttonState == HIGH) {
        if (doubleClick) {
          doubleClick = false;
          led2On = !led2On;
          digitalWrite(led2Pin, led2On ? HIGH : LOW);
          //Serial.println("Amarelo!");
        } else {
          doubleClick = true;
        }
      }
    }
  }

  lastButtonState = reading;

  // Liga o terceiro LED se o botão estiver pressionado por 3 segundos
  if (buttonState == HIGH && millis() - lastDebounceTime > 3000) {
    if (clickts){
      clickts = false;
      led3On = !led3On;
      digitalWrite(led3Pin, led3On ? HIGH : LOW);
      //Serial.println("Verde!");
      lastDebounceTime = millis();
    }
    else{
      clickts = true;
    }
  }



  unsigned long tempoAtual = millis();
  
  // Verifica se passou tempo suficiente para mudar o estado do LED
  if (tempoAtual - anteriorMillis >= intervalo) {
    // Armazena o novo tempo anterior
    anteriorMillis = tempoAtual;
    
    // Inverte o estado do LED
    if (estadoLED == LOW) {
      estadoLED = HIGH;
    } else {
      estadoLED = LOW;
    }
    
    // Atualiza o estado do LED
    digitalWrite(LED_BUILTIN, estadoLED);
  }
}
$abcdeabcde151015202530fghijfghij
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT