में होल्डिंग Arrays नहीं है मैं कुछ दोस्तों के साथ इलेक्ट्रॉनिक्स/प्रोग्रामिंग सीख रहा हूं (और सिखाने की कोशिश कर रहा हूं)। हमने अपने कार्य के लिए लॉन्चपैड का उपयोग करके एलईडी क्यूब बनाने का निर्णय लिया है।रैम
यहाँ मुद्दा हम में चलाने है:
हमारे एनिमेशन के लिए, हम उन्हें एक दो आयामी सरणी में संग्रहीत करते हैं। अगर हम सरणी को
के रूप में परिभाषित करते हैं तो मुझे त्रुटि मिलती है, मैं नहीं चाहता कि यह सरणी रैम में हो, क्योंकि हमारे पास बहुत अधिक उपलब्ध नहीं है।
संपादित करें: कोड
मुझे आशा है कि यह सही जगह में पोस्ट किया जाता है के लिए नीचे देखें।
समय पर नहीं (मुझे लगता है?) क्या मैं किसी भी सरणी को बदल रहा हूं, वे सभी हाथ से एक बार सेट हैं और बस लूप हो गए हैं। मैं क्या बनने की कोशिश कर रहा है की अनिश्चित हूँ परिवर्तित
जानकारी अगर जरूरत (परोक्ष?):
MSP430G2553 16kb फ्लैश 0.5kB रैम
आपकी मदद के लिएधन्यवाद
अद्यतन: वैसे हंसपैसेंट ने मुझे बताया कि वह त्रुटि क्यों दिखाई दे रही थी। लेकिन मुझे अभी भी एक रैम ओवरफ्लो मिल रहा है (जाहिर है कि यह फ़्लैश में संग्रहीत नहीं किया जा रहा है?)
मैंने कोशिश की एक और चीज # परिभाषित रोन (पंक्ति चालू) के बजाय मैंने इसे भी कॉन्स्ट के रूप में घोषित किया है। (इसलिए जब एक एनीमेशन सरणी बनाई गई थी, तो इसे स्पष्ट रूप से केवल स्थिरांक के साथ बनाया गया था) मैंने आशा की थी कि इसे फ़्लैश में स्टोर किया जाएगा।
#define povDelay delayMicroseconds(200) // POV Delay
const int CON = LOW;
const int COFF = HIGH;
const int RON = HIGH;
const int ROFF = LOW;
const int col[9] = {P1_0, P1_1, P1_2, P1_3, P1_4, P1_5, P2_0, P2_1, P2_2};
const int row[3] = {P1_6, P1_7, P2_3};
void setup()
{
// Serial.begin(9600);
for (int i = 0; i < 9; i++)
{
pinMode(col[i], OUTPUT);
digitalWrite(col[i], COFF);
}
for (int i = 0; i < 3; i++)
{
pinMode(row[i], OUTPUT);
digitalWrite(row[i], ROFF);
}
}
void sideToSide(int delayTime)
{
int sideDelay = 1000;
// Left Frame
const int leftFrame[3][9] = {
{CON, COFF, COFF, CON, COFF, COFF, CON, COFF, COFF},
{CON, COFF, COFF, CON, COFF, COFF, CON, COFF, COFF},
{CON, COFF, COFF, CON, COFF, COFF, CON, COFF, COFF}
};
// Middle Frame
const int middleFrame[3][9] = {
{COFF, CON, COFF, COFF, CON, COFF, COFF, CON, COFF},
{COFF, CON, COFF, COFF, CON, COFF, COFF, CON, COFF},
{COFF, CON, COFF, COFF, CON, COFF, COFF, CON, COFF}
};
// Right Frame
const int rightFrame[3][9] = {
{COFF, COFF, CON, COFF, COFF, CON, COFF, COFF, CON},
{COFF, COFF, CON, COFF, COFF, CON, COFF, COFF, CON},
{COFF, COFF, CON, COFF, COFF, CON, COFF, COFF, CON}
};
// Display this animation 3 times (Frame 1, Frame 2, Frame 3, Frame 2)
for (int i = 0; i < 4; i++)
{
displayFrame(leftFrame, delayTime);
displayFrame(middleFrame, delayTime);
displayFrame(rightFrame, delayTime);
displayFrame(middleFrame, delayTime);
}
// Last animation
displayFrame(leftFrame, delayTime);
} // ############ END SIDE TO SIDE
void frontToBack(int delayTime)
{
// Left Frame
const int frontFrame[3][9] = {
{CON, CON, CON, COFF, COFF, COFF, COFF, COFF, COFF},
{CON, CON, CON, COFF, COFF, COFF, COFF, COFF, COFF},
{CON, CON, CON, COFF, COFF, COFF, COFF, COFF, COFF}
};
// Middle Frame
const int middleFrame[3][9] = {
{COFF, COFF, COFF, CON, CON, CON, COFF, COFF, COFF},
{COFF, COFF, COFF, CON, CON, CON, COFF, COFF, COFF},
{COFF, COFF, COFF, CON, CON, CON, COFF, COFF, COFF}
};
// Right Frame
const int backFrame[3][9] = {
{COFF, COFF, COFF, COFF, COFF, COFF, CON, CON, CON},
{COFF, COFF, COFF, COFF, COFF, COFF, CON, CON, CON},
{COFF, COFF, COFF, COFF, COFF, COFF, CON, CON, CON}
};
// Display this animation 3 times (Frame 1, Frame 2, Frame 3, Frame 2)
for (int i = 0; i < 4; i++)
{
displayFrame(frontFrame, delayTime);
displayFrame(middleFrame, delayTime);
displayFrame(backFrame, delayTime);
displayFrame(middleFrame, delayTime);
}
// Last animation
displayFrame(frontFrame, delayTime);
} // ############# END FRONT TO BACK
void diagFunctionOne(int delayTime)
{
const int firstFrame[3][9] = {
{CON, COFF, COFF, COFF, COFF, COFF, COFF, COFF, COFF},
{CON, COFF, COFF, COFF, COFF, COFF, COFF, COFF, COFF},
{CON, COFF, COFF, COFF, COFF, COFF, COFF, COFF, COFF}
};
const int secondFrame[3][9] = {
{COFF, CON, COFF, CON, COFF, COFF, COFF, COFF, COFF},
{COFF, CON, COFF, CON, COFF, COFF, COFF, COFF, COFF},
{COFF, CON, COFF, CON, COFF, COFF, COFF, COFF, COFF}
};
const int thirdFrame[3][9] = {
{COFF, COFF, CON, COFF, CON, COFF, CON, COFF, COFF},
{COFF, COFF, CON, COFF, CON, COFF, CON, COFF, COFF},
{COFF, COFF, CON, COFF, CON, COFF, CON, COFF, COFF}
};
const int forthFrame[3][9] = {
{COFF, COFF, COFF, COFF, COFF, CON, COFF, CON, COFF},
{COFF, COFF, COFF, COFF, COFF, CON, COFF, CON, COFF},
{COFF, COFF, COFF, COFF, COFF, CON, COFF, CON, COFF}
};
const int fifthFrame[3][9] = {
{COFF, COFF, COFF, COFF, COFF, COFF, COFF, COFF, CON},
{COFF, COFF, COFF, COFF, COFF, COFF, COFF, COFF, CON},
{COFF, COFF, COFF, COFF, COFF, COFF, COFF, COFF, CON}
};
// Start from 7
const int sixthFrame[3][9] = {
{COFF, COFF, COFF, COFF, COFF, COFF, CON, COFF, COFF},
{COFF, COFF, COFF, COFF, COFF, COFF, CON, COFF, COFF},
{COFF, COFF, COFF, COFF, COFF, COFF, CON, COFF, COFF}
};
const int seventhFrame[3][9] = {
{COFF, COFF, COFF, CON, COFF, COFF, COFF, CON, COFF},
{COFF, COFF, COFF, CON, COFF, COFF, COFF, CON, COFF},
{COFF, COFF, COFF, CON, COFF, COFF, COFF, CON, COFF}
};
const int eighthFrame[3][9] = {
{CON, COFF, COFF, COFF, CON, COFF, COFF, COFF, CON},
{CON, COFF, COFF, COFF, CON, COFF, COFF, COFF, CON},
{CON, COFF, COFF, COFF, CON, COFF, COFF, COFF, CON}
};
const int ninthFrame[3][9] = {
{COFF, CON, COFF, COFF, COFF, CON, COFF, COFF, COFF},
{COFF, CON, COFF, COFF, COFF, CON, COFF, COFF, COFF},
{COFF, CON, COFF, COFF, COFF, CON, COFF, COFF, COFF}
};
const int tenthFrame[3][9] = {
{COFF, COFF, CON, COFF, COFF, COFF, COFF, COFF, COFF},
{COFF, COFF, CON, COFF, COFF, COFF, COFF, COFF, COFF},
{COFF, COFF, CON, COFF, COFF, COFF, COFF, COFF, COFF}
};
for (int i = 0; i < 4; i++)
{
displayFrame(firstFrame, delayTime);
displayFrame(secondFrame, delayTime);
displayFrame(thirdFrame, delayTime);
displayFrame(forthFrame, delayTime);
displayFrame(fifthFrame, delayTime);
displayFrame(sixthFrame, delayTime);
displayFrame(seventhFrame, delayTime);
displayFrame(eighthFrame, delayTime);
displayFrame(ninthFrame, delayTime);
displayFrame(tenthFrame, delayTime);
}
}
/*
#####################################################
#####################################################
#####################################################
######################################################
#######################################################
*/
// Takes a frame and displays it for the length of animation delay (in ms)
void displayFrame(const int frame[3][9], int animationDelay)
{
// Serial.println("displayFrame called");
unsigned long currentTime = millis();
while (1) // Do this continually until animationDelay is met
{
int i, j;
// Rows
for (i = 0; i < 3; i++)
{
// Turn correct ROW on
digitalWrite(row[i], RON);
// Columns
for (j = 0; j < 9; j++)
{
// Turn correct COLUMNS on
digitalWrite(col[j], frame[i][j]);
} // End J loop
povDelay;
digitalWrite(row[i], ROFF);
} // End I Loop
if ((millis() - currentTime) >= animationDelay)
{
delay(10);
// Cleanup, Turn all OFF
for (int i = 0; i < 9; i++)
{
digitalWrite(col[i], COFF);
}
for (int i = 0; i < 3; i++)
{
digitalWrite(row[i], ROFF);
}
delay(10); // timefix?
return;
} // End time test if statement
}
}
void loop()
{
diag(350);
sideToSide(350);
frontToBack(350);
// for (int i = 0; i < 9; i++)
// {
// digitalWrite(col[i], CON);
// }
// for (int i = 0; i < 3; i++)
// {
// digitalWrite(row[i], RON);
// delay(250);
// digitalWrite(row[i], ROFF);
// }
}
और त्रुटि है कि मौजूद है::
c:/users/dan/appdata/local/energi~1/hardware/tools/msp430/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe:
क्षेत्र `राम '142 बाइट्स से overflowed collect2: ld 1 से बाहर निकलें स्थिति लौटा
यहाँ कोड की सम्पूर्णता अगर जरूरत है
बस तर्क को भी घोषित करें। –
@ हंसपैसेंट ओह वाह, मैं मूर्ख हूँ। धन्यवाद हंस! – Dan
यह सब सी कोड की तरह दिखता है, और आपने इसे सी टैग किया है, लेकिन आपकी फ़ाइल का नाम '.cpp' है। उसके साथ क्या है? –