display Gif on Hallowing M4?
Moderators: adafruit_support_bill, adafruit
Please be positive and constructive with your questions and comments.
- BonesB
- Posts: 7
- Joined: Sat Jan 28, 2023 8:30 pm
display Gif on Hallowing M4?
Hi i have two hallowing m4 boards and i want to be able to display a gif of heart eyes for valentines day. i came across a guide on how to display gifs on a monsterm4sk but nothing about displaying them on these boards
- mikeysklar
- Posts: 13946
- Joined: Mon Aug 01, 2016 8:10 pm
Re: display Gif on Hallowing M4?
There is not a Hallowing specific guide for GIFs, but the display resolution and SAMD51 processor are the same. You can follow the monster m4sk GIF player guide and when necessary use the Arcada Animated GIF guide for customization.
- BonesB
- Posts: 7
- Joined: Sat Jan 28, 2023 8:30 pm
Re: display Gif on Hallowing M4?
I tried following that guide but the UF2 file it says to load onto the board does not work
- mikeysklar
- Posts: 13946
- Joined: Mon Aug 01, 2016 8:10 pm
Re: display Gif on Hallowing M4?
You will not be able to use the UF2 image that was designed for the Monster M4SK.
Take a look at the other link for using a PyPortal to play animated GIFs.
https://learn.adafruit.com/pyportal-ani ... if-display
Take a look at the other link for using a PyPortal to play animated GIFs.
https://learn.adafruit.com/pyportal-ani ... if-display
- BonesB
- Posts: 7
- Joined: Sat Jan 28, 2023 8:30 pm
Re: display Gif on Hallowing M4?
been trying to get it to work in arduino ide when i try to upload i get the following error
Code: Select all
Arduino: 1.8.19 (Windows Store 1.8.57.0) (Windows 10), Board: "Adafruit Hallowing M4 (SAMD51), Enabled, 180 MHz (overclock), Faster (-O3), 50 MHz (standard), TinyUSB, Off"
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:90:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setStartDrawingCallback(callback)'
90 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setStartDrawingCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:90:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setStartDrawingCallback(callback)' previously declared here
90 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setStartDrawingCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:96:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setUpdateScreenCallback(callback)'
96 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setUpdateScreenCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:96:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setUpdateScreenCallback(callback)' previously declared here
96 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setUpdateScreenCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:102:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawPixelCallback(pixel_callback)'
102 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawPixelCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:102:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawPixelCallback(pixel_callback)' previously declared here
102 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawPixelCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:108:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawLineCallback(line_callback)'
108 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawLineCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:108:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawLineCallback(line_callback)' previously declared here
108 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setDrawLineCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:114:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setScreenClearCallback(callback)'
114 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setScreenClearCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:114:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setScreenClearCallback(callback)' previously declared here
114 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setScreenClearCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:120:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileSeekCallback(file_seek_callback)'
120 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileSeekCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:120:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileSeekCallback(file_seek_callback)' previously declared here
120 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileSeekCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:126:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFilePositionCallback(file_position_callback)'
126 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFilePositionCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:126:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFilePositionCallback(file_position_callback)' previously declared here
126 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFilePositionCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:132:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileReadCallback(file_read_callback)'
132 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileReadCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:132:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileReadCallback(file_read_callback)' previously declared here
132 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileReadCallback(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:138:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileReadBlockCallback(file_read_block_callback)'
138 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:138:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::setFileReadBlockCallback(file_read_block_callback)' previously declared here
138 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:145:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::backUpStream(int)'
145 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::backUpStream(int n) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:145:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::backUpStream(int)' previously declared here
145 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::backUpStream(int n) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:151:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readByte()'
151 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readByte() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:151:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readByte()' previously declared here
151 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readByte() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:164:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readWord()'
164 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readWord() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:164:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readWord()' previously declared here
164 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readWord() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:173:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readIntoBuffer(void*, int)'
173 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readIntoBuffer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:173:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readIntoBuffer(void*, int)' previously declared here
173 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::readIntoBuffer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:202:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageDataRect(uint8_t, int, int, int, int)'
202 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageDataRect(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:202:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageDataRect(uint8_t, int, int, int, int)' previously declared here
202 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageDataRect(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:219:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageData(uint8_t)'
219 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageData(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:219:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageData(uint8_t)' previously declared here
219 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::fillImageData(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:229:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::copyImageDataRect(uint8_t*, uint8_t*, int, int, int, int)'
229 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::copyImageDataRect(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:229:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::copyImageDataRect(uint8_t*, uint8_t*, int, int, int, int)' previously declared here
229 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::copyImageDataRect(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:245:6: error: redefinition of 'bool GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGifHeader()'
245 | bool GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGifHeader() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:245:6: note: 'bool GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGifHeader()' previously declared here
245 | bool GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGifHeader() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:260:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseLogicalScreenDescriptor()'
260 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
261 | lzwMaxBits>::parseLogicalScreenDescriptor() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:260:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseLogicalScreenDescriptor()' previously declared here
260 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
261 | lzwMaxBits>::parseLogicalScreenDescriptor() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:287:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGlobalColorTable()'
287 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
288 | lzwMaxBits>::parseGlobalColorTable() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:287:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGlobalColorTable()' previously declared here
287 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
288 | lzwMaxBits>::parseGlobalColorTable() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:309:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parsePlainTextExtension()'
309 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
310 | lzwMaxBits>::parsePlainTextExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:309:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parsePlainTextExtension()' previously declared here
309 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
310 | lzwMaxBits>::parsePlainTextExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:331:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGraphicControlExtension()'
331 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
332 | lzwMaxBits>::parseGraphicControlExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:331:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGraphicControlExtension()' previously declared here
331 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
332 | lzwMaxBits>::parseGraphicControlExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:372:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseApplicationExtension()'
372 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
373 | lzwMaxBits>::parseApplicationExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:372:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseApplicationExtension()' previously declared here
372 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
373 | lzwMaxBits>::parseApplicationExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:405:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseCommentExtension()'
405 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406 | lzwMaxBits>::parseCommentExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:405:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseCommentExtension()' previously declared here
405 | void GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406 | lzwMaxBits>::parseCommentExtension() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:435:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGIFFileTerminator()'
435 | int GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
436 | lzwMaxBits>::parseGIFFileTerminator() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:435:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseGIFFileTerminator()' previously declared here
435 | int GifDecoder<maxGifWidth, maxGifHeight,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
436 | lzwMaxBits>::parseGIFFileTerminator() {
| ~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:458:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseTableBasedImage()'
458 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseTableBasedImage() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:458:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseTableBasedImage()' previously declared here
458 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseTableBasedImage() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:644:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseData()'
644 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseData() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:644:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseData()' previously declared here
644 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::parseData() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:718:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::startDecoding()'
718 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::startDecoding(void) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:718:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::startDecoding()' previously declared here
718 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::startDecoding(void) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:744:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::decodeFrame(bool)'
744 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::decodeFrame(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:744:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::decodeFrame(bool)' previously declared here
744 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::decodeFrame(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:2:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:780:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::decompressAndDisplayFrame(long unsigned int)'
780 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:181,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder_Impl.h:780:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::decompressAndDisplayFrame(long unsigned int)' previously declared here
780 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:3:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:40:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_setTempBuffer(uint8_t*)'
40 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_setTempBuffer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:182,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:40:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_setTempBuffer(uint8_t*)' previously declared here
40 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_setTempBuffer(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:3:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:49:6: error: redefinition of 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode_init(int)'
49 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode_init(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:182,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:49:6: note: 'void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode_init(int)' previously declared here
49 | void GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode_init(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:3:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:72:12: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_get_code()'
72 | inline int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_get_code() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:182,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:72:12: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_get_code()' previously declared here
72 | inline int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_get_code() {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:3:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:120:5: error: redefinition of 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode(uint8_t*, int, uint8_t*)'
120 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/Arcada_GifDecoder.h:182,
from C:\Users\user\Documents\Arduino\sketch_feb15b\sketch_feb15b.ino:1:
C:\Users\user\Documents\Arduino\libraries\Adafruit_Arcada_GifDecoder\src/LzwDecoder_Impl.h:120:5: note: 'int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode(uint8_t*, int, uint8_t*)' previously declared here
120 | int GifDecoder<maxGifWidth, maxGifHeight, lzwMaxBits>::lzw_decode(
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Multiple libraries were found for "Adafruit_TinyUSB.h"
Used: C:\Users\user\Documents\Arduino\libraries\Adafruit_TinyUSB_Library
Not used: C:\Users\user\Documents\ArduinoData\packages\adafruit\hardware\samd\1.7.11\libraries\Adafruit_TinyUSB_Arduino
Multiple libraries were found for "Adafruit_ZeroDMA.h"
Used: C:\Users\user\Documents\ArduinoData\packages\adafruit\hardware\samd\1.7.11\libraries\Adafruit_ZeroDMA
Not used: C:\Users\user\Documents\Arduino\libraries\Adafruit_Zero_DMA_Library
exit status 1
Error compiling for board Adafruit Hallowing M4 (SAMD51).
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
- mikeysklar
- Posts: 13946
- Joined: Mon Aug 01, 2016 8:10 pm
Re: display Gif on Hallowing M4?
What code are you running for the sketch that failed to compile?
Did you install all of these libraries?
https://learn.adafruit.com/pyportal-ani ... -libraries
Did you install all of these libraries?
https://learn.adafruit.com/pyportal-ani ... -libraries
- BonesB
- Posts: 7
- Joined: Sat Jan 28, 2023 8:30 pm
Re: display Gif on Hallowing M4?
i didnt include any code, i was following the instructions on this page and included the gifdecoder library and the acadia library and tried to upload
Code: Select all
#include <Arcada_GifDecoder.h>
#include <Arcada_GifDecoder_Impl.h>
#include <LzwDecoder_Impl.h>
#include <Adafruit_APDS9960.h>
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
- BonesB
- Posts: 7
- Joined: Sat Jan 28, 2023 8:30 pm
Re: display Gif on Hallowing M4?
the included code was from uploading the blink sketch from the pervious page which uploaded to the board without issue
- BonesB
- Posts: 7
- Joined: Sat Jan 28, 2023 8:30 pm
Re: display Gif on Hallowing M4?
update i found sucess in running this example code found on the github for the gifdecoder library but now im having an issue with colors displaying correctly
Code: Select all
if (!arcada.arcadaBegin()) {
Serial.println("Couldn't start Arcada");
while(1) yield();
}
// If we are using TinyUSB & QSPI we will have the filesystem show up!
arcada.filesysBeginMSD();
//while (!Serial) delay(10);
Serial.begin(115200);
Serial.println("Animated GIFs Demo");
arcada.displayBegin();
arcada.display->fillScreen(ARCADA_BLUE);
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->fillScreen(ARCADA_BLUE);
#endif
arcada.setBacklight(255);
if (arcada.filesysBegin()) {
Serial.println("Found filesystem!");
} else {
arcada.haltBox("No filesystem found! For QSPI flash, load CircuitPython. For SD cards, format with FAT");
}
if (! arcada.loadConfigurationFile()) {
arcada.infoBox("No configuration file found, using default 10 seconds per GIF");
arcada.display->fillScreen(ARCADA_BLUE);
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->fillScreen(ARCADA_BLUE);
#endif
} else if (! arcada.configJSON.containsKey("seconds_per_gif")) {
Serial.println("Found config but no key");
arcada.infoBox("Configuration doesn't contain 'seconds_per_gif', using default 10 seconds per GIF");
arcada.display->fillScreen(ARCADA_BLUE);
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->fillScreen(ARCADA_BLUE);
#endif
} else {
displayTimeSeconds = arcada.configJSON["seconds_per_gif"];
}
Serial.printf("Playing GIFs for at least %d seconds per\n", displayTimeSeconds);
#ifdef SERVOPIN
// example of how to have a servo move at the same time
myservo.attach(SERVOPIN);
myservo.write(70);
#endif
}
uint32_t fileStartTime = displayTimeSeconds * -1001;
uint32_t cycle_start = 0L;
int file_index = -1;
int8_t nextGIF = 0; // 0 for no change, +1 for next gif, -1 for previous gif
void loop() {
if (arcada.recentUSB()) {
nextGIF = 1; // restart when we get back
return; // prioritize USB over GIF decoding
}
// Check button presses
arcada.readButtons();
uint8_t buttons = arcada.justPressedButtons();
if (buttons & PREV_GIF_BUTTON) {
nextGIF = -1; // back
}
if (buttons & NEXT_GIF_BUTTON ) {
nextGIF = 1; // forward
}
if (buttons & BRIGHTER_BUTTON) {
int16_t newbrightness = arcada.getBacklight(); // brightness up
newbrightness = min(255, newbrightness+25); // about 10 levels
Serial.printf("New brightness %d", newbrightness);
arcada.setBacklight(newbrightness, true); // save to disk
}
if (buttons & DIMMER_BUTTON) {
int16_t newbrightness = arcada.getBacklight(); // brightness down
newbrightness = max(25, newbrightness-25); // about 10 levels
Serial.printf("New brightness %d", newbrightness);
arcada.setBacklight(newbrightness, true); // save to disk
}
uint32_t now = millis();
if( ((now - fileStartTime) > (displayTimeSeconds * 1000)) &&
(decoder.getCycleNo() > 1)) // at least one 'cycle' elapsed
{
nextGIF = 1;
}
if (nextGIF != 0) {
// Print the stats for this GIF
char buf[80];
int32_t frames = decoder.getFrameCount();
int32_t cycle_design = decoder.getCycleTime(); // Intended duration
int32_t cycle_actual = now - cycle_start; // Actual duration
int32_t percent = 100 * cycle_design / cycle_actual;
sprintf(buf, "[%ld frames = %ldms] actual: %ldms speed: %ld%%",
frames, cycle_design, cycle_actual, percent);
Serial.println(buf);
}
if (nextGIF != 0) {
cycle_start = now;
if (! arcada.chdir(GIF_DIRECTORY)) {
arcada.errorBox("No '" GIF_DIRECTORY "' directory found!\nPlease create it & continue");
return;
}
int num_files = arcada.filesysListFiles(GIF_DIRECTORY, "GIF");
if (num_files == 0) {
arcada.errorBox("No GIF files found! Please add some & press (A) to continue");
return;
}
// Determine how many animated GIF files exist
Serial.print("Animated GIF files Found: "); Serial.println(num_files);
file_index += nextGIF;
if (file_index >= num_files) {
file_index = 0; // wrap around to first file
}
if (file_index < 0) {
file_index = num_files-1; // wrap around to last file
}
nextGIF = 0; // and we're done moving between GIFs
file = arcada.openFileByIndex(GIF_DIRECTORY, file_index, O_READ, "GIF");
if (!file) {
return;
}
arcada.display->dmaWait();
arcada.display->endWrite(); // End transaction from any prior callback
arcada.display->fillScreen(ARCADA_BLACK);
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->dmaWait();
arcada.display2->endWrite(); // End transaction from any prior callback
arcada.display2->fillScreen(ARCADA_BLACK);
// speed up them pixels!
SPI.setClockSource(SERCOM_CLOCK_SOURCE_100M);
SPI1.setClockSource(SERCOM_CLOCK_SOURCE_100M);
#endif
decoder.startDecoding();
// Center the GIF
uint16_t w, h;
decoder.getSize(&w, &h);
Serial.print("Width: "); Serial.print(w); Serial.print(" height: "); Serial.println(h);
if (w < arcada.display->width()) {
gif_offset_x = (arcada.display->width() - w) / 2;
} else {
gif_offset_x = 0;
}
if (h < arcada.display->height()) {
gif_offset_y = (arcada.display->height() - h) / 2;
} else {
gif_offset_y = 0;
}
// Note current time for terminating animation later
fileStartTime = millis();
}
decoder.decodeFrame();
}
/******************************* Drawing functions */
void updateScreenCallback(void) { }
void screenClearCallback(void) { }
void drawPixelCallback(int16_t x, int16_t y, uint8_t red, uint8_t green, uint8_t blue) {
arcada.display->drawPixel(x, y, arcada.display->color565(red, green, blue));
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->drawPixel(x, y, arcada.display->color565(red, green, blue));
#endif
}
void drawLineCallback(int16_t x, int16_t y, uint8_t *buf, int16_t w, uint16_t *palette, int16_t skip) {
uint16_t maxline = arcada.display->width();
bool splitdisplay = false;
uint8_t pixel;
//uint32_t t = millis();
x += gif_offset_x;
y += gif_offset_y;
if (y >= arcada.display->height() || x >= maxline ) {
return;
}
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
// two possibilities
if ((x + w) > 2*maxline) {
w = 2*maxline - x;
}
if ((x + w) > maxline) {
splitdisplay = true; // split the gif over both displays
}
#else
if (x + w > maxline) {
w = maxline - x;
}
#endif
if (w <= 0) return;
//Serial.printf("Line (%d, %d) %d pixels skipping %d\n", x, y, w, skip);
uint16_t buf565[2][w];
bool first = true; // First write op on this line?
uint8_t bufidx = 0;
uint16_t *ptr;
for (int i = 0; i < w; ) {
int n = 0, startColumn = i;
ptr = &buf565[bufidx][0];
// Handle opaque span of pixels (stop at end of line or first transparent pixel)
if (skip == -1) {// no transparent pixels
while(i < w) {
ptr[n++] = palette[buf[i++]];
}
}
else {
while((i < w) && ((pixel = buf[i++]) != skip)) {
ptr[n++] = palette[pixel];
}
}
if (n) {
arcada.display->dmaWait(); // Wait for prior DMA transfer to complete
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->dmaWait(); // Wait for prior DMA transfer to complete
#endif
if (first) {
arcada.display->endWrite(); // End transaction from prior callback
arcada.display->startWrite(); // Start new display transaction
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->endWrite(); // End transaction from prior callback
arcada.display2->startWrite(); // Start new display transaction
#endif
first = false;
}
arcada.display->setAddrWindow(x + startColumn, y, min(maxline, n), 1);
arcada.display->writePixels(ptr, min(maxline, n), false, true);
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
if (! splitdisplay) { // same image on both!
arcada.display2->setAddrWindow(x + startColumn, y, min(maxline, n), 1);
arcada.display2->writePixels(ptr, min(maxline, n), false, true);
} else {
arcada.display2->setAddrWindow(x + startColumn, y, n-maxline, 1);
arcada.display2->writePixels(ptr+maxline, n-maxline, false, true);
}
#endif
bufidx = 1 - bufidx;
}
}
// arcada.display->dmaWait(); // Wait for last DMA transfer to complete
#ifdef ADAFRUIT_MONSTER_M4SK_EXPRESS
arcada.display2->dmaWait(); // Wait for last DMA transfer to complete
#endif
}
bool fileSeekCallback(unsigned long position) {
return file.seek(position);
}
unsigned long filePositionCallback(void) {
return file.position();
}
int fileReadCallback(void) {
return file.read();
}
int fileReadBlockCallback(void * buffer, int numberOfBytes) {
return file.read((uint8_t*)buffer, numberOfBytes); //.kbv
}
/*
Animated GIFs Display Code for SmartMatrix and 32x32 RGB LED Panels
Uses SmartMatrix Library for Teensy 3.1 written by Louis Beaudoin at pixelmatix.com
Written by: Craig A. Lindley
Copyright (c) 2014 Craig A. Lindley
Refactoring by Louis Beaudoin (Pixelmatix)
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, BANNED
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/*
This example displays 32x32 GIF animations loaded from a SD Card connected to the Teensy 3.1
The GIFs can be up to 32 pixels in width and height.
This code has been tested with 32x32 pixel and 16x16 pixel GIFs, but is optimized for 32x32 pixel GIFs.
Wiring is on the default Teensy 3.1 SPI pins, and chip select can be on any GPIO,
set by defining SD_CS in the code below
Function | Pin
DOUT | 11
DIN | 12
CLK | 13
CS (default) | 15
This code first looks for .gif files in the /gifs/ directory
(customize below with the GIF_DIRECTORY definition) then plays random GIFs in the directory,
looping each GIF for displayTimeSeconds
This example is meant to give you an idea of how to add GIF playback to your own sketch.
For a project that adds GIF playback with other features, take a look at
Light Appliance and Aurora:
https://github.com/CraigLindley/LightAppliance
https://github.com/pixelmatix/aurora
If you find any GIFs that won't play properly, please attach them to a new
Issue post in the GitHub repo here:
https://github.com/pixelmatix/AnimatedGIFs/issues
*/
/*
CONFIGURATION:
- If you're using SmartLED Shield V4 (or above), uncomment the line that includes <SmartMatrixShieldV4.h>
- update the "SmartMatrix configuration and memory allocation" section to match the width and height and other configuration of your display
- Note for 128x32 and 64x64 displays with Teensy 3.2 - need to reduce RAM:
set kRefreshDepth=24 and kDmaBufferRows=2 or set USB Type: "None" in Arduino,
decrease refreshRate in setup() to 90 or lower to get good an accurate GIF frame rate
- Set the chip select pin for your board. On Teensy 3.5/3.6, the onboard microSD CS pin is "BUILTIN_SDCARD"
*/
- mikeysklar
- Posts: 13946
- Joined: Mon Aug 01, 2016 8:10 pm
Re: display Gif on Hallowing M4?
The colors displaying correctly is likely an issue of gif formatting.
Did you try some of the example GIFs provided for reference?
https://learn.adafruit.com/pyportal-ani ... os-3023065
There are some suggestions for image optimization:
https://learn.adafruit.com/pyportal-ani ... ze-3023016
Did you try some of the example GIFs provided for reference?
https://learn.adafruit.com/pyportal-ani ... os-3023065
There are some suggestions for image optimization:
https://learn.adafruit.com/pyportal-ani ... ze-3023016
Please be positive and constructive with your questions and comments.