29. juli 2019 - 13:24Der er
8 kommentarer og 1 løsning
Arduino. Kan ikke bruge parameter i funktion
Jeg har følgene kode hvor jeg forsøger at bruge en parameter til at ændre farven på en led strip. Funktion row1 giver fejl, row2 virker som den skal, men kunne godt tænke mg at benytte parameter fra funktionen.
Du kan ikke oversætte en streng til en konstant ved runtime, det vil slet ikke virke. Hvis du vil bruge en streng, er du nødt til manuelt at oversætte det, f.eks. med
if (color == "Red") x = CRGB::Red; else if (color == "Blue") x = CRGB::Blue;
osv. Ikke en specielt køn måde at gøre det på. Bedre vil generelt være at passe farven fra den kaldende funktion i stedet for en streng der repræsenterer det. Jeg vil gætte på farverne bare er en int, så noget a la
void row1(int color) { ... }
og så kalde den med row1(CRGB::Red) osv. Kræver dog den kaldende funktion har adgang til CRGB objektet.
void loop() { row1("Red",5000); row1("Blue",5000); } ------------------------------------------------------------------------------------------ kode som Slater forslog virker fint
void row1(String color, int waitTime){ if(color=="Red"){ leds_1[0] = CRGB::Red; leds_2[0] = CRGB::Red; leds_3[0] = CRGB::Red;} else if(color=="Blue"){ leds_1[0] = CRGB::Blue; leds_2[0] = CRGB::Blue; leds_3[0] = CRGB::Blue;} Serial.println(color); FastLED.show(); delay(waitTime); } void loop() { row1("Red",5000); row1("Blue",5000); } --------------------------------------------------------------------------- Efterfølgene kode virker også. Kan i sige hvilken der er bedst? hvis der er en af dem der er det.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.