#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;
}
Loading
pi-pico-w
pi-pico-w