ARDUINO Ошибка после обновления Библиотек

yesiamcstn

✩✩✩✩✩✩✩
31 Янв 2024
1
0
Долго не притрагивался к готовой прошивке, все работало успешно, но тут зашел в скетч и обновились библиотеки, далее вылезает ошибка, если указать недостающте аргументы, то плата esp8266 уходит в бесконечный цикл ошибки

Ошибка кода

Ошибка:
Documents\Arduino\libraries\OneBitDisplay\src/OneBitDisplay.h:685:5: note: declared here
  685 | int obdDumpBuffer(OBDISP *pOBD, uint8_t *pBuffer, int bRefresh, int bWait, int bFast);
      |     ^~~~~~~~~~~~~
exit status 1

Compilation error: too few arguments to function 'int obdDumpBuffer(OBDISP*, uint8_t*, int, int, int)'

Ниже прикреплю сам код

Код прошивки:
#include <SPI.h>
#include <Wire.h>


#include <BitBang_I2C.h>
#include <OneBitDisplay.h>
#include <AnimatedGIF.h>

#include "animation.h"  

//███████████████████████████
//█─▄▄▄─█─▄▄▄▄█─▄─▄─█▄─▀█▄─▄█
//█─███▀█▄▄▄▄─███─████─█▄▀─██
//▀▄▄▄▄▄▀▄▄▄▄▄▀▀▄▄▄▀▀▄▄▄▀▀▄▄▀

OBDISP obd;
AnimatedGIF gif;
static uint8_t ucOLED[4096]; // holds current frame for 128x64 OLED

// M5Atom Matrix ESP32
#define RESET_PIN -1
#define SDA_PIN -1
#define SCL_PIN -1
#define OLED_ADDR -1
#define MY_OLED OLED_128x64
#define USE_HW_I2C 1
#define FLIP180 0
#define INVERT 0

#define DISPLAY_WIDTH 128
#define DISPLAY_HEIGHT 64

//
// Это не обязательно должно быть суперэффективным
//
void DrawPixel(int x, int y, uint8_t ucColor)
{
    uint8_t ucMask;
    int index;

    if (x >= DISPLAY_WIDTH || y >= DISPLAY_HEIGHT)
        return;
    ucMask = 1 << (y & 7);
    index = x + ((y >> 3) << 7);
    if (ucColor)
        ucOLED[index] |= ucMask;
    else
        ucOLED[index] &= ~ucMask;
}


// Рисует линию изображения прямо на ЖК-дисплее
void GIFDraw(GIFDRAW* pDraw)
{
    uint8_t* s;
    int x, y, iWidth;
    static uint8_t ucPalette[4096]; // thresholded palette


    if (pDraw->y == 0) // first line, convert palette to 0/1
    {
        for (x = 0; x < 256; x++)
        {
            uint16_t usColor = pDraw->pPalette[x];
            int gray = (usColor & 0xf800) >> 8; // red
            gray += ((usColor & 0x7e0) >> 2); // plus green*2
            gray += ((usColor & 0x1f) << 3); // plus blue
            //ucPalette[x] = (gray >> 9); // 0->511 = 0, 512->1023 = 1
            if (gray>800) ucPalette[x]=1; else ucPalette[x]=0;
        }
    }
    y = pDraw->iY + pDraw->y; // current line
    iWidth = pDraw->iWidth;
    if (iWidth > DISPLAY_WIDTH)
        iWidth = DISPLAY_WIDTH;

    s = pDraw->pPixels;
    if (pDraw->ucDisposalMethod == 2) // restore to background color
    {
        for (x = 0; x < iWidth; x++)
        {
            if (s[x] == pDraw->ucTransparent)
                s[x] = pDraw->ucBackground;
        }
        pDraw->ucHasTransparency = 0;
    }
    // Apply the new pixels to the main image
    if (pDraw->ucHasTransparency) // if transparency used
    {
        uint8_t c, ucTransparent = pDraw->ucTransparent;
        int x;
        for (x = 0; x < iWidth; x++)
        {
            c = *s++;
            if (c != ucTransparent)
                DrawPixel(pDraw->iX + x, y, ucPalette[c]);
        }
    }
    else
    {
        s = pDraw->pPixels;
        // Translate the 8-bit pixels through the RGB565 palette (already byte reversed)
        for (x = 0; x < pDraw->iWidth; x++)
            DrawPixel(pDraw->iX + x, y, ucPalette[*s++]);
    }
    if (pDraw->y == pDraw->iHeight - 1) // last line, render it to the display
        obdDumpBuffer(&obd, ucOLED);

       
} /* GIFDraw() */


uint8_t last_animation = 0; // to prevent 2 animation loop after idle. just make it feels , more "random"??


void playWrapper(uint8_t* gifinput, int size)
{

    if (gif.open(gifinput, size, GIFDraw))
    {
        //    Serial.printf("Successfully opened GIF; Canvas size = %d x %d\n", gif.getCanvasWidth(), gif.getCanvasHeight());
        while (gif.playFrame(true, NULL))
        {
        }
        gif.close();
    }

}

struct Anime {
    uint8_t* ptr;
    int size;
};


#define NUMBEROFANIMATION 47
Anime anime;

int n = NUMBEROFANIMATION;

int r;
int debugRandom = 0;  //choose between random or i++ animation  (0 = random / 1 = i++)
int counter = 99;


void setup() {


    //
    //↓ Этот фрагмент кода инициализирует коммуникационные порты и отображаемый дисплей, а также настраивает объект GIF-анимации для работы с изображением на OLED-дисплее
    //  

    Serial.begin(115200);


    int rc = obdI2CInit(&obd, MY_OLED, OLED_ADDR, FLIP180, INVERT, USE_HW_I2C, SDA_PIN, SCL_PIN, RESET_PIN, 800000L); // use standard I2C bus at 400Khz
    Serial.print(rc);
 
    obdFill(&obd, 0, 1);
   
    gif.begin(LITTLE_ENDIAN_PIXELS);
// obdWriteString(&obd,0,0,0,(char *)"GIF Demo", FONT_NORMAL, 0, 1);
  //delay(1000);
if (gif.open((uint8_t*)_intro, sizeof(_intro), GIFDraw)) //***Интро файл под номером intro.h, туда загружаем новый код интро
    {
             Serial.printf("Successfully opened GIF; Canvas size = %d x %d\n", gif.getCanvasWidth(), gif.getCanvasHeight());

    while (gif.playFrame(true, NULL))
       {
         
       }
        gif.close();
    }
   
}

//
//↓ В представленном коде функция loop() выполняется бесконечно, образуя основной цикл программы. В этом цикле происходят следующие действия:
//
void loop() {



    r = random(1, 3) * 8200;
    Serial.println(r);
    delay(r);

    if (debugRandom == 0)
    {
        //randomSeed(esp_random());
        r = random(0, n)+1;
        Serial.println(r);

        while (r == last_animation) {
            delay(10);
            //randomSeed(esp_random());
            r = random(0, n)+1;

            if (r != last_animation)
            {
                last_animation = r;
                break;
            }
        }

        Serial.println(r);
    }
    else
    {
        counter++;
        if (counter > NUMBEROFANIMATION)
        {
            counter = 1;
        }
        r = counter;
    }
    Serial.println(r);

switch (r)
{

  case 1:
  playWrapper((uint8_t*)_1, sizeof(_1));
  break;
  case 2:
  playWrapper((uint8_t*)_2, sizeof(_2));
  break;
  case 3:
  playWrapper((uint8_t*)_3, sizeof(_3));
  break;
  case 4:
  playWrapper((uint8_t*)_4, sizeof(_4));
  break;
    case 5:
  playWrapper((uint8_t*)_5, sizeof(_5));
  break;
    case 6:
  playWrapper((uint8_t*)_6, sizeof(_6));
  break;
    case 7:
  playWrapper((uint8_t*)_7, sizeof(_7));
  break;
    case 8:
  playWrapper((uint8_t*)_8, sizeof(_8));
  break;
    case 9:
  playWrapper((uint8_t*)_9, sizeof(_9));
  break;
    case 10:
  playWrapper((uint8_t*)_10, sizeof(_10));
  break;
    case 11:
  playWrapper((uint8_t*)_11, sizeof(_11));
  break;
    case 12:
  playWrapper((uint8_t*)_12, sizeof(_12));
  break;
    case 13:
  playWrapper((uint8_t*)_13, sizeof(_13));
  break;
    case 14:
  playWrapper((uint8_t*)_14, sizeof(_14));
  break;
    case 15:
  playWrapper((uint8_t*)_15, sizeof(_15));
  break;
    case 16:
  playWrapper((uint8_t*)_16, sizeof(_16));
  break;
    case 17:
  playWrapper((uint8_t*)_17, sizeof(_17));
  break;
    case 18:
  playWrapper((uint8_t*)_18, sizeof(_18));
  break;
    case 19:
  playWrapper((uint8_t*)_19, sizeof(_19));
  break;
    case 20:
  playWrapper((uint8_t*)_20, sizeof(_20));
  break;
  case 21:
  playWrapper((uint8_t*)_21, sizeof(_21));
  break;
  case 23:
  playWrapper((uint8_t*)_23, sizeof(_23));
  break;
  case 24:
  playWrapper((uint8_t*)_24, sizeof(_24));
  break;
  case 25:
  playWrapper((uint8_t*)_25, sizeof(_25));
  break;
  case 26:
  playWrapper((uint8_t*)_26, sizeof(_26));
  break;
  case 27:
  playWrapper((uint8_t*)_27, sizeof(_27));
  break;
  case 28:
  playWrapper((uint8_t*)_28, sizeof(_28));
  break;
  case 30:
  playWrapper((uint8_t*)_30, sizeof(_30));
  break;
  case 31:
  playWrapper((uint8_t*)_31, sizeof(_31));
  break;
  case 33:
  playWrapper((uint8_t*)_33, sizeof(_33));
  break;
  case 34:
  playWrapper((uint8_t*)_34, sizeof(_34));
  break;
  case 35:
  playWrapper((uint8_t*)_35, sizeof(_35));
  break;
  case 36:
  playWrapper((uint8_t*)_36, sizeof(_36));
  break;
  case 37:
  playWrapper((uint8_t*)_37, sizeof(_37));
  break;
  case 38:
  playWrapper((uint8_t*)_38, sizeof(_38));
  break;
  case 39:
  playWrapper((uint8_t*)_39, sizeof(_39));
  break;
  case 40:
  playWrapper((uint8_t*)_40, sizeof(_40));
  break;
  case 41:
  playWrapper((uint8_t*)_41, sizeof(_41));
  break;
  case 42:
  playWrapper((uint8_t*)_42, sizeof(_42));
  break;
  case 43:
  playWrapper((uint8_t*)_43, sizeof(_43));
  break;
  case 44:
  playWrapper((uint8_t*)_44, sizeof(_44));
  break;
  case 45:
  playWrapper((uint8_t*)_45, sizeof(_45));
  break;
  case 46:
  playWrapper((uint8_t*)_46, sizeof(_46));
  break;
  case 47:
  playWrapper((uint8_t*)_47, sizeof(_47));
  break;
}


}

Помогите люди добрые)


Дополню:
С мониторинга порта


мониторинг порта:
3fffffb0:  3fffdad0 00000000 3fff6758 40206420 
3fffffc0:  feefeffe feefeffe 3fffdab0 4010104d 
<<<stack<<<

--------------- CUT HERE FOR EXCEPTION DECODER ---------------

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v001071d0
~ld
����n�{��g|�l�d`#��|{�l�g��n�d`��r�l�d� �-1
--------------- CUT HERE FOR EXCEPTION DECODER ---------------

Exception (3):
epc1=0x4000e140 epc2=0x00000000 epc3=0x00000000 excvaddr=0x4023dfb9 depc=0x00000000

[QUOTE]>>stack>>>[/QUOTE]

ctx: cont
sp: 3ffffdf0 end: 3fffffd0 offset: 0150
3fffff40:  3fff7500 3fff05d4 00000000 402048c0 
3fffff50:  00000009 3fff0618 00000001 3fff6784 
3fffff60:  00000000 00000001 3fff6700 0000000a 
3fffff70:  3fff6700 00000001 00000001 3fff6784 
3fffff80:  3fffdad0 00000000 3fff05d4 40204df8
 
Изменено: