Grafiek op Nextion HMI

Hier heb je ff een test programma met een ringbuffer.

/*
    Name:      SDArray.ino
    Created:   6-12-2018 08:41:43
    Author:     nico verduin
    Brief:        Eenvoudige manier om met een array  een ringbuffer te maken
*/

// programma constantes
const uint16_t ARRAY_SIZE = 10;		// we gaan een array maken van 10 entries

// globale variabelen
uint16_t beginIndex   = 0;			        // startpunt van de ring buffer
uint16_t eindIndex	= 0;			        // eindpunt van de ring buffer
double   array[ARRAY_SIZE];			// creer onze tabel

/*
 * @name addEntry
 * @param value double die aan de tabel wordt toegevoegd
 * @brief voegt een waarde toe aan de tabel. Als de tabel vol is, wordt de oudste waarde overschreden 
 */
void addEntry(double value) {

	// voeg de waarde toe op de laatste plek
	array[eindIndex] = value;

	// verhoog naar nieuwe laatste plek en loop around als we op het einde zitten
	eindIndex++;
	eindIndex = eindIndex % ARRAY_SIZE;			// meest eenvoudige loop around
	beginIndex++;
	beginIndex = beginIndex % ARRAY_SIZE;
}

/*
* @name getEntry
* @param index index in de array waarvan we de waarde willen hebben
* @returns double
* @brief Geeft de waarde terug uit de tabel relatief tov de eerste waarde.
*/
double getEntry(uint16_t index) {

	// reken de index om naar de juiste plek in de array
	uint16_t berekendeIndex = beginIndex + index;

	// modulo nemen en restwaarde gebruiken
	berekendeIndex = berekendeIndex % ARRAY_SIZE;

	// en geef de waarde maar terug
	return array[berekendeIndex];;
}

/*
 * @name printArray
 * @brief  print de tabel uit
 */
void printArray() {

	char floatAsString[6];		// buffer voor float conversie
	for (uint16_t i = 0; i < ARRAY_SIZE; i++) {
		dtostrf(getEntry(i), 5, 1, floatAsString);
		Serial.print(floatAsString);
		Serial.print(" ");
	}
	Serial.println();
}
/* 
 * @name setup()
 * @brief Initializes the program
 */
void setup()
{
	// initialiseer Serial
	Serial.begin(115200);

	// initialiseer onze tabel
	for (uint16_t i = 0; i < ARRAY_SIZE; i++) {
		array[i] = 0.0;
	}

	// vul onze tabel met wat random waarden
	randomSeed(analogRead(0));
	for (uint16_t i = 0; i < ARRAY_SIZE; i++) {
		addEntry((double)random(0, 99) / 10.0);
	}

	// print de array
	printArray();

	// voeg nu 5 nieuwe waardes toe
	for (uint16_t i = 0; i < 5; i++) {
		addEntry((double)random(0, 99) / 10.0);

		// en print de tabel elke keer opnieuw uit
		printArray();
	}

}

// Add the main program code into the continuous loop() function
void loop()
{


}