Manual
do
Maker
.
com
Dando sequência à série dos recursos do EasyMaker Image Suite, nesse artigo disponho o procedimento da geração de imagem grayscale, sketch e link para o driver do display T5 e-ink.
O EasyMaker é gratuito e pode ser baixado nas releases do repositório do EasyMaker Image Suite. Seu instalador é o tradicional processo do Windows; next, next, finish.
Qualquer imagem RGB deve abrir no EasyMaker, exceto webp. Abra a imagem escolhida clicando em Arquivo na interface do programa, então escolha uma origem, podendo ser do seu próprio computador ou uma URL direta para a imagem desejada.
Na tela inicial temos a opção de redimensionar. Deixe o mais próximo possível do tamanho almejado para o seu projeto. Se o ajuste não casar as dimensões, aumente o lado menor até atingir o tamanho desejado, depois corte a diferença na área de deslocamento e corte. Se fizer ajustes de deslocamento e corte, não esqueça de clicar em Crop.
Ao clicar na aba Cinza, imediatamente é feita a conversão para o formato necessário para uso em displays de 16 tons de cinza. Esse tipo de imagem é mais escura no computador, mas no display ela ficará normal. Para que os makers não enlouqueçam tentando clarear a imagem antes de converter, o programa exibe uma mensagem sobre essa característica:
Para dar uma noção do que me refiro, eis a conversão da borboleta, utilizada no artigo anterior para exemplificar a geração de imagem para display monocromático:
Se o display que pretende usar a imagem usa 256 tons, então clique no radiobox 256 tons e aplique. Seja qual for a escolha, após concluir essa fase, clique na aba Código e copie o conteúdo para um arquivo que será incluído em seu sketch. Se for utilizar como include, o arquivo deve ser um header, por exemplo, easymaker.h. Daí no sketch deve-se fazer o include:
#include "easymaker.h"
O arquivo deve ser salvo no diretório do projeto. Daí é só seguir o exemplo do sketch:
#include <Arduino.h>
#include "epd_driver.h"
#include "easymaker.h"
uint8_t *framebuffer;
void setup()
{
Serial.begin(115200);
epd_init();
framebuffer = (uint8_t *)heap_caps_malloc(EPD_WIDTH * EPD_HEIGHT / 2, MALLOC_CAP_SPIRAM);
memset(framebuffer, 0xFF, EPD_WIDTH * EPD_HEIGHT / 2);
//=== Para usar imagem gerada pelo EasyMaker ====
//(960 x 540 maximo)
Rect_t area = {.x = 0,.y = 0,
.width = image2display_width,
.height = image2display_height};
epd_poweron();
epd_clear();
epd_draw_grayscale_image(area, (uint8_t *) image2display);
epd_poweroff();
//================================================
}
//caso queira colocar no loop e seguir com outra imagem, basta copiar o bloco acima e seguir com update(3000), por exemplo
void update(uint32_t delay_ms)
{
epd_poweron();
epd_clear();
volatile uint32_t t1 = millis();
epd_draw_grayscale_image(epd_full_screen(), framebuffer);
volatile uint32_t t2 = millis();
Serial.printf("EPD draw took %dms.\n", t2 - t1);
epd_poweroff();
delay(delay_ms);
}
void loop()
{
}
Esse display precisa de um driver, que pode ser baixado desse repositório para EPD 4.7 polegadas.
O Resultado você vê na imagem de destaque. Logo mais eu faço o vídeo completo do programa. Aproveite para se inscrever em nosso canal DobitaobyteBrasil no youtube.
Se deseja utilizar display monocromático, siga esse artigo.
Nunca foi tão fácil colocar uma imagem grayscale em um display!
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.