Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Projeto: Sensor de Temperatura (DS18B20) com Display OLED
- Descrição: Lê o valor de temperatura do sensor DS18B20
- e exibe o dado no display OLED 128x64 (I2C).
- */
- // -------------------- Bibliotecas --------------------
- #include <Wire.h>
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1306.h>
- #include <OneWire.h>
- #include <DallasTemperature.h>
- // -------------------- Definições --------------------
- #define SCREEN_WIDTH 128
- #define SCREEN_HEIGHT 64
- #define PINO_DS A0 // pino de dados do DS18B20 (use o mesmo que está ligado)
- // Objetos do display e sensor
- Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
- OneWire oneWire(PINO_DS);
- DallasTemperature sensors(&oneWire);
- // -------------------- Setup --------------------
- void setup() {
- Serial.begin(115200);
- // Inicializa o display OLED
- if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
- Serial.println(F("Falha ao iniciar o display OLED"));
- for (;;);
- }
- // Inicializa o sensor de temperatura
- sensors.begin();
- display.clearDisplay();
- display.setTextColor(SSD1306_WHITE);
- display.setTextSize(1); // fonte normal
- display.setCursor(0, 0);
- display.println("Sensor DS18B20");
- display.display();
- delay(1500);
- }
- // -------------------- Loop --------------------
- void loop() {
- // Solicita a leitura do sensor
- sensors.requestTemperatures();
- float temperatura = sensors.getTempCByIndex(0);
- // Exibe no Serial Monitor
- Serial.print("Temperatura: ");
- Serial.print(temperatura);
- Serial.println(" °C");
- // Limpa a tela e mostra a leitura
- display.clearDisplay();
- display.setTextSize(2);
- display.setCursor(0, 15);
- display.print("Temp:");
- display.setTextSize(3);
- display.setCursor(15, 40);
- if (temperatura == DEVICE_DISCONNECTED_C) {
- display.setTextSize(2);
- display.setCursor(10, 25);
- display.print("Erro!");
- } else {
- display.print(temperatura, 1);
- display.print((char)247); // símbolo de grau
- display.print("C");
- }
- display.display();
- delay(2000); // Atualiza a cada 2 segundos
- }
Advertisement
Add Comment
Please, Sign In to add comment