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
egal ob ich bei diesem code die pins sda und sdc verbunden habe gibt er mir immer die selben werte in der console aus.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"); }
Was mach ich genau falsch. Bin relativ neu in der elektrotechnik. Brauche ich dort evtl einen Pull up resistor oder so







Zitieren


Lesezeichen