Ultizin

Aula 25

Nov 2nd, 2025
449
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.10 KB | None | 0 0
  1. /*
  2.   Projeto: Sensor de Temperatura (DS18B20) com Display OLED
  3.   Descrição: Lê o valor de temperatura do sensor DS18B20
  4.              e exibe o dado no display OLED 128x64 (I2C).
  5. */
  6.  
  7. // -------------------- Bibliotecas --------------------
  8. #include <Wire.h>
  9. #include <Adafruit_GFX.h>
  10. #include <Adafruit_SSD1306.h>
  11. #include <OneWire.h>
  12. #include <DallasTemperature.h>
  13.  
  14. // -------------------- Definições --------------------
  15. #define SCREEN_WIDTH 128
  16. #define SCREEN_HEIGHT 64
  17. #define PINO_DS  A0  // pino de dados do DS18B20 (use o mesmo que está ligado)
  18.  
  19. // Objetos do display e sensor
  20. Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
  21. OneWire oneWire(PINO_DS);
  22. DallasTemperature sensors(&oneWire);
  23.  
  24. // -------------------- Setup --------------------
  25. void setup() {
  26.   Serial.begin(115200);
  27.  
  28.   // Inicializa o display OLED
  29.   if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
  30.     Serial.println(F("Falha ao iniciar o display OLED"));
  31.     for (;;);
  32.   }
  33.  
  34.   // Inicializa o sensor de temperatura
  35.   sensors.begin();
  36.  
  37.   display.clearDisplay();
  38.   display.setTextColor(SSD1306_WHITE);
  39.   display.setTextSize(1); // fonte normal
  40.   display.setCursor(0, 0);
  41.   display.println("Sensor DS18B20");
  42.   display.display();
  43.  
  44.   delay(1500);
  45. }
  46.  
  47. // -------------------- Loop --------------------
  48. void loop() {
  49.   // Solicita a leitura do sensor
  50.   sensors.requestTemperatures();
  51.   float temperatura = sensors.getTempCByIndex(0);
  52.  
  53.   // Exibe no Serial Monitor
  54.   Serial.print("Temperatura: ");
  55.   Serial.print(temperatura);
  56.   Serial.println(" °C");
  57.  
  58.   // Limpa a tela e mostra a leitura
  59.   display.clearDisplay();
  60.   display.setTextSize(2);
  61.   display.setCursor(0, 15);
  62.   display.print("Temp:");
  63.  
  64.   display.setTextSize(3);
  65.   display.setCursor(15, 40);
  66.   if (temperatura == DEVICE_DISCONNECTED_C) {
  67.     display.setTextSize(2);
  68.     display.setCursor(10, 25);
  69.     display.print("Erro!");
  70.   } else {
  71.     display.print(temperatura, 1);
  72.     display.print((char)247); // símbolo de grau
  73.     display.print("C");
  74.   }
  75.  
  76.   display.display();
  77.  
  78.   delay(2000); // Atualiza a cada 2 segundos
  79. }
  80.  
Advertisement
Add Comment
Please, Sign In to add comment