Grafiek op Nextion HMI

Er zat nog een klein foutje in als de tabel nog niet helemaal is opgevuld. IS nu opgelost

/*
    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 = 15;        // 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) {
    static bool loopAround = false;                // nodig voor het afvangen als de tabel nog nooit is gevuld of deels

    // 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++;
    if (eindIndex == ARRAY_SIZE) {
        loopAround = true;                        // de tabel is vol
    }
    eindIndex = eindIndex % ARRAY_SIZE;           // meest eenvoudige loop around

    // pas doen als de tabel helemaal vol is
    if (loopAround) {
        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. Laat de laatste 3 waarden nog ff leeg
    randomSeed(analogRead(0));
    for (uint16_t i = 0; i < (ARRAY_SIZE - 3); 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()
{
}