From b9ccf4f782b721ee5ab01ec6c33a91fd1abe8d15 Mon Sep 17 00:00:00 2001 From: Kristin Galvin Date: Sun, 19 Jan 2020 16:20:20 -0800 Subject: [PATCH] new app called stethoscope --- apps/stetho/stetho-icon.js | 1 + apps/stetho/stetho.js | 74 +++++++++++++++++++++++++++++++++++++ apps/stetho/stetho.json | 5 +++ apps/stetho/stetho.png | Bin 0 -> 2520 bytes 4 files changed, 80 insertions(+) create mode 100644 apps/stetho/stetho-icon.js create mode 100644 apps/stetho/stetho.js create mode 100644 apps/stetho/stetho.json create mode 100644 apps/stetho/stetho.png diff --git a/apps/stetho/stetho-icon.js b/apps/stetho/stetho-icon.js new file mode 100644 index 000000000..6057036c4 --- /dev/null +++ b/apps/stetho/stetho-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+64A/AAOzxNknVl1oLHnVexOzFrtlnU6i06Eg2JrwMBGAIxaLgYuBF5IMBAARiaKAYhK1pfDAAWJFy2tLoNkxOtQAJQIBYWtAYIwBZ4xeQFwR7RMoJgW2brBsqqTMAQvVRwLaUMARftrAvVX4bZTwdYwYvWryQTRwRFTSAZgBDSOtwdeLyxKDMCITBwReR2ez1oCBMAZ7QLwK9SE4NlsmJxIpCVYRgO1uCUSVlnQACFIIYBMCC9T2dkFwYACLQROCM4ZeKXqOJnUWAAItBmhhBMAggLLwOCXqKNBFoYACMAiABMBOtLyfXrwuGF4iBMLwWnFyAvBFwwvGcIQwGLwQKHX5ouFmiJBF4RgKLyoWBL47vCcYwIF05eU6+zxKRBLwodFGAgACFwLsSEAgwDrwuHWwYwBwenGoKNBF6owDrAuIGAYrCvgzBFy7jDryqLGAV8viTCFy7CBwZeBIB1804tYAAQvQSIJdZF6l8F9unF/4vPwYvtwQv/04vc1ovBD5gvv0+h0/RF7uCF5fR0+gF7vRwd8EBaOB0KOcEIV8SBReBRzxRDMBReC04udMAYwIL0QkDGAWt6IAC07sfGA+gE4IAD0JdBF8YwEAAhmCF0TnEFoS7iAE4=")) \ No newline at end of file diff --git a/apps/stetho/stetho.js b/apps/stetho/stetho.js new file mode 100644 index 000000000..84658e85f --- /dev/null +++ b/apps/stetho/stetho.js @@ -0,0 +1,74 @@ +Bangle.setLCDPower(1); +Bangle.setLCDTimeout(0); +Bangle.ioWr(0x80,0) +x=0; +var min=0,max=0; +var wasHigh = 0, wasLow = 0; +var lastHigh = getTime(); +var hrmList = []; +var hrm; + +function readHRM() { + var a = analogRead(D29); + var h = getTime(); + min=Math.min(min*0.97+a*0.03,a); + max=Math.max(max*0.97+a*0.03,a); + y = E.clip(170 - (a*960*4),100,230); + if (x==0) { + g.clearRect(0,100,239,239); + g.moveTo(-100,0); + } + /*g.setColor(0,1,0); + var z = 170 - (min*960*4); g.fillRect(x,z,x,z); + var z = 170 - (max*960*4); g.fillRect(x,z,x,z);*/ + g.setColor(1,1,1); + g.lineTo(x,y); + if ((max-min)>0.005) { + if (4*a > (min+3*max)) { // high + g.setColor(1,0,0); + g.fillRect(x,230,x,239); + g.setColor(1,1,1); + if (!wasHigh && wasLow) { + var currentHrm = 60/(h-lastHigh); + lastHigh = h; + if (currentHrm<250) { + while (hrmList.length>12) hrmList.shift(); + hrmList.push(currentHrm); + // median filter + var t = hrmList.slice(); // copy + t.sort(); + // average the middle 3 + var mid = t.length>>1; + if (mid+2239)x=0; +} + +setInterval(readHRM,50); diff --git a/apps/stetho/stetho.json b/apps/stetho/stetho.json new file mode 100644 index 000000000..239fffb68 --- /dev/null +++ b/apps/stetho/stetho.json @@ -0,0 +1,5 @@ +{ + "name":"Stethoscope","type":"app", + "icon":"*stetho", + "src":"-stetho" +} diff --git a/apps/stetho/stetho.png b/apps/stetho/stetho.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f183d963dca185ae78be7a784bbe61e3b8eb84 GIT binary patch literal 2520 zcmV;}2`Bc6P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D32jM4K~z{r%~(lq z9LE*zrFx%c&%&7@DGgVVl4UK_#aUn=7ayEc00X)Cn*X6+66D~M5g-Nv=MW>d5ZKls zvYkkxXes1yof*!)_4HEJRh2j7NFk*rIi#T=9|~k+>UGywufDf*i=1=e{|T2N1UG~c zKk%YQRsZv?-d2~~nbbd8o>F-X*?RY@qMNtSub1s#EhI7)(iQQ@CKeYa z#JI54#oyO_VDq>hthWM>@Ed9Ew=2$v^Y&s=Jz@lAEid|Z*ZaeFt+k40%F;qoyF0C4 z&+0#$w+bl*jhMd@{3~5G+;mqKDb<;Puod7mvOe@s+l&5H3Z7L0N0Z)})@3ey^W1&#xR;+$e)mE4 z-jX>oJ%$SqY6bL@_0FfyJ696QN6XIpS4@y_5OKmd2**Ma{FP1$1C$gH)(a?jE};#% zZrAYdzi8}~g5Uf+_3;OpBeUbUz>y6IE4yS6@uigZZbr)*$Wo+?A?Hn$)@2>N&ISO# zn5vYsmB|D$6bVKlquePN664Qz{E^W~T!2u-cn~p01#kuk2p#GL2CVu9lM?`gq0OO@ zB8zELR=DU5;#GYCLcl-=)iS{k8KFasUjmc~fzMp$)@`1;;_kztW-?7l0>t-g2M$;z|PY4!) zQn1~@PpZKW6@RT3fNr2fKml4vskd{6A&EPUaJzxskd2ebfOoqa?d%4<4qYs0vsW~P z;zKir5cs1L(Dg?6*G>12&pMwzX@9oX`Fqj*cRlO}%+ck$)5ff$w0hA-HLUjuInPNz zc`#u6rLbDTNejJm%}hGzw2Cj^zkh#p`4WD_9`1X8e$o3|(Os_w#X8<;;k`By?~XP1cwZg3M4&UIbOt0V5lCr`7}0w7()L%@W0*}lskk3oDqRjfkne?wpYhbcKq%7P&Kn@WhJjems4rry&CQf zXly$Hgo1$8>tt^yjC{T@rx&hjigH#Y#ms$Q@~a&pMqFV6dO6@a3V5lBA-)349aFwO ztwW#Xdu*o?R$ByGpV9p<0c@g(cRNveFYGiT2&<(xf;4Bl>{-^ZbY>* zW`tjv(egw0oG#{bp`P?x8))kSM{$(+fkCP@0wv#Mep0E{euQsxuU;!-C8N= zS0~kkA%j<5?G=nYj~*Q0jTip@cGz!4LNpYrIHxVC&a3Y2(Wo!hc6wqiyl5;)UCKxkOh1SpMgWan~%6fkn?xf?wlXA%M}!;aZ-nK!ak9KePO&=d>_ zjUVVIaTXznEDaJdbbTSG5kKvV&MR;xu#k&HP?4mnZ-EfJ7}$mkkxx8^eR!)s=SvAx zb<(3e;JPkrCOG#pIExU}DLWzSvKYD)njRYeg=qxfO5vT~WzgK|mZVyjRMD9pQbfl= zmM-HSb=wrm_!%Bzn1@{!wkbq_>B#!TTOb5AA(=**G=l!TQ^8)B!l}h(NKg+MFs~Zn zCRG*5nnZ8KLl7v?bmnI?RT7%JxN`vSA@T3>&=LhL>h59Ep}H;GQwSMvfe=79q$~4U zF0b}0q`c;L526Ua?j&FXC)M2y-6Dp7cdjbdlp>AMt;XWKeTYITuN0OIP*P(vEI;+T zWjquUL>z@zHV)Fk9o8%2&RPf;i76$ysHqdf{_b)(|Dz}91`ccE8@KY*mxz#E&}VMx z6H^M(MM#6-n|?9uJ`ep`WaO3HduHmEuBB!1k|#C>Apmr!jbga>omYG63s`XSik(He zB@57twP|n=QJ)!;a{9KOzGoOyNIK=q#yA-FvoOfHwTVlQ2F)Ks2qox_R7sQ}cN2zm z$(~gvSB>ON-Izv0^<19M*n|KeUav_z8)5a4-+vL3HbY3T3u@-Jp1i49vx)+(Dzsxi ifeqjSg#H&0g#Q5B$@`OF9bdu#0000