T3N0N

Removed BME part

Jul 17th, 2025
12
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // Arduino BME680 & Waveshare 2.9 epaper via SPI - Removed BME - WORKING!
  2.  
  3. #include <SPI.h>
  4. #include <GxEPD2_BW.h>
  5. #include <Fonts/FreeMonoBold9pt7b.h>
  6. //#include <Adafruit_Sensor.h>
  7. //#include "Adafruit_BME680.h"
  8.  
  9.  
  10. // SPI pin mapping (ESP32)
  11. #define BME_SCK   18
  12. #define BME_MISO  19
  13. #define BME_MOSI  23
  14. #define BME_CS    21
  15. #define DISP_CS   5
  16. #define DISP_DC   17
  17. #define DISP_RST  16
  18. #define DISP_BUSY 4
  19.  
  20. #define SEALEVELPRESSURE_HPA (1013.25)
  21.  
  22. // Display driver
  23. GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(
  24.   GxEPD2_290_T94_V2(DISP_CS, DISP_DC, DISP_RST, DISP_BUSY)
  25. );
  26.  
  27.  
  28. // BME680 via SPI
  29. //Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);
  30.  
  31. bool sensor_error = false;
  32. float temperature, humidity, pressure, gas, alt;
  33.  
  34.  
  35. // Chip select switching
  36. void selectSensor() {
  37.   digitalWrite(DISP_CS, HIGH);
  38.   //digitalWrite(BME_CS, LOW);
  39.   sensor_error = false;
  40. }
  41.  
  42. void selectDisplay() {
  43.   digitalWrite(BME_CS, HIGH);
  44.   digitalWrite(DISP_CS, LOW);
  45. }
  46.  
  47. // Read sensor data
  48. void readValues() {
  49.   //selectSensor();
  50.   //if (!bme.performReading()) {
  51.     //sensor_error = true;
  52.     //Serial.println("Error reading from sensor!");
  53.     //return;
  54.  
  55.   delay(400);
  56.   temperature = random(-15, 40);
  57.   humidity    = random(0, 100);
  58.   pressure    = random(0, 100);
  59.   alt         = random(100, 400);
  60.   Serial.print("Sensor values: ");
  61.   Serial.print(temperature); Serial.print(" °C, ");
  62.   Serial.print(humidity);    Serial.print(" %, ");
  63.   Serial.print(pressure);    Serial.println(" Pa");
  64. }
  65.  
  66. // Update display
  67. void displayValues(int16_t x, int16_t y, int16_t sep) {
  68.   //if (sensor_error) return;
  69.   selectDisplay();
  70.  
  71.   display.setRotation(1);
  72.   display.setFont(&FreeMonoBold9pt7b);
  73.   display.setTextColor(GxEPD_BLACK);
  74.   display.setFullWindow();
  75.   display.firstPage();
  76.   do {
  77.     display.fillScreen(GxEPD_WHITE);
  78.     display.setCursor(x, y);
  79.     display.print("T: ");  display.print(temperature, 1); display.println(" C");
  80.     display.setCursor(x, y + sep);
  81.     display.print("H: ");  display.print(humidity, 1);    display.println(" %");
  82.     display.setCursor(x, y + sep*2);
  83.     display.print("P: ");  display.print(pressure / 100.0, 2); display.println(" hPa");
  84.     display.setCursor(x, y + sep*3);
  85.     display.print("Alt: "); display.print(alt, 1);        display.println(" m");
  86.   } while (display.nextPage());
  87.  
  88.   Serial.println("Display updated.");
  89. }
  90.  
  91.  
  92. // Setup
  93. void setup() {
  94.   Serial.begin(115200);
  95.   delay(100);
  96.  
  97.   // Start SPI manually
  98.   SPI.begin(BME_SCK, BME_MISO, BME_MOSI);
  99.  
  100.   // Configure CS pins
  101.   pinMode(BME_CS, OUTPUT);
  102.   pinMode(DISP_CS, OUTPUT);
  103.   digitalWrite(BME_CS, HIGH);
  104.   digitalWrite(DISP_CS, HIGH);
  105.  
  106.   // Initialize display
  107.   selectDisplay();
  108.   display.init(115200, true, 2, false);  // works for you!
  109.  
  110.   // Clear display once
  111.   display.setRotation(1);
  112.   display.setFullWindow();
  113.   display.firstPage();
  114.   do {
  115.     display.fillScreen(GxEPD_WHITE);
  116.   } while (display.nextPage());
  117.  
  118.   // Initialize sensor
  119.   //selectSensor();
  120.   //if (!bme.begin()) {
  121.     //Serial.println("BME680 not found!");
  122.     //while (1);
  123.   //}
  124.  
  125.   //bme.setTemperatureOversampling(BME680_OS_4X);
  126.   //bme.setHumidityOversampling(BME680_OS_2X);
  127.   //bme.setPressureOversampling(BME680_OS_4X);
  128.   //bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
  129.  
  130.   Serial.println("Setup complete.");
  131.   delay(2000);
  132. }
  133.  
  134. // Loop
  135. void loop() {
  136.   Serial.println("\nNew cycle...");
  137.   readValues();
  138.   displayValues(20, 20, 20);
  139.   Serial.println("Waiting 30 seconds...\n");
  140.   delay(30000);
  141. }
Advertisement
Add Comment
Please, Sign In to add comment