Pular para o conteúdo principal

Carinhas de Emoji Interativas no Wio Terminal

Visão geral

Este exemplo demonstra como exibir várias imagens (olhos) na tela LCD por meio do cartão SD (formato BMP) e, com o uso dos botões integrados e do giroscópio, interagir com os usuários.

Recursos

  • Botão Esquerdo: Imagem Anterior (olhos)

  • Botão do Meio: Animações

  • Botão Direito: Próxima Imagem (olhos)

  • Giroscópio: Olhos se movendo de acordo com a orientação da placa

Bibliotecas Arduino necessárias

  • Instale a biblioteca da tela LCD Seeed_Arduino_LCD, visite Wio Terminal LCD para mais informações.

  • Instale a biblioteca do Cartão SD Seeed_Arduino_FS, visite Seeed-Arduino-FS para mais informações.

  • Instale a biblioteca do acelerômetro on-board Seeed_Arduino_LIS3DHTR, visite Seeed_Arduino_LIS3DHTR para mais informações.

  • Instale a biblioteca RawImage.h, visite Loading Images para mais informações.

Instruções Arduino

  1. Baixe o arquivo Emoji_face.ino e RawImage.h e faça o upload para o seu Wio Terminal por meio da Adruino IDE. Certifique-se de ter instalado todas as bibliotecas.

  2. Arraste o arquivo face (incluindo todas as imagens) e salve-o no cartão SD.

  3. Comece a mover o seu Wio Terminal e interaja!

Código

  • Para inicializar a tela LCD
TFT_eSPI tft;

void setup() {
...
tft.begin();
tft.setRotation(3);
...
}
  • Para inicializar o cartão SD
void setup() {
...
if (!SD.begin(SDCARD_SS_PIN, SDCARD_SPI)) {
while (1);
}
...
}
  • Para inicializar o Acelerômetro on-board
LIS3DHTR<TwoWire>  lis;

void setup () {
...
lis.begin(Wire1);
lis.setOutputDataRate(LIS3DHTR_DATARATE_25HZ); //Output rate of Accelerator
lis.setFullScaleRange(LIS3DHTR_RANGE_2G); //Scale selection
...
}

void loop() {
...
float x_raw = lis.getAccelerationX(); //Read the raw x-axis values of acc
float y_raw = lis.getAccelerationY(); //Read the raw y-axis values of acc
...
}
  • Para inicializar o Botão integrado
void setup() {
...
pinMode(BUTTON_1, INPUT); //left button
pinMode(BUTTON_2, INPUT); //middle button
pinMode(BUTTON_3, INPUT); //right button
...
}
  • Para inicializar a Imagem e Desenhar a Imagem

Neste exemplo, as imagens não são em tamanho total de 320x240, portanto, ao desenhar, é necessário especificar onde a imagem começa. As imagens são primeiro carregadas no buffer para evitar atraso de imagem causado ao chacoalhar o Wio Terminal.

Para mais informações, visite Loading Images.

void loop() {
...
Raw8 * eyes = newImage<uint8_t>(eye[eye_count]); //initilising 8-bit images
writeToBuffer(x_axis, y_axis, eyes); //writing to buffer first, see full code to check this function
...
}
Loading Comments...