Hallo,

ich bin gerade an einem Projekt in dem ich ein e-ink display ansteuern will und zusätzlich einen Temperatur Sensor auslesen will.
Mein Problem ist das wenn ich die Library für das waveshare 1.54 " e-ink display nutze und zugleich das display mit spi initialisiere bekomme ich willkürliche werte von dem Sensor. Egal ob der Sensor angesteckt ist oder nicht

verkabelt ist es wie folgt

waveshare:
Busy -> D6 (12)
RST -> D4
DC -> D3
CS -> D8
CLK -> D5
DIN -> D7
GND -> GND
VCC -> None (because i get a mem_error when it is connected to 3.3v)

SI7021:
SCL -> D2 (4)
SDA -> D2 (5)
GND -> GND
3.3v -> 3.3v

this is my program so far with the edp2 library


Code:
#include <Wire.h>
 
// SI7021 I2C address is 0x40(64)
#define si7021Addr 0x40

// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
// enable or disable GxEPD2_GFX base class
#define ENABLE_GxEPD2_GFX 0

#include <GxEPD2_BW.h>
#include <GxEPD2_3C.h>
#include <Fonts/FreeMonoBold9pt7b.h>

#if defined (ESP8266)
// 3-color e-papers
GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 12));
#endif

#if defined(_BOARD_GENERIC_STM32F103C_H_)
  #define MAX_DISPAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
  #define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPAY_BUFFER_SIZE / (EPD::WIDTH / 8))
  #define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
#endif

#if defined(__AVR)
#define MAX_DISPAY_BUFFER_SIZE 800 // 
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPAY_BUFFER_SIZE / (EPD::WIDTH / 8))
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
#endif
 
void setup()
{
  Serial.begin(115200);
  Serial.println("Setup");
  Wire.begin();
  Wire.beginTransmission(si7021Addr);
  Wire.endTransmission();
  display.init(115200);
  delay(300);
}
 
void loop()
{
  unsigned int data[2];
 
  Wire.beginTransmission(si7021Addr);
  //Send humidity measurement command
  Wire.write(0xF5);
  Wire.endTransmission();
  delay(500);
 
  // Request 2 bytes of data
  Wire.requestFrom(si7021Addr, 2);
  // Read 2 bytes of data to get humidity
  if(Wire.available() == 2)
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
  }
 
  // Convert the data
  float humidity  = ((data[0] * 256.0) + data[1]);
  humidity = (((125 * humidity) / 65536.0) - 6)/1000;
 
  Wire.beginTransmission(si7021Addr);
  // Send temperature measurement command
  Wire.write(0xF3);
  Wire.endTransmission();
  delay(500);
 
  // Request 2 bytes of data
  Wire.requestFrom(si7021Addr, 2);
 
  // Read 2 bytes of data for temperature
  if(Wire.available() == 2)
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
  }
 
  // Convert the data
  float temp  = ((data[0] * 256.0) + data[1]);
  float celsTemp = ((175.72 * temp) / 65536.0) - 46.85;
  float fahrTemp = celsTemp * 1.8 + 32;
 
  // Output data to serial monitor
  Serial.print("Humidity : ");
  Serial.print(humidity);
  Serial.println(" % RH");
  Serial.print("Celsius : ");
  Serial.print(celsTemp);
  Serial.println(" C");
  Serial.print("Fahrenheit : ");
  Serial.print(fahrTemp);
  Serial.println(" F");
  delay(1000);
}


void helloWorld(int i)
{
  Serial.println("helloWorld");
  display.setRotation(1);
  display.setFont(&FreeMonoBold9pt7b);
  display.setTextColor(GxEPD_RED);
  uint16_t x = (display.width() - 160) / 2;
  uint16_t y = display.height() / 2;
  display.setFullWindow();
  display.firstPage();
  do
  {

    display.fillScreen(GxEPD_WHITE);
    display.setCursor(20,115);
    display.println(String(i));
    display.setCursor(x, y);
    display.println(String(x) + " " +String(y) );

  }
  while (display.nextPage());
  //Serial.println("helloWorld done");
}
egal ob ich bei diesem code die pins sda und sdc verbunden habe gibt er mir immer die selben werte in der console aus.

Was mach ich genau falsch. Bin relativ neu in der elektrotechnik. Brauche ich dort evtl einen Pull up resistor oder so