too many arguments to function

Hey,
ich schreibe derzeit einen Code für ein Schulprojekt. Es handelt sich um einen Cocktailmixer. Im Prinzip soll es so funktionieren, dass ein Glas unter verschiedenen Ventilen durchfährt und so verschiedene Flüssigkeiten miteinander vermischt.
Dort tritt dann auch benannter Fehler (too many arguments to function) auf. Wenn ich das richtig interpretiere, habe ich zu viele Variabeln verwendet. Was mich allerdings stutzig macht, ist die Tatsache, dass der Fehler erst auftritt, nachdem die Variablen schon ungefähr 200mal verwendet wurden.

Ich füge hier mal die betreffende Codezeile ein

  delay(0,23 * gg);          // 23 %Multivitamin

Und hier mal den setup void und alle Variablen.

void setup() {

  ESC.attach(mot); //Servoausgang festlegen
  
//Pinmodes festlegen

  //Extrafunktionen
  pinMode(KontrollLED, OUTPUT);       //Kontrollled
  pinMode(redPin, OUTPUT);            //rot
  pinMode(greenPin, OUTPUT);          //Grün
  pinMode(bluePin, OUTPUT);           //Blau

  //ventile
  pinMode(ap, OUTPUT);                //Apfel
  pinMode(co, OUTPUT);                //Cola
  pinMode( og , OUTPUT);              //Ogange
  pinMode(ki, OUTPUT);                //Kirsche
  pinMode(zi, OUTPUT);                //Zitrone
  pinMode(wa, OUTPUT);                //Wasser
  pinMode(mu, OUTPUT);                //Multivitamin

  //Motor
  pinMode(mot, OUTPUT);               //Motor

  //Tastenfeld
  pinMode(A, INPUT); //hogizontal
  pinMode(B, INPUT);
  pinMode(C, INPUT);
  pinMode(D, INPUT);
  pinMode(I, INPUT);  //vertikal
  pinMode(II, INPUT);
  pinMode(III, INPUT);
  pinMode(IIII, INPUT);
}
//Definition Variablen für Getränkeventile
int ap =53;                //Apfel
int co =52;                //Cola
int og =51;                //Ogange
int ki =50;                //Kirsche
int zi =49;                //Zitrone
int wa =48;                //Wasser
int mu =47;                //Multivitamin


//Grundsätzliche Variablen Definitionen
int ent = 12;               //Abstand zwischen Abfülleinrichtung in Ticks
int gg = 12;                //Glasgroesse in Füllzeit/Glas
int mot =12 ;               //Motog
int bac = 12;               //Geschwindigkeit zurueck
int vog =12 ;               //Geschwindigkeit vor
int sto = 12;               // Anhalten


//Definition der Variablen der Eingänge fuer Tastenfeld
int A =26; //hogizontal
int B =25;
int C =24;
int D =23;
int I =30; //vertikal
int II =29;
int III =28;
int IIII =27;


//Definition von Pins für Zusatzfunktionen
int redPin = 4;
int greenPin = 6;
int bluePin = 5;
int KontrollLED =13;

unsigned long colourFadeTime = 0;
unsigned long colourFadeDelay = 3000;
int redfade;


//Definition und Einfügen des Keypads
#include <Keypad.h>
const byte COLS = 4;          //hogizontale Grose
const byte ROWS = 4;          //vertikale Grose

char hexaKeys[ROWS][COLS]={   //Definition der Zeichen
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
byte colPins[COLS] = {A, B, C, D};       //Zuogdnung der Pins hogizontal
byte rowPins[COLS] = {I, II, III, IIII}; //Zuogdnung der Pins vertikal
char pressedKey;                         //Zuogdnung einer Variabel für gedrückte Taste

Keypad myKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //das Keypad wird ab jetzt mit myKeypad bezeichnet

//Servo einbinden
#include <Servo.h>
Servo ESC;                        //Servo erstellen

Hier auch nochmal der gesammte Void in dem das Problem auftritt

void alkoholfrei_risingsun() {
  digitalWrite(ap, HIGH);   // 12,5% Apfel
  delay(0, 125 * gg);
  digitalWrite(ap, LOW);
  ESC.write(vog);
  delay (2 * ent);          //2 Schritt
  ESC.write(sto);
  digitalWrite ( og , HIGH); // 10,5 ogange
  delay(0, 105 * gg);
  digitalWrite (og, LOW);
  ESC.write(vog);
  delay(1 * ent);           //1 Schritte
  ESC.write(sto);
  digitalWrite (ki, HIGH);
  delay(0, 35 * gg);          // 35,5 Kirsche
  digitalWrite (ki, LOW);
  ESC.write(vog);
  delay(1 * ent);           // 1 Schritte
  ESC.write(sto);
  digitalWrite (zi, HIGH);
  delay(0, 105 * gg);          // 10,5 Zitrone
  digitalWrite (zi, LOW);
  ESC.write(vog);
  delay(2 * ent);           //2 Schritte
  ESC.write(sto);
  digitalWrite (mu, HIGH);
  delay(0,23 * gg);          // 23 %Multivitamin
  digitalWrite (mu, LOW);
  ESC.write(bac);
  delay(6 * ent);           //-6 Schritte
  ESC.write(sto);
}

Ich würde mich sehr darüber freuen, wenn mir jemand helfen könnte, dieses Problem zu beseitigen. Danke schonmal im vorraus
Jo02ny

Hier ist der Fehler:

delay(0,23 * gg);          // 23 %Multivitamin

"0,23" erkeent er als 2 Werte.

Nimm mal einen Punkt.

Ob er allerdings einen Float verarbeiten kann, bezweifel ich.

Ob er allerdings einen Float verarbeiten kann, bezweifel ich.

Die Multiplikation ist dann float, aber für das delay() wird nur ein ganzzahliger Wert genutzt.
"Er" kann es also verarbeiten.
Aber ob das gewünschte dabei passiert, kann ich nicht sagen.

combie:
Die Multiplikation ist float, aber für das delay() wird nur ein ganzzahliger Wert genutzt.
“Er” kann es also verarbeiten.

Ok, das habe ich bisher nicht probiert.
Dennoch wird er sich am Komma stören.

Vielen Dank. :slight_smile:
Dann wäre dieses problem gelöst.

Mal sehen ob das dann in der Praxis so funktionieren wird mit dem delay. Die IDE beschwert sich auf jeden fall moch nicht .

Beachte dass delay() die Zeit in Millisekunden möchte

Generell solltest du Variablen und Konstanten unterscheiden. Wenn sich ein Wert nie ändert dann ist es keinen Variable, sondern eine Konstante. Diese deklariert man als “const [Datentyp]”

HotSystems:
Dennoch wird er sich am Komma stören.

Deinen Komma Ersatzstoff, den Punkt, hatte ich gedanklich schon eingebaut.

combie:
Deinen Komma Ersatzstoff, den Punkt, hatte ich gedanklich schon eingebaut.

Das weiß ich ja.
Das war nur eine zusätzliche Information für den TO.