INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Array
03.04.2020, 17:48
Beitrag #1
Array
In meinem code habe ich seither 4 Farben an eine Funktion übergeben.

Code:
case  1: Lauflicht(rot, gruen, blau, gelb); break;

void Lauflicht(uint32_t Color0, uint32_t Color0, uint32_t Color0,uint32_t Color0){

strip.setPixelColor(i, Color3)


Jetzt benötige ich "strip.setPixelColor(i, Color[x])", möchte aber möglichst den Aufruf weiterhin über

Code:
case  1: Lauflicht(rot, gruen, blau, gelb); break;

beibehalte, da es im Hauptprogramm übersichtilcher ist als

Code:
case  1: Lauflicht(); color[0]=rot; color[1]=gruen; color[2]=blau; color[3]=gelb; break;

Das untere finde ich wieder etwas doppel gemoppelt. Wie könnte ich es besser machen und weiterhin eine kurze Zeile im case behalten.

Code:
case  1: Lauflicht(rot, gruen, blau, gelb); break;

void Lauflicht(uint32_t Color0, uint32_t Color0, uint32_t Color0,uint32_t Color0){
  uint32_t color[5];
  colora[0] = Color0;
  colora[1] = Color1;
  colora[2] = Color2;
  colora[3] = Color3;
}

Harry

Wenn etwas nicht funktioniert -> Kondensator hinzufügenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2020, 17:52
Beitrag #2
RE: Array
Diese Zeile ist Unsinn. Du willst garantiert nicht 4 mal die gleiche Variable übergeben. Außerdem sollte da der Kompiler meckern:
Code:
void Lauflicht(uint32_t Color0, uint32_t Color0, uint32_t Color0,uint32_t Color0)

Ansonsten habe ich nicht verstanden, was Du machen willst. Kannst Du das nochmal ausführlicher und klarer erklären?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2020, 17:57
Beitrag #3
RE: Array
(03.04.2020 17:52)Tommy56 schrieb:  Diese Zeile ist Unsinn. Du willst garantiert nicht 4 mal die gleiche Variable übergeben. Außerdem sollte da der Kompiler meckern:
Code:
void Lauflicht(uint32_t Color0, uint32_t Color0, uint32_t Color0,uint32_t Color0)

Vertippt, ich meinte natürlich:
Code:
void Lauflicht(uint32_t Color0, uint32_t Color1, uint32_t Color2, uint32_t Color3)

Harry

Wenn etwas nicht funktioniert -> Kondensator hinzufügenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2020, 19:08
Beitrag #4
RE: Array
Ich möchte an eine Funktion 4 Werte übergeben und die in einer Schleife benutzen.

Code:
void (color[0], color[1], color[2], color[2]);

for(x=0; x<4; x++){
  strip.setPixelColor(Pixelnummer, color[x])


Beim Aufruf der Funktion möchte ich nicht die 4 Werte in ein Array schreiben sondern an die Funktion übergeben und diese schreibt sie in das Array. Ich könnte das Array Zentral am Anfag definieren und dann so aufrufen, dann müsste ich die Werte nicht per void übergeben.

Code:
case  1: Lauflicht(); color[0]=rot; color[1]=gruen; color[2]=blau; color[3]=gelb; break;

Da ich den Aufruf aber des öfteren benötige und es auch nicht nur 4 Werte sind wird das ganze schnell übersichtlich. Aus diesem Grund würde ich mein jetziger Aufruf gerne beibehalten:

Code:
case  1: Lauflicht(rot, gruen, blau, gelb); break;

Nehme ich die Werte aber als:

Code:
void Lauflicht(uint32_t Color0, uint32_t Color0, uint32_t Color0,uint32_t Color0)
entgegen kann ich die 4 Farben nicht in einer Schleife hochzählen lassen.

Harry

Wenn etwas nicht funktioniert -> Kondensator hinzufügenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2020, 19:16
Beitrag #5
RE: Array
Ich weiß nicht, ob ich Dich richtig verstanden habe, Deine Erklärung wirkt etwas konfus.
Übergib doch einfach ein Array und die Länge:

Code:
uint32_t myArray[] = {1,2,3,4,999};

void lauflicht(uint32_t *arr, size_t len) {
  for (uint16_t i=0; i<len; i++) {
    ??? = arr[i];
  }
}

// Aufruf
lauflicht(myArray,sizeof(myArray)/sizeof(myArray[0]));

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2020, 19:47
Beitrag #6
RE: Array
Ist nicht so einfach zu erklären, aber so im groben hast du mich verstanden.

Das Problem ist das die Reihenfolge der Farben nicht immer gleich sind, ich aber nur mit einem Array arbeiten möchte.
Code:
uint32_t rot   = strip.Color(255,   0,   0);
uint32_t gruen = strip.Color(  0, 255,   0);
uint32_t blau  = strip.Color(  0,   0, 255);
uint32_t gelb  = strip.Color(255, 255,   0);
uint32_t weiss = strip.Color(255, 255, 255);

case  1: Lauflicht(rot, gruen, blau, gelb); break;
case  1: Lauflicht(rot, blau, gruen, gelb); break;
Das Array soll erst bei der Auswahl mit den passenden Werte geladen werden.

Harry

Wenn etwas nicht funktioniert -> Kondensator hinzufügenSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.04.2020, 20:06
Beitrag #7
RE: Array
Dann mache es doch ganz anders.
Lege Dir ein Array mit Deinen Farben an:
Code:
// Deine Farben:
uint32_t farben {strip.Color(255,   0,   0),
                        strip.Color(  0, 255,   0),
                        strip.Color(  0,   0, 255),
                        strip.Color(255, 255,   0),
                        strip.Color(255, 255, 255)
                        };
enum farbe {rot,gruen,blau,gelb weiss}; // rot = 0, gruen = 1 usw.

uint32_t aktuell[4];
aktuell[0] = farben[rot];
aktuell[1] = farben[gelb];
aktuell[2] = farben[gruen];
aktuell[4] = farben[weiss];

void lauflicht(uint32_t *arr) {
  for (uint16_t i=0; i<4; i++) {
    ??? = arr[i];
  }
}

Oder bei Deinem Beispiel:
Code:
aktuell[0] = blau;
usw.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Messwerte im Array süffi1234 19 1.232 09.12.2020 17:18
Letzter Beitrag: Guekard
  Auf Array einer Klasse zugreifen Nichtraucher 16 1.089 25.11.2020 20:26
Letzter Beitrag: Tommy56
  Verständnisfrage 2D Array hugofant 2 530 06.10.2020 07:35
Letzter Beitrag: hugofant
  Array Werte in einen String ChriscoGT 3 1.128 12.05.2020 15:41
Letzter Beitrag: Tommy56
  Vorlage für Char Array über Serielle Schnittstelle Luis90 2 1.200 08.03.2020 18:05
Letzter Beitrag: hotsystems
  Bit Array Groomit 3 1.013 24.01.2020 19:27
Letzter Beitrag: Tommy56
  atof array ausgeben Pet 6 1.952 27.11.2019 13:12
Letzter Beitrag: Pet
  wie kann ich ausgangspins aus einem array steuern? uwe.z 4 1.433 04.11.2019 21:46
Letzter Beitrag: Holzauge
  Falsche Werte im Array semmelsamu 6 1.449 27.10.2019 18:45
Letzter Beitrag: semmelsamu
  2D String Array DirkTH 5 1.702 08.10.2019 09:07
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste