From e526cf6a8acf669af3d392dae7ef08968068a827 Mon Sep 17 00:00:00 2001 From: Rick Waldron Date: Thu, 7 May 2015 15:14:50 -0400 Subject: [PATCH] Joystick: Controller refactor, Esplora support. - Includes Sparkfun Joystick Shield example --- README.md | 4 +- docs/breadboard/esplora.fzz | Bin 0 -> 1007 bytes docs/breadboard/esplora.png | Bin 0 -> 186507 bytes docs/breadboard/joystick-shield.png | Bin 0 -> 236523 bytes docs/joystick-esplora.md | 70 +++ docs/joystick-pantilt.md | 32 +- docs/joystick-shield.md | 62 +++ docs/joystick.md | 39 +- eg/joystick-esplora.js | 22 + eg/joystick-pantilt.js | 32 +- eg/joystick-shield.js | 16 + eg/joystick.js | 39 +- lib/joystick.js | 306 ++++++++----- test/joystick.js | 664 ++++++++++++++++++++++++++++ tpl/programs.json | 18 +- 15 files changed, 1087 insertions(+), 217 deletions(-) create mode 100644 docs/breadboard/esplora.fzz create mode 100644 docs/breadboard/esplora.png create mode 100644 docs/breadboard/joystick-shield.png create mode 100644 docs/joystick-esplora.md create mode 100644 docs/joystick-shield.md create mode 100644 eg/joystick-esplora.js create mode 100644 eg/joystick-shield.js create mode 100644 test/joystick.js diff --git a/README.md b/README.md index aee4108b1..2a8ebb129 100644 --- a/README.md +++ b/README.md @@ -278,9 +278,9 @@ To interactively navigate the examples, visit the [Johnny-Five examples](http:// ### Joystick - [Joystick](https://github.com/rwaldron/johnny-five/blob/master/docs/joystick.md) -- [Joystick - Claw control](https://github.com/rwaldron/johnny-five/blob/master/docs/joystick-claw.md) +- [Joystick - Esplora](https://github.com/rwaldron/johnny-five/blob/master/docs/joystick-esplora.md) +- [Joystick - Sparkfun Shield](https://github.com/rwaldron/johnny-five/blob/master/docs/joystick-shield.md) - [Joystick - Pan + Tilt control](https://github.com/rwaldron/johnny-five/blob/master/docs/joystick-pantilt.md) -- [Joystick - Motor control](https://github.com/rwaldron/johnny-five/blob/master/docs/joystick-motor-led.md) ### LCD - [LCD](https://github.com/rwaldron/johnny-five/blob/master/docs/lcd.md) diff --git a/docs/breadboard/esplora.fzz b/docs/breadboard/esplora.fzz new file mode 100644 index 0000000000000000000000000000000000000000..8e82c8ce3b28c36d95c24b29c191bc5e6561d615 GIT binary patch literal 1007 zcmVT073aA&J5?w z#KPs@~&j4kX&s+^>aAjIf+A3 zhY*J(&Mf!yD4BY3G%LK6~yjf&7K!Z5?vR|wWT6;$S}-RuO&VtvUM z_jSf*&bEZO&)k6*3!6Gn=wk}Ytr>`E#T=+Ok-v6gRXS~84y-GVX$Gf)wX z);w3M1)e!!9LLkF!f3_#a-|kHa^esch}=FrcR#-QBWLUVSoI#&v;x7(_R#r=#lc9vG5CS+qc*t5*OWUD|LiP$ka@>z@$hHc z!0^(S^bbi)2Ku`nnx^C#L?PKVl`}V_a^3;yTk^ixY=t&0S z^h%bEH+v`DeO<^s&+~}s#56Rmm`szmWWuxXl5qTf6egjLi`aNVCrpy$#Bp0pN$a){ zvO*OhhEf&r&GlN5!0vsJPqe`IdqJ-VKtYl~16Kj);;H=%^!brG*jfxhpU|6zejXBg zkZhOn$^SL$9-g{|S?xPCqv3e=CZXDQy&k$*`NieXQ7%8r~bvEQ|`^pnY$m z|0_|>fs1tW7u%p;3~*1SHfpSIeN=Z<%H-*i9OV4UVKxRw_h%*=xW&CoXcP6c2?EdY zEsJOH?4OMFTzeAT6wfz~rU5uIqv9WQCz`>JVC?_?4qZ^`(Wm0@3dI12y(3IG5A000000RR9100000003okaBOdK dVJ>ERP)h{{000000RRC2H~;_up#uN_008>s+HU{= literal 0 HcmV?d00001 diff --git a/docs/breadboard/esplora.png b/docs/breadboard/esplora.png new file mode 100644 index 0000000000000000000000000000000000000000..c9cd06fb45d99064b8a972e9d2be06a35f4b922c GIT binary patch literal 186507 zcmcG02UHW?7bl7pDK?~o3W{{3cThk;dhZ}==%M$nG!ZF+fRupr4iX^LfEuNR9*QIs z=_Pa$0)fB|e&6mnyJyS!@7bN>kVlxA_uhT?-TS-0d&d|ZEfp#XMhY@AGAcDyB|S2- zO9NzN46DX_U5U7$dcXpI z8Iqa_Je(F_(cdk#{` zcz|S{1bKkeOkcfT7)Z^39l5}l2MObVg3X8Q4T>CkpcVIOEvTavwTkum)6}DE26f=h ziWr!vfmY056wqsU=gQo*&rkdSp$LXKs~a66q3YI&_bU~BC0Y0x^3%E>lWeI+DX!{Z}X+TB6dC)xROD&lCR2kBlc4*y}*^!)Nw--JbVTc0>3O5X`qE!rYNpT>G!u;SIy9r*^Mjcg?yDhRN2=PMi*(&385S?=Ze91qn5f6n2fD z>*lO0#J#4PEuW!^{`6Sy*|XdQT$lTaG3dkR^l7mDC6LQe?gCFrUS*9KCC!EyZUNcF z`-z!Vaw+)9v+sxNu?oz*NIgONPa}7rl!dvBfd{iQtc|a2ZHs~rUSeQxzrP6llgDM52|4U@W3yAZ~Rjy%fCqi|B zj-r%!UN5};V^ATKd=zS~O}+7F-HRz|4b;G#mRAYgKQW@ndKr3Q?m9&znmoxl{ik%-y-Zx2R)#MY9xyGdlh!1OUn zuQQesnQW8)PK)@@^OFJH+<)sFYKRH0(eq%*1Lx|Jv?ltZhpVZ;>iadtpvz^2_D*Y6 z;is?7-ep<+EQn=(EFusj?VOHU#WAhdIOwWLagA6NPcV6hf#~4=>v~nN9a3TP- zKukq1tG{oeAG2Vt0}3d3sO)ilXG+< z(K#7%YvuduwzCN{VpzmaQr2SL%|Q{h&`1RgEAgKR>!Z$fzo*O`tsyPyeR)`!G3X-4 zo1QycEBA(RqRnGp^UGxf_+6_PrBxJ0il$f)=>INlW660kvakh5XJ-RIZ8%Ifucf50 zFCM_~>ZVle)rMWd&7_@osd2kR0zuuhK9WsmL{u++O{)9WXxB&fMSMUsh)GOb9Jxhk zsLyrEZf&}^2y1#6;YqF)Y8&wcM*Vr%S%huqHIdOe$`=MU|6pMG>!D` zY?s~b=H}tSgwsh57+V?Hwnx~(n9I7FpX$!{#(cN8HJCrTCsUi1UWT*cSEnxR7w8s1 z2u6YZj7&|rat7!EMa(59Oi6dL4MEnqiR{%R_utsfwC&zh{S;GUZtjGU>mLockWgS9 z>ZxLlt*oYP{1EmcWqEmd1!wG?IeSQAZ$n5Q8xKZEbB`T^%J-Ohj`}?HfG(t9?l&O-)TGHGb6gqd$-g9Mr7kO3%~y zr;(QVN!CUkANmLCVbm>0=hc!1ma%nKsmzXjG6IJn@15)$DzLWn z*`^f!Aq;3Thm`QhjC3}Eqg~~*Kt7h>yb(QZ*VfxVn+`Ias&eJVZvOP}#ZNVeWes^V z`RoPFpug_zVqjAtY#etX-t{v;6EslSw#H3a!>gXFW3SLd0raFdrX%Y^P}!>8M7w=~ zrP+(1U1g^L%^HmQt64G4*X}2=wEm7#ugvBm*GpaP)%|8Vyy%3exvWT-HHDJ%I7q?sj8KTZTx}K2De?iqp;YQrE7OJWwOQT1(lN>S}YJmP_U(A|nKe2;i1aHPX zx*6lP4md;l3lVlecWT3^tM!Ra8hXh0jTEnYrWT!^jIR`=(t6N#rw%PTk-X*8zmH5w zJ!qlI?{`*ao|vk$(bYpzv`~Q1{dEqCcdK4m&>%J*v_uYDU*u@6AQMWB1re@vgr%aYy-(B^6xVmb^xlfiV%8V(?#ItmX0S|mJNI3L_ zi;W=9;{jk3_VceX1IBrFJpOyO}a0~r)F+(!4Z)C!h;m?8F6(;|Kd;c%GBMU&lN&(>j$1vG{ zups1bk3hf%1CE08|9i3jy@-tL9~p#M2~w{8{U*#y;XhdNe;)FmXvsG+!IHN&--^z_ zH5r*I`TrBm`(Fk=;!*c*o|KsdLbbplUu7M+Y=)bX<&2gc(t*OO>U8P4u5pG)0M#d=4P`N zpN-+&MPy2HayS}aUA;x5U-saVmX`MK)JN*6t0TX-3Z$o}_w@C#K*2z` zmH3NcXTJ$dl`Rsy{q8k&;=m7xE`)CP&ZFAB)A- zJD?tFrVA(O*C^|LlY^PZruCl$PXdp?dyT#Jv7udJkG zus|)j)F`cV*)%sSs3n^ zq)H1kfQP*5_yB;B6p-nzpG;DLez8_zu%D5E0Y^e-{)Z2g6EKJeLGsM_guT9hCUCMu zBLKY7Qs*$p)z#GK=IT7E#1@p4s3yIpkD^2*Vm53Q&umU2>>rz0kODaVS$89&REsLy ziG!Dv2w*gi?w?(v8u;({pL5(?y`HKGkxF^4YaaI3$0RZvoLv&;bu;c+DKJ;S$Ts}f z2i9)+MhUO@|Gf_U@0YXz+1_zyE}e`F{g2;J`LaqDuEhw}-ZCWl7{B1=?E?dk-EwfM?|V zJ2XLOc3>1?b+=-aN+Nv!Dll1?*uP@X5@C#ULIaqX-x`3z3^%c!2irCf8Gk5p{Ku>y z74_K!-2b^J(Ik4cv19LKV*)$EP9G(hf-}Vj|ef+EuKH&^C|N!;Hs{7gDlc z*H@mKl2ZU*xm(YW#2j_67?FsYmDmeKoVAd%I#HNX-UfB61aqqfbyL}LZp25bWqm7BB6hZT+eFr{u!NO{P74I2{MFOSH2LVFiMG z=7xR6&vnUY@^+yLYEK@>1$hEr!b>X<6lYQ);yI!C79xT5LzPz{LA#@>)$zJ29F zGsL#z0|Rj|T2AB<_9FyR=^BhRZ$8>=StJ~_K&l!W8#}Y@&NkwUM-Eq`>WiU9f!t0l zL9#QML#!2=GCT&-q_jnM{TMQ0#5ScuTABH=lnKkVF0Ikd^R-b{*7pD#CHM(1CgUju z$&mCcif54qHgb_xwYA@DWHYv^WnqVMdUT-Hwr_YKWM4RVS$anI(d{)HvC)0rz`|m3 zKJd(Hg&7RfUn$*r9p{r>vAT=jIc&-h_xZGx`eAr7>1iJqLm`7Q`=Zx2JiW5D3OwC=E#)G$2U(G4R*us5dr2w85@*EIv*W16 ztD0#n^n5viXLxqZ^SVQ&6xb(2r@a_%uz-A_0>|@TXNHmP%rMse zm4%n#{55-gu27|%!Ptp~R+NhRLt3Yag`0diLPqKj@9;>6AC;V21y+OpVNkAHG%Ltl zz1(1GuJ|Qjc$%*de2oJ>RR!8~OkA0HN0~0GKTy+(&TV>-Ul+7%!k4L+x0tLh!Y`lp z{(RKqAHsK)l{M5ewG7tc!VAs3OEk=pWgs)k_IEg+>6MSfmB?BtnPnOk+8N=hCV=c30>NOE_Uhc?@{ zO={Vtp-#5q718>pJZjusJtHh>eCr-k=EKPt8plvW%Og)~lNud%csff_tXb-`oYBxM zw(PiN8Y09$}|I zF`;i-Zg?44x297%#!{Im-|MFMZK5c?XT04SUVt1A+3C15MLKS#9w43E+8Wv#+ZeIb zuH4){4ux;stdF|id=i=sOeH_oc6Bd}cV!n&ntd0tODx*&yw;g8X1Qfmwb`#&C95}m za(Z0R>yl=g^kc|AdV4)*#=EWPcKnJ5+Eu3BtlhFDoa!9e^miu}Z$)hGerKdD#(hLY z^GEIHT7+=4bMWtmYSK>phsRP2{9lrQ)#~?v)+lScxDEjVc@EG4^NYd{S29eKMT-j( zpP$#GpJfn?FcdjN2c)v_qSg=~sb7L06sm)WvvhUbW7l{%5&1cjbx*C^UVhA;@>a@J zFGm-9(nn=ka#&~~hE`v%iRV~VvbDChAw0zeG78zI8lMv2%{B1xbPjm)X+%fp^0}t| zfP@(Ky}Df_8!Bp^)-1Tulcpxn%1=EsD9|{18SqJ-f|Cwtahf#jn7sVVi3D9;svxZlcH5m?U$mQAjvJ5q|bJEuHa$i)1I%}I(zjYhY zKnI49)(RPuGYd0MPnw@D`^~5qCyXBr%+66`eeo6D0oWBa zMkcbk7a0#zt|PWn06~$KaqylQIiuV&$-nZb^#WBGqf>-Axn?q-JUFKaa1w%7;>Sf- zCoI8lCW?liKfXzwXt5l}Z@-nEk~}-qP;FUN0&>9TLJL|?KjeLECJkT1t)1Ko@Smy4 zmbYi2p7Nci5IqQQCa@snvcY;!vQssY_+FVM8)IfvSuJ~bDUOEB z{mZf`Qvd`&K$I1LA3lNk=bW8c)QYhWZ)4X?lW`}9D3S8dfraN3&jDjo*f$zmO}C83 zPj0fKEp^o+$w({H1Z(talYCpf`ekiVj%AX(TRO+8xpupM|Mrn5UEerh9fLQz#Yg_o z_()GJ3&0g}+HvRAhQ+hZrsm;DBQ|c7ygV^!ENJ7-1gtVPWVeJdP;!Bt?9T^Pj;9X* zk-gAKPpypO5aPCbfa z?x3{|#8*0{Ir%DAp0wKdCZObM@L^W+ZcmFqtD_{&fGjab)3Tk5UW7d?4wKMs-e3t; z0Jho3sLNpzkDXsJ1)TBblq^T(Yq;<-Dbk-sJmBLDcvYpf^(jU>L*j)_YzA)px5O_H zRaWbzsEnl-n8YadTA?GHT!VGMn=>oB%ob?K_uVZ4)z4;LFu}5-jfR4GzyhY95R*X6R_S{&>`D zoK2wQvPhCMgAiB|#_ZAAWCa8_bsEYW*=f5L-WeMAFz%aTpK>XUkHPloy6Fz+D8xmC z7&YpZFGra|!SaidMZpD+pY5R$8tPg=5)YAxu(5x%&IRK@LP2O)7Iab74c>2BJ@f`! z%J3m$*+o&&LlWXXZX_6B#KagC_0-2%9qMdeG`jCUw_YrUiA(HegI#t8h|gvw~ zyMWt6{X<^Qvj#g(SdeBbE&m!2*%%iA>xT}e2`G)ez7ZOM4CYYGMu-~0=%@J1#e68f z@*3w)(FBk(Zhuo87h4wN-sfxDeI?jEM9pGP2_aWG+43Y*Le!t**VkF}Vq ze}5&7PCM=hPQ&JBI3sn#Ixs73Yc!M(a@$S~2HOlVmH*%wXe#zl`xN%V*<$bW(3fd+ z%QJ$prfO_(mJO43s0&r~S6nzvn_ItwOXka!H3s2%=?-P`X3%0xW7;xSc*;!3!OUXs z!dp!uE;GeF&3oWjqmMgg%VcOoFF(}3#YMG#wlbm31Gqi??vzBJ(PU0cj+wuz4Nsff zTD*gnr5yMfF#I2K!7mN{C$T4e6Rdn$g5C-+Ix>Ydw1rt=U!ftf-_xniSuaMeaa$(% z^=z-4wFu=ON&xUs7e|AFyijto@I67}O?*=4szGCPvOa6Eep5QDnjTz!kn5e7B=dW- zJG3!YNAsLjhL3!_yy!=Im|!KqMfrT*3~gW==2N%DuE;iUF=xtgA}V_qZC2V z58fKsNd?ize|qG!o%#5qn8>BC6+iC?K+u9WcBnBc9+1PsPdPc&b8|17rZ(@@$^kJe zqildz^rG_-wG&Mo*yG*Cp5mcjh8x@HIjd>|X`kXBc6pBzG1tiME>6JePW%eT*s4c- zb1cgVeK}Ry0y*XCMRCO*VRC?(3dpT%GYy?;)lL9URL^^B8mJ1Kg(~bhZB~2F-{a74 zZV`uOK%W8H;cqR#q_vfSQ;Fvvzs25|fOXHUWRBni8g1W3r@I zpf_AIUeY-)*$H!QeHAM#HDVkm?DQLaOUwB9NafL|-=q&y*#`;5{YyUslx<(X{&^~C zbEscSbxWcn-BzOJ7U$KVhnH?1Yj_39ki+0)WKn4^Mn+~DSO(9|I^9F!2(+mg)Xhx0 z=vT^o_v2QW!MVY{1c<7E_Lc--fwoX+_C-o0JtrcOwHYtPM=x%629~lXlD%i*cyN)O z)>!v8i~#(LqMumhBkOdRw4%5k?EpVp`r&r#dccfHR49s4k*qiqPEkiGt7|81lt*Q2 zUgIcNm^?p#TorIN@_rAS;&VQt~bxR4~- z?7hmI@}Vo&Bh1rH=b{4U;G4jfbX8^u;Zy4AfdCPOX}Qu*{3ck?G7Z;A!iA@aKXNoB z4wW-4deIXJy)rQ-xJie3hEq}{?M3I>aOEoM%sItbY)L3b-g>FmI&fuMt zHOfiZ=EXof{(N9lD(~X_GiEqx9 z8g2C?Ik>Y+8q#An;xVAZ>-=ep5W+2TvKJ-SBA*(({mXC;KXC}IJp*=2!KY8Aj*IQ^ zbJ_VDbdKaJAGRqSDgh$Eb$oMhj!m{AfwaQ_|DI^4wv#=f@Ads)2tZID_Z8OJ%xPAD zb$786F;Bjx;w3p#+Y*1qEF}nJ7rw3NwJ{dRImPfaV@t(pKV-bm06#JPDFU>J#VXdr zp)xHnl*~+sPuyF;1;bD7$8Fm_LM@KKx7rO-!Px#{BZ7m3E)oV@&vF8Q)wB^YjaRQHU=7AL3Czg)CSZT(mK# zQ>@*y3uNcW6jgydKER$Me+>Xc2w6c+*^<%J(QW|AdC_(X`Wm*`=$s3f5`dJrk$tbP z)xXh#redNhjlk;EZg(rmb+zE7VZ%ZF-fPY1W$Tzo734!e+qQDV*N1>0y9mQ?`sK*j zwNU5*DQM9)*rVH-g#2~wwwUJM;AIgX95T}#$&MRopB`B~3<%XZB@v5Q(-vVI0?0&L zbEsLyYteC}i$kJefR3$UDX(?%y8Qx9DT(EX06|wTiE~6N##2@^v#TIQ-HSft-DL1* zU+m)fG~4~+Rp-}4E0Xa6|6}G0;ZGJ93J9`nEB+ldw}BZpC~%aW#W6H(aP#p#NST0T zNNy^@?SxwOa)cfIKA<4l&J)!$6;oC46mNqrvQhu;cgz3|*o|i27)U@4q;RB&6PqCo z-`Pg20lU1+pHWSdB@gNO5d7w_zt#!=r*ga->$WOAP^GJQvl*4+xP#Sp-5Lg`@#;J= zDmsC>SNmki6x#W)8hOWtDx`r_Yrv-XQ6ZlAN6mX+Wo+34WRkPG9_H$^VpM6x2TFhF zS?$w}efhvMId0vIa_wqIs^(T8SJ(cX#Nc=bp znrB;rGB1Utq%1QxLZ30!>&ZNwgr zhkB`yKLMuh1M?#5bq)yB27RdM&>M`^O?$=5be@!^00~Sp9RLCLad2_0ddn`HiGOTV znA7_Zof(b9Roabt9isDMUg7ZNX^uhb;=Yzn3ORl&hx>s|2?GP819CxyZMdIKWsWZ3 zoPkBRm0WGhV(ZH3B77$|I>#KJlG$R}VM#06OsX+70t zV0%&bKqG;d*#9i8eOJv z_ioNW@t;ln@FpHCI|B7s%xKc7nuuNGW$e@v{M4?&VDxkkB*ClMePzX@gz%(vJl(|9 zzrW=Dl#QXX3_P2Y^ZPe&9Zz16ok5)KT2PZq^)auDX zZ>4Umkz}91uV$O{`#uvzvy7F#oi&x{t!GPXXi5FLT?L2gAGJ#gs+wRMgmoD9pWJ8alUr)e*kT(geuK6Z0Z!CQ)Zm%PLShV(`!}M=mmLIi0 z)-~Y1(;^#>ukSBlx zSlL$>7_3xZeuSJadYLG8Wk7I!gm}I=6mJB?R1in1okADEW7|HTzl^{l5G%WpTrRTf zYI1j>I_U<+ax*Rgbg_NH9$QJ(xYLpL3P6L@`RTc%$BR)mD{V~1s!7h~%>+`K0KTM& zn*kM9>x95ResC*)IE%K&L697fKqzZ!GR@^HzdhaDTxpE{fn3P0HHf$9U}bY$@*`ax z2voKTj~~UID2=c8{v^jD_ZV>|Q=hH0<$1nCDG_52n&JYg+zoo_fH-IbOY2YN9%<(Z z4GMl#ZbdWtVS^y{sQ|glh)a-wr5W6zi2T$KfYyoiUL${&7|21Bhf=V`>_p^5p9h!x zZ19QdR|4H2?|?&6?#}?-sxGI&SKg(2@W3+8lF17KyN$fnPh1<8@Xac}EnLfmKJ;F| ze7#q-?X0VnoE85g0vYf%YMXZy;8~XT14G;QL*=;B5V=gOeo)Nno{((70&1Mc(X@G& zE&=YIw>@3_`?L&ZwKu9s1pVRb2uD_PdVHt3pZ95~5r0ot>64BtL0&M#`d4A`vNcy`sZRS*)$B>&*r<-$s&|I*$9% z;OED$fSgE(Kx|f47BwPzbbK5;QmRkUiqHFjwNCX^%AKUM} zT?P>s#dwvSRjP|}J}H>`IER%EypfgD^+T-{V{)T0h_9f+E;)GtBqvwRmy$u+A$wz`QTV#0^Z+*blZl@g z7ki0?odKUaSRf|SZYSi~T|7gS*QrYN*vMIMf)L<%Ad!szQG1ba(uACe$O$;O=zipP zHyH5b#I14h)e}Q={Kso{YdpsM!vJMzKpDmNL%5(7Koe)KU$)LB;cbMiVh5=lwqngM zXKfAls9`*R?+jr8aot)s_;R4=X-_z(*Oz81;m+H*Bd8RmVims@vp3ycs)8WbsJ1{- z%WVM70Uj2}m#!dyuCM?gdS$*}p4XlB$zzPI{BJ0wa;Jaf%q7oMVunair99%ku+st! zVE~GwtF3xIJI-ocw;MsJ_D>X@2c(yxaUOKHZ?30(euPV?%t)LMeuHA|arW2veGmKkk5^MhjS~0~MsIk~<+s|R&{5VOj!YPM zcsd=pF*eR*p_KZ9}l+V4F3u~_~1qld)9KFn})C{{PKhJ4p