#include "pico/stdlib.h"
#include "hardware/i2c.h"
#include <stdio.h>
#define SDA_PIN 4
#define SCL_PIN 5
void definir_hora_rtc() {
    uint8_t time[8] = {0x00, 0x00, 0x27, 0x13, 0x02, 0x24, 0x09, 0x24};
    i2c_write_blocking(i2c0, 0x68, time, sizeof(time), false);
}
void buscar_hora(uint8_t *time) {
    uint8_t reg = 0x00;
    i2c_write_blocking(i2c0, 0x68, ®, 1, true);
    i2c_read_blocking(i2c0, 0x68, time, 7, false);
}
uint8_t converter_binario_para_decimal(uint8_t val) {
    return (val >> 4) * 10 + (val & 0x0F);
}
void imprimir_hora(const uint8_t *time) {
    printf("Hora: %02d:%02d:%02d - Data: %02d/%02d/%02d\n", 
        converter_binario_para_decimal(time[2]), converter_binario_para_decimal(time[1]), converter_binario_para_decimal(time[0]),
        converter_binario_para_decimal(time[4]), converter_binario_para_decimal(time[5]), converter_binario_para_decimal(time[6]) + 2000);
}
int main() {
    stdio_init_all();  
    printf("Iniciando comunicação I2C...\n");
    i2c_init(i2c0, 100 * 1000);  
    gpio_set_function(SDA_PIN, GPIO_FUNC_I2C);
    gpio_set_function(SCL_PIN, GPIO_FUNC_I2C);
    gpio_pull_up(SDA_PIN);  
    gpio_pull_up(SCL_PIN);  
    printf("RTC para 24/09/2024 _ 13:27:00\n");
    definir_hora_rtc();
    uint8_t time[7];
    while (true) {
        buscar_hora(time);
        imprimir_hora(time);
        sleep_ms(5000);  
    }
    return 0;
}