2016-10-27 4 views
0

Ich habe ein Problem mit for-Schleifen und ein Array in Arduino IDE.Arduino - For-Schleife mit Array funktioniert nicht

  • test1 hat nicht Arbeit
  • test2 funktioniert
  • test3

funktioniert Wie kann ich test2 an die Arbeit?

void test1(){ 
    for(int i=1; i<5; i++) { 
    individualPixels[i]==1; 
    } 
} 
void test2(){ 
    individualPixels[1]=1; 
    individualPixels[2]=1; 
    individualPixels[3]=1; 
    individualPixels[4]=1; 
    } 
} 
void test3(){ 
    for(int i=1; i<5; i++) { 
    Serial.println(individualPixels[i]); //prints out 0 4 times 
    } 
} 

Vielen Dank im Voraus

+0

es ist sehr unklar, was Sie eigentlich versuchen zu tun. ohne Kontext macht es keinen Sinn. Vielleicht könnten Sie Ihren Code vollständig posten. – imjosh

+0

Ja, tut mir leid. Siehe meinen Kommentar unter – proto

Antwort

0

Sie ordnen nichts in test1 zu, Sie testen auf Gleichheit (individualPixels[i]==1 sollte individualPixels[i] = 1 sein, beachten Sie das einzelne Gleichheitszeichen).

Wie andere Kommentatoren auch erwähnt, verwendet C/C++ nullbasierte Indizierung.

1

C/C++ verwendet Null indizierte Arrays, so dass Ihre for Schleifen in test1 und test3 sollte wie folgt aussehen:

for(int i=0; i<4; i++) { 
    individualPixels[i]==1; 
} 

Test2 hat eine unerreichte Halterung und das Array Indizes sollten bei Null beginnen:

void test2(){ 
    individualPixels[0]=1; 
    individualPixels[1]=1; 
    individualPixels[2]=1; 
    individualPixels[3]=1; 
    //} this shouldn't be here 
} 
+0

Danke, in meinem Fall hat das Array 60 Indizes. Ich möchte verschiedene ansprechen. manchmal individualPixels [0] = 1; individualPixels [1] = 1; manchmal individualPixels [55] = 1; individualPixels [60] = 1; – proto

+0

Das} war ein Kopierproblem – proto

1

Die for-Schleifen beginnen mit i = 1 das sollte 0 sein, da auf ein Element in einem Array mit einem Index von 0 bis Größe 1 zugegriffen werden kann.

array[0] --- first element 
array[1] --- second element 
array[2] --- third element 
array[3] --- fourth element 

, dass abgesehen von der ersten zur Schleife (das nicht funktioniert) verwendet, um den Operator ==, der prüft, ob zwei Variablen gleich sind, und gibt dann ein: eine Anordnung mit 4 Elementen kann wie folgt zugegriffen werden Boolean als Ergebnis. Stattdessen sollten Sie eine einzelne = verwenden, die den Wert festlegen wird.

Der zweite Test hat eine extra}, die

entfernt werden soll, schlage ich vor, Sie tatsächlich starten Programmierung lernen, zum Beispiel durch ein (e) Buch zu lesen, wie Sie selbst schlechte Gewohnheiten zu lehren (Zugriff auf Arrays in ein falscher Weg), der funktionieren kann, aber möglicherweise nicht effizient ist.

0

Vielen Dank an euch alle. Ich habe ein großes Array mit 60 Indizes und möchte einige davon mit einer for-Schleife setzen. Das "==" war das Hauptproblem. Es funktioniert jetzt, wie ich es will:

void test1(){ 
    for(int i=1; i<5; i++) { 
    individualPixels[i]=1; 
    } 
} 
void test2(){ 
    individualPixels[1]=1; 
    individualPixels[2]=1; 
    individualPixels[3]=1; 
    individualPixels[4]=1; 
} 
void test3(){ 
    for(int i=1; i<5; i++) { 
    Serial.println(individualPixels[i]); //prints out 0 4 times 
    } 
}