我一直在研究LED墙,并遇到了RAM问题。基本上我使用teensy 3.0并尝试加载以下脚本,但是,.bss的脚本错误将不适合区域'RAM' 请帮忙!任何信息将不胜感激!谢谢!
/*
Nike NFL draft LED wall program
OctoWS2811 BasicTest.ino - Basic RGB LED Test
http://www.pjrc.com/teensy/td_libs_OctoWS2811.html
Copyright (c) 2013 Paul Stoffregen, PJRC.COM, LLC
*/
#include <OctoWS2811.h>
const int ledsPerStrip = 290;
DMAMEM int displayMemory[ledsPerStrip*6];
int drawingMemory[ledsPerStrip*6];
const int config = WS2811_GRB | WS2811_800kHz;
OctoWS2811 leds(ledsPerStrip, displayMemory, drawingMemory, config);
#define ORANGE 0xE05800
#define WHITE 0xFFFFFF
#define BLACK 0x000000
#define BLACK2 0x1E1E1E
void setup() {
leds.begin();
leds.show();
}
static int widths[] = { 30, 30, 50, 90, 40, 60 };
static int speeds[] = { 5, 5, 10, 16, 11, 13 };
static int locations[] = { 0, 0, 0, 0, 0, 0 };
static int counter = 0;
//static int location = 0;
static boolean reverse = false;
int blend(int source , float alpha) {
int source_r = (source >> 16);
int source_g = ((source >> 8) & 0x00FF);
int source_b = (source & 0x0000FF);
source_r = source_r * alpha;
source_g = source_g * alpha;
source_b = source_b * alpha;
return source_b | (source_g << 8) | (source_r << 16);
}
void loop() {
int microsec = 2000000 / leds.numPixels(); // change them all in 2 seconds
int location;
int offset;
int width;
int current;
int min;
int color;
float alpha = 0.95; // Set brightness of head
int head_width = 3; // Set width of head
delay(20);
int i;
for(i = 0; i < 6; ++i) {
location = locations[i];
width = widths[i];
color = 0xFFFFFF;
offset = i*ledsPerStrip;
location = location + speeds[i];
if(location > ledsPerStrip + width) {
location = 0;
}
locations[i] = location;
if(location < width) {
current = location;
min = 0;
} else if(location >= width) {
current = location;
min = location - width + 1;
}
for(current; current >= 0; --current) {
if(current >= min) {
if(current < ledsPerStrip) {
if(!reverse) {
leds.setPixel(current + offset, color);
} else {
leds.setPixel((ledsPerStrip - current) + offset, color);
}
}
if(current < (location - head_width)) {
color = blend(color, alpha);
}
} else {
if(!reverse) {
leds.setPixel(current + offset, BLACK);
} else {
leds.setPixel((ledsPerStrip - current) + offset, BLACK);
}
}
}
}
leds.show();
counter++;
}
并返回错误:
该报告将提供更多信息
“在编译期间显示详细输出”
在文件&gt;中启用喜好。
Arduino:1.0.5(Windows 7),主板:“Teensy 3.0”
c:/ program files / arduino / hardware / tools / arm-none-eabi / bin /../ lib / gcc / arm-none-eabi / 4.7.2 /../../../../ arm -none-eabi / bin / ld.exe:Nike_NFL_Program.cpp.elf section .bss' will not fit in region
RAM'
c:/ program files / arduino / hardware / tools / arm-none-eabi / bin /../ lib / gcc / arm-none-eabi / 4.7.2 /../../../../ arm -none-eabi / bin / ld.exe:区域“RAM”溢出1028个字节
collect2.exe:错误:ld返回1退出状态
谢谢!
答案 0 :(得分:0)
你的内存耗尽。从6到5个编译它的大小。请注意,3.0具有16384个SRAM。每个倍数消耗了有限的16384个SRAM中的大部分。