Lees een variabele in, gebruik deze voor output.

Goedendag,

Voor een project met een Arduino gebruik ik een SD-kaart/EEPROM om variabelen in op te slaan. Deze variabelen komen in 3 even lange strings van getallen gescheiden door een ";".

Deze variabelen zijn:
RPM
DGR
DWL

Van deze variabelen is RPM een "vast gegeven" waar een bepaalde DGR en DWL variabele hoort.
Het enige waar RPM in kan verschillen is in de minimale waarde en de maximale waarde.

DGR en DWL worden door de gebruiker naar wens aangepast. De functies van DGR en DWL zijn als volgt:

DGR: het aantal ms, na de detectie van een interrupt ingang, waarna de uitgang hoog moet worden
DWL: het aantal ms dat de uitgang hoog moet blijven.

Deze 2 waarden zijn beide afhankelijk van RPM.

Dat is een korte samenvatting van het doel van mijn programma.

Nu heb ik een programmaatje geschreven dat de waarden van de SD-kaart inleest als een string en wegschrijft in een charArray. Deze waarden worden vervolgens via Serial Monitor weergegeven. So far so good.

De volgende stap is om de waarden in deze charArray's te koppelen aan elkaar en er een soort matrix van te maken waar bij RPM een waarde is die de Arduino binnen krijgt via input (puls detectie) en RPM hangt weer een bepaalde DGR en DWL die uitgeschreven moeten worden naar de uitgang.

Hoe ga ik dit het beste kunnen aanpakken?

SD-kaart:

RPM;075;100;125;150;175;200;225;250;275;300;325;350;375;400;425;450;475;500;525;550;575;600;625;650;675;700;725;750;775;800;825;850;875;900;925;950
Dgr;015;015;015;014;014;013;013;012;012;011;011;010;010;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009;009
Dwl;100;100;100;090;090;080;080;070;070;060;060;050;050;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040;040

READ_SD_TEXT.ino (1.4 KB)

zet je gegevens in een array (gesorteerd naar grootte) en dan ga je interpoleren bijv: je hebt 28 de waarde eronder is 20 en de waarde erboven is 30 dan zit je dus op 80% door (28-20)/(30-20) dan kijk je in de andere array naar die twee getallen en daar komt bijvoorbeeld bij 20 staat 100 en bij 30 staat 300.
80% daartussen is dan (300-100)*80%+100.

Ik denk dat ik de file anders zou opzetten. Gebruik kolommen (inplaats van rijen) voor RPM, DGR en DWL. Als je dan een rij inleest, heb je all gegevens die bij elkaar horen. Je kunt ze opslaan in een struct of in een class zodat alle info die bij elkaar hoort ook samen is opgeslagen.

Ik vermoed dat ik begrijp waarom je extra nullen gebruikt in je nummer; je wilt dezelfde lengte maar dat is niet echt een goed argument. Het omzetten van bv de tekst 090 naar een nummer is niet zo eenvouding omdat de eerste nul aangeeft dat het een octale representatie van het nummer is, niet een decimale representatie.