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
-
Baixe o arquivo
Emoji_face.inoeRawImage.he faça o upload para o seu Wio Terminal por meio daAdruino IDE. Certifique-se de ter instalado todas as bibliotecas. -
Arraste o arquivo
face(incluindo todas as imagens) e salve-o no cartão SD. -
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
...
}