Ik ben met een projektje bezig om een "lopende" grafiek te maken op een 128x64 glcd. Nu weet ik niet echt wat de beste manier is om dit aan te pakken in picbasic.
Het is de bedoeling dat ik middels een optocoupler de draaischijf van de kwh/meter uitlees en dit "realtime" weergeef in een puntengrafiek die langzaam (zeg om de 10 seconden) verschuift.
Heeft iemand al eens eerder zo'n grafiek in picbasic geprogrammeerd en hoe kan ik het beste te werk gaan?
benleentje
Golden Member
Maak daar dan ook een flow diagram van voordat je probeert om een programma te schrijven.
In principe is het als volgt.
Tel de pulzen van de kWh meter per seconde of per 10 seconden. Een hogere tijd geeft een nauwkeuriger uitlezen. Zeker in de nacht als de schijf nog maar langzaam draait.
Ze deze waarde om naar een kWh waarde met de gegevens op de kWh meter.
Sla die op in een array of geheugen locatie op plaats nr 1.
De volgende waarde komt dan op 2 enz.
Op gewenst interval roep je alle geheugen loacaties op en schrijft deze naar het display.
Als je aan het einde van je geheugenlocaties bent ben je ook aan het einde van je display. Je kan maar op 2 manieren verder
1
Door alle geheugen locaties 1 omlaag te scuiven zodat je op de laats weer een waarde kan schrijven.
2
Door er een ring geheugen van te maken en je start adres met 1 te verhogen. De nieuwe gemeten waarde komt dan op plek 1 en je begint met uitlezen naar het display vanaf 2.
Simpel toch
ik heb dat een keer gemaakt. Kijk maar wat je hiermee kan:
For x = 0 To 127 ;vorige grafiek weghalen
UnPlot nieuw[x], x
Next x
For x = 1 To 127 ;nieuw plaats naar links shiften
nieuw[x-1] = nieuw[x]
Next x
;nieuwe waarde in laatste plaats van nieuw zetten
nieuw[127] = ((waardebuffer - 10) * 13) ;op het display een bereik van 10 tot 15V
nieuw[127] = 64 - nieuw[127] ;omdraaien omdat pixel 1 boven zit
For x = 0 To 127 ;nieuwe tekenen
Plot nieuw[x], x
Next x
Het idee is een array die getekend wordt op het scherm. Als er nieuwe data binnen is scuift alles een plaatsje op. Bij het tekenen duurt het bij hoge snelheden te lang voor een cls. Daarom wordt eerst de oude grafiek pixel per pixel gewist. Daarna komt de nieuwe.
In de winkel/webshop en even zoeken?
Aub niet dit topic kapen.