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
too many arguments to function - Warum?
21.02.2019, 22:12
Beitrag #1
too many arguments to function - Warum?
Liebes Forum,
seit einiger Zeit bastel ich bereits mit meinem RGB Streifen herum.
Nun möchte ich gerne den Streifen in vier Teile aufteilen und diese dann mit unterschiedlichen Farben leuchten lassen.
Dafür habe ich folgenden Sketch:

Code:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
#define PIN            6
#define NUMPIXELS      60

#define WHITE           0xFF,0xFF,0xFF
#define BLUE            0x00,0x00,0xFF
#define GREEN           0x00,0xFF,0x00
#define RED             0xFF,0x00,0x00

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 400;

void setup() {
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif

  strip.begin();
}

void loop() {
  disko(0, 15, GREEN);
  disko(15, 30, RED);
  disko(30, 45, BLUE);
  disko(45, 60, WHITE);
}


void disko(int sekA, int sekE, int farbe)
{
  for(int i=(sekA); i<=(sekE); i++){
  strip.setPixelColor(i, strip.Color(farbe));
  strip.show();
  }
  delay(delayval);
  
}

Ich möchte den RGB Strip nur durch in Anweisungen im "void Loop" steuern.
leider kommt immer folgende Fehlermeldung beim kompilieren:
too many arguments to function 'void disko(int, int, int)'

Kann mir jemand sagen, wo das Problem ist?

Vielen Dank.
kunbsi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 22:31
Beitrag #2
RE: too many arguments to function - Warum?
Wenn du schreibst

disko(0, 15, GREEN);

dann wird GREEN durch den von dir definierten String 0x00,0xFF,0x00 ersetzt.

Der eigentliche Aufruf lautet dann

disko(0, 15, 0x00, 0xFF, 0x00)

und das sind eindeutig 2 Parameter zu viel.

Gruss
René
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.02.2019, 23:00
Beitrag #3
RE: too many arguments to function - Warum?
Deine Farben sind größer als int. Nimm besser unsigned long (uint32_t).
Für den Rest müssten wir wissen, welche Lib Du benutzt - Link bitte.

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
22.02.2019, 16:19
Beitrag #4
RE: too many arguments to function - Warum?
Hallo,
vielen Dank für die schnelle und präzise Hilfestellung.
Funktioniert genauso wie ich mir das gewünscht habe und ich habe mal wieder was dazu gelernt.

Vielen Dank
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2019, 16:30
Beitrag #5
RE: too many arguments to function - Warum?
Prima, dass es funktioniert.

Es wäre schön, wenn Du den funktionierenden Sketch noch für die Nachwelt hier einstellst.

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
22.02.2019, 17:09
Beitrag #6
RE: too many arguments to function - Warum?
OKay, kein Problem!
Hier kommt der Sketch:

Code:
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
  #include <avr/power.h>
#endif
#define PIN            6
#define NUMPIXELS      60

// Which color do you want?
#define BLACK           0x00,0x00,0x00
#define WHITE           0xFF,0xFF,0xFF
#define BLUE            0x00,0x00,0xFF
#define YELLOW          0xFF,0xFF,0x00
#define GREEN           0x00,0xFF,0x00
#define MAGENTA         0xFF,0x00,0xFF
#define RED             0xFF,0x00,0x00
#define CYAN            0x00,0xFF,0xFF

#define GREY            0x80,0x80,0x80
#define GRAY            0x80,0x80,0x80
#define LIGHT_GREY      0xC0,0xC0,0xC0
#define LIGHT_GRAY      0xC0,0xC0,0xC0
#define PALE_GREY       0xE0,0xE0,0xE0
#define PALE_GRAY       0xE0,0xE0,0xE0
#define DARK_GREY       0x40,0x40,0x40
#define DARK_GRAY       0x40,0x40,0x40

#define DARK_BLUE       0x00,0x00,0x80
#define DARK_GREEN      0x00,0x80,0x00
#define DARK_RED        0x80,0x00,0x00
#define LIGHT_BLUE      0x80,0xC0,0xFF
#define LIGHT_GREEN     0x80,0xFF,0x80
#define LIGHT_RED       0xFF,0xC0,0xFF
#define PINK            0xFF,0xAF,0xAF
#define BROWN           0x60,0x30,0x00
#define ORANGE          0xFF,0x80,0x00
#define PURPLE          0xC0,0x00,0xFF
#define LIME            0x80,0xFF,0x00

#define sek1            0, 15   // definiert den 1 Anzeigebereich
#define sek2            15, 30  // definiert den 2 Anzeigebereich
#define sek3            30, 45  // definiert den 3 Anzeigebereich
#define sek4            45, 60  // definiert den 4 Anzeigebereich


Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int delayval = 400; // gibt den Takt an

void setup() {
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif

  strip.begin();
}

void loop() {
  disko(sek1, GREEN);   // Sektor 1 soll grün leuchten
  disko(sek2, RED);     // Sektor 2 soll rot leuchten u.s.w.
  disko(sek3, BLUE);  
  disko(sek4, WHITE);  
  disko(sek1, ORANGE);
  disko(sek2, PINK);
  disko(sek3, MAGENTA);
  disko(sek4, CYAN);
  disko(sek1, YELLOW);
  disko(sek2, GREY);
  disko(sek3, BROWN);
  disko(sek4, LIME);
}


void disko(int sekA, int sekE, int r, int g, int b)
{
  for(int i=(sekA); i<=(sekE); i++){
  strip.setPixelColor(i, strip.Color(r, g, b));
  strip.show();
}
  delay(delayval);
   for(int i=0; i<=60; i++){
  strip.setPixelColor(i, strip.Color(0x00,0x00,0x00)); // alle LED aus
  strip.show();
}
}

Meine Idee war einfach nur eine einfache Partybeleuchtung zu bauen.
Es gab Zeiten, da bestand das Diskolicht nur aus vier unterschiedlichen Lampen, die wie ein Lauflicht nacheinander an und wieder aus gingen. Ein einfacher aber mit Musik in einem Raum ein guter Effekt.
Diesen wollte ich nun einfach mit einem RGB-Strip nachbauen, da der genau das kann - aber auch noch vieles mehr und sehr preiswert ist.

Viel Spaß damit!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.02.2019, 17:13
Beitrag #7
RE: too many arguments to function - Warum?
Danke.

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
  warum läuft der Timer 6min und nicht 5? Peff 27 1.811 19.06.2021 19:39
Letzter Beitrag: Tommy56
Smile Warum kein Touch? Heiner 22 1.759 21.01.2021 21:59
Letzter Beitrag: Heiner
Question warum ist die IDE so unglaublich schlecht? spunky 12 1.427 25.11.2020 18:01
Letzter Beitrag: hotsystems
  Elektronischer Würfel (2W6) auf Arduino Nano - Warum Resets? Arduinero 7 2.157 20.01.2019 12:49
Letzter Beitrag: Arduinero
  Rundklammern setzen, aber wie und warum? HarryS 4 3.090 18.03.2018 10:25
Letzter Beitrag: HarryS
  LCD geht nicht - keine Ahnung warum?? DL1AKP 12 5.069 15.05.2017 13:17
Letzter Beitrag: DL1AKP
  Warum wird if nicht ausgeführt?? Wampo 9 7.828 05.09.2015 15:19
Letzter Beitrag: Wampo
  Kompilierfehler "in Function fp_powsodd.o" Threadbare 8 3.739 18.03.2015 19:09
Letzter Beitrag: Threadbare
  sprintf() plus scanf() : ständig Fehler, warum? HaWe 15 7.574 28.02.2015 15:31
Letzter Beitrag: HaWe
  Text 16x2LCD lauft fort, warum??? Wolfgang_2801 8 7.281 01.09.2013 16:26
Letzter Beitrag: Wolfgang_2801

Gehe zu:


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