-
@d3nd3-o0 - thanks for this detail - I will go through it and reply properly, but it might be tomorrow evening or the one after. A couple of quick thoughts:
I will check the ID from the sensor - I was starting to wonder if maybe I have a different sensor (I only purchased the Bangle2 recently)
For me, a LED current value of 15 seemed about right - the automatic adjuster varied it from about 13 to 22, so our watches do seem to be behaving differently if you had to use a much lower current (unless our skin colours are very different maybe - that might have an effect, so could be another reason for needing automatic current control for different users.).
My copy of the app store is very minimalist on purpose - I am thinking of pointing users of my seizure detector app to it if I can get the heart rate measurement working reliably, and I only want them to install apps that I now will not interfere with the seizure detector (some users like to fiddle.....).
Alas, I had to disable the graph drawing part of my little HRM test app because drawing to the screen seemed to take such a long time (over 1 second), and it blocked the HRM measurement while it was happening - it seems that the HRM measurements are not interrupt driven so if I want to achieve 40ms sample period I have to be very careful about not doing too much.... My little app is based on one of the others in the app store - I modified it to try to make it easier to try out different settings (and the idea was to have a graph at the same time to see the effect in real time). I don't get on very well with javascript so had a bit of a sense-of-humour failure at it and de-scoped my intentions for the test app!
Regards
Graham.
@Graham_Jones My sensor only begins to work at
LedCurrent : 7
, I used your app and have to swipe down until its 7, else I get readings of0
. Strange you don't have that? unless its lighting related? Even 7 is sometimes too high, requirement seems to vary.Also your app, I can't see a graph, its empty below it.
It seems that the
photodiode
reading increases the closer to 0 I go with LED current.LedCurrent: 0 , Average: 5800
LedCurrent: 1 , Average: 5000
LedCurrent: 2, Average: 3200
LedCurrent: 3, Average: 1600
LedCurrent: 4, Average: 800
Some kind of effect like that. Its interesting that, I didn't notice this before, thanks to your app :)
I think the real max value is 8190, despite it being stored in a 16 bit short?
Probably why
auto adjust ON is the best
. Hopefully its keeping it within good bounds? Like sometimes my ledCurrent: 0 creates too high values ,so it only reads 8190 cos of some clamp somewhere.
Based on this idea, perhaps the target
photodiode
value should be half way between 0 and 8190 ,8190/2 == 4095
I will try in different lighting condition. Even in dark room, the conditions are same for me. The 0x80 last bit of the LedCurrent value is a PpgGain btw, so at values between 129->136, I get some numbers , but it seems gain is bad because the swings are higher so you need to adjust led more often.
Would be nice to see if @user140377 has anything similar to this ( the low LED current requirement ), we could compare to figure if any of our bangles are different/defective.
What I like others to test:
To be clear:
Also, confirm your output of :
Bangle.hrmRd(0)
is33
, confirming you have thevc31B
device and not thevc31
.@Graham_Jones There are hrm->csv recorder apps already on the app store (namely the "recorder" app by gordon (seems beats only), or "HRM Accelerometer event recorder" by halemmerich, your app store is a bit out of date. Just in case you did not know.
https://github.com/espruino/BangleApps/tree/master/apps/hrmaccevents
https://github.com/gfwilliams/EspruinoHRMTestHarness