Basic example showing how to use the ePaper Display (ePD) present on the STM32L053 Discovery (STM32L0538-DISCO) board.

Dependencies:   EPD_GDE021A1 lib_dht22 mbed

Fork of DISCO-L053C8_ePD_demo by ST

main.cpp

Committer:
lamyaezerrouki
Date:
2016-10-04
Revision:
2:a78e4e7d9be2
Parent:
0:e5732175b08b

File content as of revision 2:a78e4e7d9be2:

#include "mbed.h"
#include "EPD_GDE021A1.h"
#include "dht22.h"

#define EPD_CS       PA_15
#define EPD_DC       PB_11
#define EPD_RESET    PB_2
#define EPD_BUSY     PA_8
#define EPD_POWER    PB_10
#define EPD_SPI_MOSI PB_5
#define EPD_SPI_MISO PB_4
#define EPD_SPI_SCK  PB_3
#define PTB18        PC_15

EPD_GDE021A1 epd(EPD_CS, EPD_DC, EPD_RESET, EPD_BUSY, EPD_POWER, EPD_SPI_MOSI, EPD_SPI_MISO, EPD_SPI_SCK);

DigitalOut led1(LED1);
DigitalOut led2(LED2);

Serial host(USBTX, USBRX);
DHT22 dht22(PTB18);

//width 48
//height 26
static uint8_t Battery_img[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0xfe, 0xff, 0xff, 0xff, 0xff, 0x0f, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x0c, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x18, 
0xfe, 0xff, 0xff, 0x3f, 0x10, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0x10, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0x10, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0xff, 0x39, 
0xfe, 0xff, 0xff, 0x3f, 0x10, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0x10, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0x10, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x38, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x18, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x08, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x0c, 
0xfe, 0xff, 0xff, 0x3f, 0x00, 0x0c, 
0xfe, 0xff, 0xff, 0xff, 0xff, 0x0f, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
};

int main()
{
    led1 = 1;
    DHT22_data_t dht22_data;
    
    epd.Clear(EPD_COLOR_WHITE);  
    epd.DisplayStringAtLine(5, (uint8_t*)"MBED", CENTER_MODE);
    epd.DisplayStringAtLine(3, (uint8_t*)"Epaper display", LEFT_MODE);
    epd.DisplayStringAtLine(2, (uint8_t*)"demo", LEFT_MODE);
    epd.DrawImage(130, 0, 48, 26, Battery_img);
    epd.DrawRect(50, 4, 60, 4);
    epd.RefreshDisplay();
    wait(1);
  
    while(1) {
        led1 = 1;
        wait_ms(500);
        
        dht22.read(&dht22_data);
        
        float temperature = dht22_data.temp / 10.0f;
        float humidity = dht22_data.humidity / 10.0f;
        
        host.printf("Temperature: %2.2f    Humidity: %2.2f%%\r\n", temperature, humidity);
        wait_ms(500);
        
        char str1[5], str2[5];
        sprintf(str1, "%.1f", temperature);
        sprintf(str2, "%.1f", humidity);
        
        led1 = 0;
        led2 = 1;
        
        epd.Clear(EPD_COLOR_WHITE);  
        epd.DisplayStringAtLine(5, (uint8_t*)"Adrien", CENTER_MODE);
        epd.DisplayStringAtLine(3, (uint8_t*)"Temperature: ", LEFT_MODE);
        epd.DisplayStringAtLine(3, (uint8_t*)str1, RIGHT_MODE);
        epd.DisplayStringAtLine(2, (uint8_t*)"Humidity: ", LEFT_MODE);
        epd.DisplayStringAtLine(2, (uint8_t*)str2, RIGHT_MODE);
        epd.RefreshDisplay();
        
        led2 = 0;
        wait_ms(500);
    }
}