OctoWS2811 error

Status
Not open for further replies.

johnwatterson

Well-known member
When trying to run the Rainbow program, I started to get this error message:

"C:\Program Files (x86)\Arduino\hardware\teensy/../tools/arm/bin/arm-none-eabi-gcc-ar" rcs "C:\Users\Owner\AppData\Local\Temp\arduino_build_5902\core\core.a" "C:\Users\Owner\AppData\Local\Temp\arduino_build_5902\core\eeprom.c.o"
c:\program files (x86)\arduino\hardware\tools\arm\bin\../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ar.exe: unable to rename 'C:\Users\Owner\AppData\Local\Temp\arduino_build_5902\core\core.a'; reason: File exists

Using library OctoWS2811 at version 1.4 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\OctoWS2811
Error compiling for board Teensy 3.2 / 3.1.


I tried recompiling the Basictest program with the same results. I changed the ownership to full for the Arduino Folder as well as running Arduino as Administrator. Same results.

 
Quick question - Looks like I may have a path problem here?
Where should be the OctoWS2811 programs be located for the Arduino to fine them everytime??
 
Most times, it is most important to look at the very first error message. All following might be secondary symptoms. Thus, we should fix the first problem first:
That looks like an error of the Arduino IDE and its temporary compile path. I remember that one of the previous Arduino had this problem. Try to fully uninstall the actual Arduino IDE and do a fresh install of the 1.8.5 version, before you do a fresh install of Teensyduino 1.42 over it. This should solve the problem.
 
Most times, it is most important to look at the very first error message. All following might be secondary symptoms. Thus, we should fix the first problem first:
That looks like an error of the Arduino IDE and its temporary compile path. I remember that one of the previous Arduino had this problem. Try to fully uninstall the actual Arduino IDE and do a fresh install of the 1.8.5 version, before you do a fresh install of Teensyduino 1.42 over it. This should solve the problem.

Thank you, I will certain reinstall the Arduiono IDE and the Teensyduino. The problem seemed to come out of no-where as I was just trying to enjoy the fact I got the leds to shine. :)
 
Steps: 1. New install
2. Change permission on Arduino in Programs
3. Compile file>Examples>Octows2811>BasicTest

Still have the same problem with new Arduino + Teensyduino install.

c:\program files (x86)\arduino\hardware\tools\arm\bin\../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ar.exe: unable to rename 'C:\Users\Owner\AppData\Local\Temp\arduino_build_5 902\core\core.a'; reason: File exists

Error compiling for board Teensy 3.2 / 3.1.
 
Maybe first just quit and restart the Arduino IDE. Or reboot your computer.

If you keep getting the error, is the "arduino_build_5902" part of the path always the same, or does the "5902" number change? Does it change every time you recompile? Or each time you quit & restart Arduino? Or only after each computer reboot?
 
I sent a reply to your questions but don't see it listed after a refresh?
The Path seems to stay the same and the build number changes after a reboot as well as after an Arduino quit - restart. Lasr error:
c:\program files (x86)\arduino\hardware\tools\arm\bin\../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ar.exe: unable to rename 'C:\Users\Owner\AppData\Local\Temp\arduino_build_554050\core\core.a'; reason: File exists

Using library OctoWS2811 at version 1.4 in folder: C:\Program Files (x86)\Arduino\hardware\teensy\avr\libraries\OctoWS2811
Error compiling for board Teensy 3.2 / 3.1.
 
There are three arduino_build_ folders from earlier dates in the Temp directory:
arduino_build_80208 8/13/2018 File folder
arduino_build_946287 8/13/2018 File folder
arduino_build_672019 8/13/2018 File folder
 
Apparently, something is preventing the compiler from rewriting the core.a file. This might be a problem with file access rights or it might be your antivirus software. Try to exclude temporarily the c:\ Users\Owner\AppData\Local\Temp\ folder from being scanned/protected.
 
Well, thank you, thank you, thank you. McAfee is the culprit - turned off realtime scan and viola.

Is there a list of function calls for Arduino that anyone knows of? For example, color could be Color, COLOR, or colour but the program is only accepting one.

My art project requires two parts. one is scrolling text and the other is simple animation. I found another man's scrolling text program on github but does not compile. Can anyone help with this?
Looks like there is a declaration to me. I tried changing the word colour to color as well as COLOR using the editor but still did not like it.

The error:
C:\Users\Owner\Documents\Arduino\libraries\ScollingFonts\Scolling_Font_prog.ino\Scolling_Font_prog.ino.ino:134:63: error: 'colour' was not declared in this scope

int colour1 = colour(random(1,100),random(1,100),random(1,100));

The code:
Code:
#include "OctoWS2811.h"

//fixed values for octoWS2811
const int ledsPerStrip = 432;
DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];
const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);

//=== F O N T ===//
    /*for ease of reading the code the font could be placed under a seperate 
      tab using the add tab and then using #include*/
byte alphabets [96] [5]  = {
  { 0x00, 0x00, 0x00, 0x00, 0x00 }, // space  (0x20)
  { 0x00, 0x00, 0x2F, 0x00, 0x00 }, // !
  { 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
  { 0x14, 0x7F, 0x14, 0x7F, 0x14 }, // #
  { 0x24, 0x2A, 0x7F, 0x2A, 0x12 }, // $
  { 0x23, 0x13, 0x08, 0x64, 0x62 }, // %
  { 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
  { 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
  { 0x00, 0x1C, 0x22, 0x41, 0x00 }, // (
  { 0x00, 0x41, 0x22, 0x1C, 0x00 }, // (
  { 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
  { 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
  { 0x00, 0x50, 0x30, 0x00, 0x00 }, // ,
  { 0x08, 0x08, 0x08, 0x08, 0x08 }, // -
  { 0x00, 0x30, 0x30, 0x00, 0x00 }, // .
  { 0x20, 0x10, 0x08, 0x04, 0x02 }, // /

  { 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0  (0x30)
  { 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
  { 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
  { 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
  { 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
  { 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
  { 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
  { 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
  { 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
  { 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
  { 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
  { 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
  { 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
  { 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
  { 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
  { 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?

  { 0x32, 0x49, 0x79, 0x41, 0x3E }, // @  (0x40)
  { 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
  { 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
  { 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
  { 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
  { 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
  { 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
  { 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
  { 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
  { 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
  { 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
  { 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
  { 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
  { 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
  { 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
  { 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O

  { 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P  (0x50) //edited - replace 0x3F with 0x7F
  { 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
  { 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
  { 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
  { 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
  { 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
  { 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
  { 0x3F, 0x40, 0x30, 0x40, 0x3F }, // W
  { 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
  { 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
  { 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
  { 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
  { 0x02, 0x04, 0x08, 0x10, 0x20 }, // backslash
  { 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ]
  { 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
  { 0x40, 0x40, 0x40, 0x40, 0x40 }, // _

  { 0x00, 0x01, 0x02, 0x04, 0x00 }, // `  (0x60)
  { 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
  { 0x7F, 0x50, 0x48, 0x48, 0x30 }, // b
  { 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
  { 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
  { 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
  { 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
  { 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
  { 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
  { 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
  { 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
  { 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
  { 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
  { 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
  { 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
  { 0x38, 0x44, 0x44, 0x44, 0x38 }, // o

  { 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p  (0x70)
  { 0x08, 0x14, 0x14, 0x08, 0x7C }, // q
  { 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
  { 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
  { 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
  { 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
  { 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
  { 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
  { 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
  { 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
  { 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
  { 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
  { 0x00, 0x00, 0x7F, 0x00, 0x00 }, // |
  { 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
  { 0x30, 0x08, 0x10, 0x20, 0x18 }, // ~
  { 0x7F, 0x55, 0x49, 0x55, 0x7F }  // unknown char (0x7F)  
};//==end of font array==//
//fixed values for scrolling text
String inData = "";
int rows = 8;
int strip =ledsPerStrip;//strip length
int pix[8] = {strip-1,(strip*2)-1,(strip*3)-1,(strip*4)-1,(strip*5)-1,(strip*6)-1,(strip*7)-1,(strip*8)-1};
int del = 7; 
//#define BLACK    0x000000
//#define RED 0xFF0000
int colour1 = colour(random(1,100),random(1,100),random(1,100));
char msg[] = " OctoWS2811. Scrolling text using a character lookup table for alphabet. # $ @ * etc...  ";
char leng[120];// non-dynamic string length reference

void setup() {
leds.begin(); // start the ws2811 library
  delay(200);
}//==end of setup==//

void loop() {

texttest(msg);
}//==end of loop==//

void texttest(char msg[]){  
//==Start of message setup==//
  for (int charIndex=0; charIndex < (sizeof(leng)-1); charIndex++) //start of charIndex setup
  { 
    int  alphabetIndex = msg[charIndex]- ' ';
    if (alphabetIndex < 0) alphabetIndex=0;
 bool isOn =0;
  for (int col=0; col < 6;col++) {

//==START OF SET METHOD==//
 for(int row=0; row<rows ;row++){
   if (col<5) isOn = bitRead( alphabets[alphabetIndex][col], row ) == 1;
leds.setPixel(pix[row], isOn*colour1);
leds.show();delay(1);
  }
  
//==START OF THE SCROLL METHOD==//
for(int a=0; a<rows; a++){
  for(int b=1; b<ledsPerStrip;b++){
    int a1 = a*ledsPerStrip;
leds.setPixel(((a1+b)-1),leds.getPixel(a1+b));}

      }//end of Scroll Method
    }//end of Set Method
  }//end of message setup
}//end of texttest

//------- HELPER FUNCTION------//
// Create a 24 bit colour value from R,G,B ////these strips are BRG
unsigned int colour(byte r, byte g, byte b)
{
  //Take the lowest 8 bits of each value and append them end to end
return( ((unsigned int)g & 0x1F )<<16 | ((unsigned int)b & 0x1F)<<8 | (unsigned int)r & 0x1F);
  }
 
Last edited by a moderator:
John - I edited your post to use the CODE # …

As far as COLOR - that may be library/device defined. So look in any code examples provided - or the associated header files.

For instance in :: ...\hardware\teensy\avr\libraries\OctoWS2811\OctoWS2811.h
I find :
Code:
	int color(uint8_t red, uint8_t green, uint8_t blue) {
		return (red << 16) | (green << 8) | blue;

and for ILI9341 (...\hardware\teensy\avr\libraries\ILI9341_t3\ILI9341_t3.h) it gets a 16 bit version like this:
Code:
	static uint16_t color565(uint8_t r, uint8_t g, uint8_t b) {
		return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3);
	}
 
Thank you, very helpful. I am going to go through a couple of C++ books to try to get up to speed on the programing details. I realize OOP s has been around for a long while, but still new to me.
 
I do not see any "CODE # ... " changes and am not sure what it means?
I do see what you mean by looking at the library files.
That said why would the scrolling letter code using "int colour1=colour(random(1,100),random(1,100),random(1,100);" does not look like a typo?
 
I do not see any "CODE # ... " changes and am not sure what it means?

See the top sticky thread in this forum (https://forum.pjrc.com/threads/15136-Please-Post-Code-amp-Details-In-Your-Question!) that gives details of how to post code. In particular, if you just post your code straight with the [ CODE ] and [ /CODE ] tags (eliminating the space), it makes your code hard to read. This is because it strips out leading white space, and converts some code into smiley's. The forum moderators can edit your posting to add the CODE tags after the fact, but generally we prefer not to. In this case, defragster did add the tags.

Note when you are editing the text the code looks normal, but once you save it, it becomes unreadable. If you go back and edit the code, it will look readable once again.
 
Status
Not open for further replies.
Back
Top