Mathematische Funktion

Hi guys,
ich habe eine Pumpe die ist mit einem arduino Mega und ein TFT touch verbunden.
ich will eine Funktion schreiben wo kann man sagen wie oft soll die Pumpe pro Stunde an sein?
also wenn ich 2 mal schreibe muss die Pumpe um minute 0 und 30 arbeiten.
wenn 3 Mal ==> min 00 und min 20 und min 40
wenn 4 Mal ==> min 00, min 15, min 30 und min 45
.....
habt Ihr vllt eine Idee wie kann man das als eine Mathematische Funktion schreiben?
danke im voraus

!?

N = 1, 2 ....
for ( byte n = 0; n < 60; n += 60 / N )

Fuer wie viele Minute soll die Pumpe arbeiten?
Wie erkennt das Programm die Uhrzeit?

Und bei 7 ? :slight_smile:
Ernsthaft: sieht so aus, als wolltest du auf volle Stunden synchronisieren.

void eineFunktion(byte haufigkeitProStunde)
{
	
	if (haufigkeitProStunde == 0) haufigkeitProStunde = 1;        // einmal pro Stunde darfs schon sein
		for (byte i = 0; i < haufigkeitProStunde; i++)
		{
			byte intervall=60/haufigkeitProStunde;  // wer hätt's gedacht
			Serial.print("ein in Minute ");
			Serial.println(intervall*i);
	}
}


void setup()
{
	Serial.begin(115200);
	
	eineFunktion(3);
}

void loop()
{
	
}

Warum machst Du den Umweg über die Schleife
und rechnest Du nicht gleich 60 / AnzahlProStunde?

Gruß Tommy

Na, so zum Beispiel.

Suchst du eine Funktion, die mehrere Werte zurückliefert?

Also:
f(3) liefert als Ergebnis {0,20,40}
f(4) liefert als Ergebnis {0,15,30,45}

Da ist das Problem des dynamischen Speichers, den die Funktion reservieren müsste und der irgendwann wieder freigegeben werden muss, weil Arduino-Programme grundsätzlich ewig laufen (können sollen).

Schreib die Funktion so, dass der Aufrufer den Speicher mitliefert

int aufteilen(byte anz, byte* teile) {
   // teilt 60 in anz gleiche Teile und liefert diese in einem ausreichend großen Array zurück
  // liefert 0 bzw. einen eventuellen Rest zurück
}

Hallo
eine andere Idee , Modulo.
ich hab mal ein Beispiel zusammen gebastelt , habe aber als Basis nicht Stunde sonder Minute genommen damit es schneller geht zum Testen.
Wenn es ohne Uhtzeit laufen soll muss man halt den timeticke auf Minute ändern dan passt es für eine Stunde
Heinz

const int interval = 5;// Anzahl der Ereignisse je Minute
byte sekunde, start;
bool flag;
void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);

}

void loop() {
  // put your main code here, to run repeatedly:
  timetick();
  start = sekunde % (60/interval);
  if (start == 0 && !flag) {
    flag = true;
    Serial.print("jetzt bei Sekunde "); Serial.println(sekunde);
  }
if (start !=0)flag = false;
}

// das dient in dem Beispiel nur dazu sekunde zu erzeugen
void timetick() {
  static uint32_t  altzeit;
  if (millis() - altzeit >= 1000) {
    altzeit = millis();
    sekunde++;
    if (sekunde > 60)sekunde = 0;
  }
}

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.