Writing to sd card with a sampling rate 50ms or less? I have a sketch that writes to sd every 1s but jams at faster sampling rates. Please help?
Some tips:
- Do not open the open and close the file in every loop sequence (I think you can use the
flush
command to save/update the file. - Do not save strings, but save the raw data and pulse string. This will take 16 * 2 (raw data + 3 bytes for the pulse data = 35 bytes per 16 samples, meaning 35 bytes/samples * 20 samples/s = 700 bytes (I think your calculation of 1100 bytes is incorrect).
- Try to avoid string, and even more string concatenation. I don't know if this will be the bottleneck, but in any case String operations are expensive and for concatenation there is a chance (or is always the case) that memory needs to be allocated dynamically. Use a string buffer instead.
So it turns out the actual problem was this line of code
if ((millis() - oldTime) == 50) {
it needed to be changed to
if ((millis() - oldTime >= 50) {
I really appreciate all the help everyone gave me to get to the bottom of it and especially thankful to @Michel for handing some solid advice to someone who isn't in the know. Hopefully I will be able to repay in kind to another learner one day. :D