Grafiek op Nextion HMI

Als je op een WaveForm in een keer een grafiek wil laten zien met recente data zul je die inderdaad moeten opslaan. Dat kan in een Array (als je voldoende geheugen hebt. MAAR....
Dan moet je ook pointers gaan bij houden om een soort ringbuffer te maken. Een die het begin aangeeft en een die het einde aangeeft. Immers je gaat een array vullen beginnend bij index 0 tot het einde van de tabel. Daarna ga je weer de eerste waarde overschrijven. Dus moet je bijhouden waar het begin en het einde van de reeks is in de tabel.

Op het moment dat je de grafiek (waveform) wil laten zien bouw je hem op en ga je de array uitlezen. Ook hier maak je weer gebruik van de pointers om de juiste volgorde te houden.

Op een SD kaart kan je hetzelfde geintje doen door een bestand te maken en elke waarde weg te schrijven. Zou je dit volg-ordelijk doen dan blijft hij de data achteraan wegschrijven. Op enig moment is de SD kaart vol en dat lijkt mij niet wenselijk. Wat wel kan is tijdens de setup() een leeg bestand maken met x maal het aantal datapunten dat je wilt laten zien op de grafiek. De waarden kunnen dan gewoon 0 zijn.

Met de seek() functie kan je overal midden in de SD file prikken en de variabele lezen. Maar ook schrijven (write() functie).

Er zijn wel wat voorbeelden uit het verleden te vinden die de seek() gebruiken om te lezen. Om te schrijven zag ik niet zoveel.

Je hebt dus nog al wat zaken uit te zoeken:

  • maak een array en kijk of je het ringbuffer idee erin geimplementeerd krijg
  • schrijf de array naar het nextion scherm
  • Als dat allemaal lukt bouw om naar SD kaart
  • Kijk of je daar ook kan schrijven en lezen gebruik makend van de write(), read() en seek() functies.
  • Lukt dat ga dan pas jouw programma aanpassen.

Het had mooi geweest als iemand een keer een mooie library had gemaakt (wie weet is die er al). Het zou betekenen dat je met arrays kan werken ter grootte van een SD kaart).... op een eenvoudige Arduino.