По сути, я пытаюсь передать массив на массив светодиодов для тетриса (проект для моего класса). Основная проблема с этим состоит в том, что матрица светодиодов, на которой я пытаюсь отобразить, является Snaking из-за соединений на плате, идущих справа налево и затем слева направо.
В настоящее время я работаю с массивом светодиодов 32 x 8 . Поэтому, когда я загораюсь, светодиоды [board [0] [7]] = CRGB :: White загораются в верхнем левом углу доски. Но Leds [board [1] [0]] = CRGB :: White подсвечивает второй свет прямо под ним. Вместо этого я хочу, чтобы это началось с правой стороны, как показано выше. Это делает очень трудным кодирование квадрата 2x2 на эти источники света, так как они всегда оказываются инвертированными на матрицу светодиодов из-за этой змеи.
т.е. {1, 1, 0, 0} будет отображаться как {0, 0, 1, 1} в строке ниже.
Мне просто нужно, чтобы он отображался в строке ниже, чтобы я мог просто идти по массивам.
То есть доска [x - 1] [y];
Извините, если это немного сбивает с толку, но это лучший способ, которым я могу это объяснить. Если требуется больше разъяснений, пожалуйста, дайте мне знать.
Я в основном программировал на Java, и я впервые использую Arduino. Так что я не знаю, есть ли разница между массивами Arduino и Java.
До сих пор я пытался противостоять змеевику матрицы светодиодов, но он всегда сдвигает один ряд светодиодов вправо, когда он должен находиться непосредственно под другими светодиодами. Этот код будет ниже.
int setBoard = 0;
int board[32][8];
//trying to make tetris, so i'm starting with the oPiece.
int oPiece[2][2] = {
{ 1, 1 },
{ 1, 1 }
};
//This is my setup for the board. In here I am trying to make every other row
go from right to left instead of left to right in which it normally does.
void setup() {
for(int i = 0; i < 32; i++) {
//This outputs correctly.
if(i % 2 == 0) {
for(int z = 0; z < 8; z++) {
board[i][z] = setBoard;
setBoard++;
}
}
//This doesn't output correctly. Shifts all LEDs on every one of these
//rows over to the right by one.
if(i % 2 != 0) {
setBoard+= 8;
for(int y = 0; y < 8; y++) {
board[i][y] = setBoard;
setBoard--;
}
setBoard+= 8;
}
}
}
//displays the piece onto the 2d array by a certain y offset.
void showPiece() {
for(int x = 0; x < 2; x++) {
for(int y = 0; y < 2; y++) {
if(oPiece[x][y] == 1) {
leds[board[x][y + 6]] = CHSV(255, 75, 75);
}
}
}
FastLED.show();
}
void loop() {
showPiece();
}