#include <stdio.h>
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#include "hardware/timer.h"
#define PIN_LED 20
#define PIN_BUTTON 6
#define DEBOUNCE 200000
setup(){
gpio_init(PIN_LED);
gpio_set_dir(PIN_LED,GPIO_OUT);
gpio_init(PIN_BUTTON);
gpio_set_dir(PIN_BUTTON,GPIO_IN);
gpio_pull_down(PIN_BUTTON);
}
// Função para ler o estado do sensor
bool tcr5000_read_line() {
// Lê o valor do pino (0 ou 1)
return gpio_get(PIN_BUTTON);
}
void acende_led(){
static bool flag_led = false;
flag_led = !flag_led;
gpio_put(PIN_LED, flag_led);
}
int main() {
stdio_init_all();
setup();
static absolute_time_t last_press_time = 0; //Tempo da última pressão
while (true) {
//last_press_time = get_absolute_time();
bool line_detected = tcr5000_read_line(); // Lê o estado do sensor
printf("line_detected: %d\n",line_detected);
printf("get_absolute_time : %llu\n", get_absolute_time());
if(line_detected && (absolute_time_diff_us(last_press_time, get_absolute_time())> DEBOUNCE)){
acende_led();
printf("last_press_time: %llu\n", last_press_time);
int64_t time_elapsed_us = absolute_time_diff_us(last_press_time, get_absolute_time());
printf("Tempo decorrido em us: %lld µs\n", time_elapsed_us);
}
sleep_ms(250);
}
}