3dsimo / 3dsimo_kit

71 stars 37 forks source link

cannot compile, tried in arduino ide and in atom (platformio) get error- HELP #7

Open monterman opened 5 years ago

monterman commented 5 years ago

here is the error:

`C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_fillScreen':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:62:5: error: 'for' loop initial declarations are only allowed in C99 mode

 for(uint8_t m=(ssd1306_lcd.height >> 3); m>0; m--)

 ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:62:5: note: use option -std=c99 or -std=gnu99 to compile your code

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:64:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for(uint8_t n=ssd1306_lcd.width; n>0; n--)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_clearScreen':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:76:5: error: 'for' loop initial declarations are only allowed in C99 mode

 for(uint8_t m=(ssd1306_lcd.height >> 3); m>0; m--)

 ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:78:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for(uint8_t n=ssd1306_lcd.width; n>0; n--)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_printFixedN':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:335:17: error: 'for' loop initial declarations are only allowed in C99 mode

             for (uint8_t idx = 0; idx < 1<<(3-factor); idx++)

             ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:341:13: error: 'for' loop initial declarations are only allowed in C99 mode

         for (uint8_t z=(1<<factor); z>0; z--)

         ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_drawHLine':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:633:5: error: 'for' loop initial declarations are only allowed in C99 mode

 for (uint8_t x = x1; x <= x2; x++)

 ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_drawSprite':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:809:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for (uint8_t i=0; i < sprite->w; i++)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:818:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for (uint8_t i=0; i < sprite->w; i++)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_eraseSprite':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:834:5: error: 'for' loop initial declarations are only allowed in C99 mode

 for (uint8_t i=sprite->w; i > 0; i--)

 ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:842:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for (uint8_t i=sprite->w; i > 0; i--)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c: In function 'ssd1306_eraseTrace':

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:859:5: error: 'for' loop initial declarations are only allowed in C99 mode

 for(uint8_t y = y1; y <= y2; y++)

 ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:862:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for(uint8_t x = sprite->w; x > 0; x--)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:876:9: error: 'for' loop initial declarations are only allowed in C99 mode

     for(uint8_t y = sprite->ly >> 3; y <= (sprite->ly + 7) >> 3; y++)

     ^

C:\Arduino\libraries\ssd1306\src\ssd1306_generic.c:879:13: error: 'for' loop initial declarations are only allowed in C99 mode

         for(uint8_t x = x2 - x1 + 1; x > 0; x--)

         ^

Using library ssd1306 at version 1.7.0 in folder: C:\Arduino\libraries\ssd1306 Using library Wire at version 1.0 in folder: C:\Users\monte\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.7\libraries\Wire Using library EveryTimer at version 1.1.1 in folder: C:\Arduino\libraries\EveryTimer exit status 1 Error compiling for board Arduino NANO`

monterman commented 5 years ago

Hi Still nothing. I tried with you Freemode version and cannot compile... new error I get in Platformio is:

.pioenvs\nanoatmega168\src\3dsimo_EDIT.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here .pioenvs\nanoatmega168\src\main.cpp.o (symbol from plugin): In functionsetup': (.text+0x0): multiple definition of loop' .pioenvs\nanoatmega168\src\3dsimo_EDIT.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here C:\Users\monte\AppData\Local\Temp\ccz2LGpP.ltrans0.ltrans.o: In functionmain':

:(.text.startup+0x21e): undefined reference to `EveryTimer::Every(unsigned long, void (*)())' :(.text.startup+0x298): undefined reference to `EveryTimer::Update()' C:\Users\monte\Local\Temp\ccz2LGpP.ltrans1.ltrans.o: In function `global constructors keyed to 65535_0_3dsimo_AFM_EDIT.ino.cpp.o.2711 ': :(.text.startup+0x74): undefined reference to `EveryTimer::EveryTimer()' collect2.exe: error: ld returned 1 exit status *** [.pioenvs\nanoatmega168\firmware.elf] Error 1`
arcao commented 5 years ago

No problem for me with latest Arduino IDE v1.8.8. I just installed SSD1806 OLED library and EasyTimer library as is specified in this PDF document. I had only a little trouble with uploading to Ardunino Nano. The bundled Arduino Nano in the latest 3D Simo Kit version has actually ATmega328P MCU with old Arduino bootloader (57 600 kbps upload speed).

najtvis commented 4 years ago

You are right @arcao, 3Dsimo KIT is using old bootloader and libraries from Arduino IDE. In this case use processor Atmega328p (old bootloader) which is in new versions of Arduino IDE.

For @monterman if you are using VS Code with Platformio or other IDE, it requires to add following libraries from Arduino IDE: SSD1306 and EasyTimer to your platform. The easiest way, how to get them is to install Arduino IDE, download the libraries and import them into your IDE. The libraries are located in your Document folder in Arduino.