Forum: Mikrocontroller und Digitale Elektronik Arduino - 2 dimensionales Array an Funktion übergeben


von Steffen (Gast)


Lesenswert?

Abend

Ich steh grad auf m Schlauch.
Habe einen Teil Code, den ich in einer Funktion auslagern will.
1
  for (int i=0; i<5; i++)
2
  {
3
    for (int ii=0; ii<7; ii++)
4
    {
5
      if (nr3[ii][i] == 1)
6
        pixels.setPixelColor(i*12 + (7-ii), pixels.Color(1,1,1));
7
      else
8
        pixels.setPixelColor(i*12 + (7-ii), pixels.Color(0,0,0));        
9
    }
10
  }
11
  pixels.show();

nr3 ist ein Mehrdimensionales Array. Und genau das macht mir Ärger.
1
int nr3 [7][5]={{0, 1, 1, 1, 0},
2
                {1, 0, 0, 0, 1},
3
                {0, 0, 0, 0, 1},
4
                {0, 0, 0, 1, 0},
5
                {0, 0, 0, 0, 1},
6
                {1, 0, 0, 0, 1},
7
                {0, 1, 1, 1, 0}};

Wie muss ich das in eine Funktion packen und wie rufe ich es nachher im 
main-loop auf?

von Georg M. (g_m)


Lesenswert?


von Steffen (Gast)


Lesenswert?

Vielen Dank!

Hatte ich sogar schonmal so, aber muss wohl noch n Schreibfehler drin 
gewesen sein.

Hier die Lösung für andere, die das selbe Problem haben:


Definition des mehrdimensionalen Arrays:
1
int nr4 [7][5]={{1, 0, 0, 0, 1},
2
                {1, 0, 0, 0, 1},
3
                {1, 0, 0, 0, 1},
4
                {1, 1, 1, 1, 1},
5
                {0, 0, 0, 0, 1},
6
                {0, 0, 0, 0, 1},
7
                {0, 0, 0, 0, 1}};


Aufruf im Main-Loop:
1
print_(nr3, 2);


Funktion:
1
void print_ (int val[7][5], int offset)
2
{
3
  
4
  for (int i=0; i<5; i++)
5
  {
6
    for (int ii=0; ii<7; ii++)
7
    {
8
      if (val[ii][i] == 1)
9
        pixels.setPixelColor(offset + i*12 + (6-ii), pixels.Color(1,1,1));
10
      else
11
        pixels.setPixelColor(offset + i*12 + (6-ii), pixels.Color(0,0,0));        
12
    }
13
  }
14
  pixels.show();
15
}

von Einer K. (Gast)


Lesenswert?

Georg M. schrieb:
> Beitrag "2 Dimensionales Array an Funktion übergeben in c"

1
using DatenFeld = bool[7][5];
2
3
4
DatenFeld nr3 ={{0, 1, 1, 1, 0},
5
                {1, 0, 0, 0, 1},
6
                {0, 0, 0, 0, 1},
7
                {0, 0, 0, 1, 0},
8
                {0, 0, 0, 0, 1},
9
                {1, 0, 0, 0, 1},
10
                {0, 1, 1, 1, 0}};
11
12
void tuWasMitFeld(const DatenFeld & feld)
13
{
14
  const size_t  dim1count = sizeof(feld)/sizeof(feld[0]);
15
  const size_t  dim2count = sizeof(feld[0])/sizeof(feld[0][0]);
16
  
17
  for (int i=0; i<dim2count; i++)
18
  {
19
    for (int ii=0; ii<dim1count; ii++)
20
    {
21
      if (feld[ii][i])
22
      {
23
        pixels.setPixelColor(i*12 + (7-ii), pixels.Color(1,1,1));
24
      }
25
      else
26
      {
27
        pixels.setPixelColor(i*12 + (7-ii), pixels.Color(0,0,0));
28
      }
29
    }
30
  }
31
  pixels.show();
32
}
33
34
void setup() 
35
{
36
  Serial.begin(9600);
37
  tuWasMitFeld(nr3);
38
}
39
40
void loop() 
41
{
42
43
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.