Sida 1 av 1
8x8 matris
Postat: 20 januari 2019, 23:55:28
av GeekJoan
Alltså som relativt grön på det här så måste jag fråga för jag blir inte klok.
Har en 8x8 matris WS2812B (Neopixlar) som jag vill styra som om det vore rader och kolumner. Men alla sitter ju på rad.
Så jag tänkte äh, det här måste ju vara lätt. Så jag skrev detta:
Kod: Markera allt
int Row0[] = {0, 1, 2, 3, 4, 5, 6, 7};
int Row1[] = {8, 9, 10, 11, 12, 13, 14, 15};
int Row2[] = {16, 17, 18, 19, 20, 21, 22, 23};
int Row3[] = {24, 25, 26, 27, 28, 29, 30, 31};
int Row4[] = {32, 33, 34, 35, 36, 37, 38, 39};
int Row5[] = {40, 41, 42, 43, 44, 45, 46, 47};
int Row6[] = {48, 49, 50, 51, 52, 53, 54, 55};
int Row7[] = {56, 57, 58, 59, 60, 61, 62, 63};
X=4
Y=5
Så rad 5 kolumn 4.
OK, hämta värdet:
T=RowY[X];
pixels.setPixelColor(T, pixels.Color(128,0,0)); // T pixelplats
Men nä, det går ju inte eftersom den ser RowY som en egen variabel.
Så frågan blir då, hur kan jag sätta ett nummer på variabeln Row och sedan hämta det med tex. Row(Y)?
Re: 8x8 matris
Postat: 20 januari 2019, 23:58:53
av papabear
typ så:
int Rows[][] = {{0, 1, 2, 3, 4, 5, 6, 7},
{8, 9, 10, 11, 12, 13, 14, 15},
{16, 17, 18, 19, 20, 21, 22, 23},
{24, 25, 26, 27, 28, 29, 30, 31},
{32, 33, 34, 35, 36, 37, 38, 39},
{40, 41, 42, 43, 44, 45, 46, 47},
{48, 49, 50, 51, 52, 53, 54, 55},
{56, 57, 58, 59, 60, 61, 62, 63}};
Re: 8x8 matris
Postat: 21 januari 2019, 00:02:37
av GeekJoan
Å så hämta värdet med: R[Y][X] ?
exit status 1
declaration of 'Rows' as multidimensional array must have bounds for all dimensions except the first
Re: 8x8 matris
Postat: 21 januari 2019, 00:03:54
av Zkronk
Måste man inte alltid specificera den andra dimensionen i 2-dimensionella C-arrayer?
Yes, du hämtar och sätter värden med Rows[5][4] t.ex.
Re: 8x8 matris
Postat: 21 januari 2019, 00:06:13
av papabear
Ja.
(Rows[y][x])
edit:
tänkte skriva att jag vet inte om det kan vara så att du måste ange storlekn, men det verkar det ju som att du måste.
Re: 8x8 matris
Postat: 21 januari 2019, 00:08:52
av sodjan
Det blir kanske lite tydligare om man skriver:
Kod: Markera allt
int PixelArray[][] = {
{0, 1, 2, 3, 4, 5, 6, 7},
{8, 9, 10, 11, 12, 13, 14, 15},
{16, 17, 18, 19, 20, 21, 22, 23},
{24, 25, 26, 27, 28, 29, 30, 31},
{32, 33, 34, 35, 36, 37, 38, 39},
{40, 41, 42, 43, 44, 45, 46, 47},
{48, 49, 50, 51, 52, 53, 54, 55},
{56, 57, 58, 59, 60, 61, 62, 63}
};
Sen blir det PixelArray[X][Y] osv...
Skillnaden är bara att det är ett namn som i alla
fall jag tycker säger mer om vad det handlar om.
Du får bestämma vilken ordning du har X och Y, det
har ingen större betydelse bara det är konsekvent...
Re: 8x8 matris
Postat: 21 januari 2019, 00:10:29
av GeekJoan
Stöter på problem. Har ett gammalt program där en "boll" studsar omkring, som jag kör i den här nya matrisen. Eftersom "bollen" inte ska studsa samma hela tiden så använder jag float tex 1.3. Det har funkat bra på den tidigare displayen. Men denna vägrar eftersom den hämtar värdet i arrayen. LOL.. Den har svårt att hämta värdet i Row[5.4][6.2]
exit status 1
invalid types 'int ∞[float]' for array subscript
Re: 8x8 matris
Postat: 21 januari 2019, 00:12:41
av sodjan
Nä, det finns ju inga värden mellan de olika värderna i arrayen...
Vad hade du förväntat dig? Bestäm vilket värde du vill ha, avrunda
din float så att det passar och "casta" till en int.
Re: 8x8 matris
Postat: 21 januari 2019, 01:13:50
av GeekJoan
Jo, det förstod till och med jag.
Re: 8x8 matris
Postat: 21 januari 2019, 09:06:21
av Icecap
Om du behöver float för riktningens skull är det ju bara att deklarera array'en som float.
Indexeringen i en array kan aldrig vara med float! Du kan ju inte heller skriva till LED#3.7 eller hur? Du skriver till LED#3 eller LED#4.
Re: 8x8 matris
Postat: 21 januari 2019, 12:52:28
av GeekJoan
Ja, jag är medveten om det.
Får kasta in en cast: X2 = (int) X;
Re: 8x8 matris
Postat: 21 januari 2019, 22:12:17
av Sado
Enklast är väl ändå att lösa det hela matematiskt, typ
med reservation för off-by-one. Om man inte vill ha en array för att få det grafiskt överskådligt förstås. Och kanske lite avrundning på det.
Re: 8x8 matris
Postat: 25 januari 2019, 00:07:41
av GeekJoan
Ska ärligt säga att jag inte riktigt vet vad jag håller på med, men jag tyckte det blev rätt coolt i alla fall.
FILM:
https://photos.app.goo.gl/9Nf4w28oYW5Kg9bX9
Re: 8x8 matris
Postat: 25 januari 2019, 00:13:25
av Sado
Fullt godkänt!
