I’m looking for a way to have a hand rotate at the speed of a user’s heart rate. The hand would start at the 12 o’clock position when the seconds’ value is at 0. Then a user could count every time it passes the 12 o’clock position in order to have a beats per minute value at the end of a minute.
I am trying to imagine what should the hand actually do, but still cant figure how do you mean it. So every time the watch face awakes, the hand should run from 12h position to the BPM value on some custom gauge, or how should the user read it?
I imagine it similar to if you were going to make it an element that blinks. The blinks count would start at 0 at the beginning of a minute and reach some number equal to the BPM at 60 seconds, then start back at 0. But to the user, it would be constantly blinking. A user could count the blinks per minute to know their BPM.
So the hand would need to start at the same place every minute. I chose 12 o’clock arbitrarily. It’s not an explicit value feature, just something additional. When the watch wakes up it wouldn’t start over, just resume its rotation wherever it was in between 0-60. The hand keeps spinning and the user counts every time it passes by the 12 o’clock position.
Hope that helps explain the idea more. Perhaps it’s just a fool’s dream.
So, the user would know actual BPM only once a minute, the last second right before the hand jumps to start? That sounds very inconvenient. Why not let it restart 3 or 4 times a minute and hold for few second after reaching the BPM number before jumping back to start?
lol if I could count all of the inconvenient features I see people come up with. I said it was something additional and not explicitly valuable. But hey, thanks for restoring my faith in the forums as a place for help and not criticism.
I tried to make something like that. ended with making the hand restart each 3 seconds. still not satisfied with the reading.
((#DWE#/60)*(#ZHR#*6)). This will rotate 1 full rotation each 60 seconds on Wake.
Keep in mind that most watches will only stay awake for 5 seconds without additional user interaction. If you want movement but still want the user to see their HR within a normal watchface wake time you can use the interpaccel function.
((interpAccelDecel(#DWE#, 0, 2, 2))*(#ZHR#*1.8))
This one rotates to the current HR (assumes a max 200 BPM in 360 degree circle).
This is my understanding of what you are looking for (I took the liberty to add a progressbar for 1 minute, so you can always start with the heartrate hand at “12” and don’t have to remember what second you started). Inspection is enabled:
I just saw your question and, in case you’re still stuck, here’s a solution:
Requirement: rotate a ‘heart-rate’ hand around a dial at a rate equivalent to the user’s current per-minute heart-rate [e.g if HR==75, HR-hand rotates around the dial 75 times per minute]
Solution: Rotation field of the ‘heart-rate’ hand == (#DWFSS#*#ZHR#)
That doesn’t seem accurate… when I test that with 60 bpm, it falls behind to around 58 bpm.
I haven’t had a chance to evaluate the results, so I’ll take your word for it and say thanks for the correction. If you don’t mind me asking , though, how did you come up with that function? It’s not often I see a modulo operator between two non-integers.
On facer you’ll see modulo used all over the place
Using it here makes sure that
#DWE#%(60/#ZHR#) will “loop” from 0 to (60/#ZHR#).
Deviding this by (60/#ZHR#) will get me a number from 0 to 1, and doing that times 360 will make sure each 0 to (60/#ZHR#) is 1 time around the clock.
Does this make sense?