/******************************************************************************* Projeto 92 - Relógio digital com display OLED e módulo RTC Autor: Angelo Luis Ferreira Data: 12/01/2020 http://squids.com.br/arduino *******************************************************************************/ #include // biblioteca RTC #include // caso utilize comunicação SPI #include // biblioteca requerida para I2C #include // biblioteca OLED #include // biblioteca OLED DS3231 rtc(SDA, SCL); // cria o objeto rtc // configuração do display OLED #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); void setup() { Serial.begin(9600); // inicializa o monitor serial (usado para testes) rtc.begin(); // inicializa o RTC // **** Altere as linhas abaixo para ajustar a hora e data do RTC ******** //rtc.setDOW(TUESDAY); // Altere o dia da semana SUNDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY e SATURDAY //rtc.setTime(19, 36, 0); // Altere o tempo: hora, minutos, segundos (formato de 24 horas) //rtc.setDate(24, 1, 2019); // Dia, mês, Ano display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // inicializa a comunicação I2C do OLED end 0X3C // Clear the buffer. display.clearDisplay(); display.display(); // teste RTC - exibir no monitor serial Serial.println(rtc.getDateStr()); Serial.println(rtc.getDOWStr()); Serial.print(rtc.getTemp()); Serial.println(" ºC"); Serial.print("Hora: "); Serial.print(rtc.getTimeStr());} void loop() { // Display Text - Temperatura display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.print(rtc.getTemp()); display.print(" "); display.write(247); display.print("C"); // Display Text - Dia da semana display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(74, 0); display.print(rtc.getDOWStr()); // Desenha borda do relógio (com cantos arredondados) display.setTextSize(1); display.setTextColor(WHITE); display.drawRoundRect(0, 16, 128, 45, 8, WHITE); // Display Text - Dia do ano display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(32, 21); display.print(rtc.getDateStr()); // Display Text - Hora display.setTextSize(2); display.setTextColor(WHITE); display.setCursor(13, 37); display.print(rtc.getTimeStr()); // exibe no display display.display(); // limpa o display display.clearDisplay(); }