PageSourceSearch

https://cubic9.com/assets/js/d6653c7b.chunk.js

js cubic9.com collected 2026-10-04 11:11:45 UTC 18,924 bytes, 2 lines download raw bytes

1/*! For license information please see d6653c7b.chunk.js.LICENSE.txt */
2"use strict";(self.webpackChunkcubic_9_com=self.webpackChunkcubic_9_com||[]).push([[9847],{10854:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove_xbee-d54c657e1dbcb7822ad731c4471784bd.jpg"},14204:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove01-84bcfd3bf939c8e8e0630640b84f11b6.jpg"},20814:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove03-b51d23d939fc65a6eb3ffcdecb7e3a32.jpg"},28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>o});var t=r(96540);const i={},a=t.createContext(i);function l(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),t.createElement(a.Provider,{value:n},e.children)}},51317:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>d,contentTitle:()=>s,default:()=>p,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino/PaxPowerGlove_en","title":"PaxPowerGlove_en","description":"\u65e5\u672c\u8a9e\u30da\u30fc\u30b8\u306f\u3053\u3061\u3089\u3002","source":"@site/docs/Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino/PaxPowerGlove_en.md","sourceDirName":"Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino","slug":"/Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino/PaxPowerGlove_en","permalink":"/Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino/PaxPowerGlove_en","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PaxPowerGloveMIDIKeyboard","permalink":"/Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino/PaxPowerGloveMIDIKeyboard"},"next":{"title":"XBee","permalink":"/Devel/\u96fb\u5b50\u5de5\u4f5c/Arduino/XBee"}}');var i=r(74848),a=r(28453),l=r(77833);const o={},s=void 0,d={},c=[{value:"Materials",id:"materials",level:2},{value:"Hardware",id:"hardware",level:3},{value:"Sfotware",id:"sfotware",level:3},{value:"Step 1: detecting the movement of my hand with motion sensor.",id:"step-1-detecting-the-movement-of-my-hand-with-motion-sensor",level:2},{value:"Hardware",id:"hardware-1",level:3},{value:"Software",id:"software",level:3},{value:"Arduino sketch",id:"arduino-sketch",level:3},{value:"Step 2: detecting the movement of my hand with motion sensor.",id:"step-2-detecting-the-movement-of-my-hand-with-motion-sensor",level:2},{value:"Step 3: Integrating 1 and 2.",id:"step-3-integrating-1-and-2",level:2},{value:"Hardware",id:"hardware-2",level:3},{value:"Software(1)\uff1aArduino sketch",id:"software1arduino-sketch",level:3},{value:"\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u6e96\u5099(2)\uff1aUnity\u30d7\u30ed\u30b8\u30a7\u30af\u30c8",id:"\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u6e96\u50992unity\u30d7\u30ed\u30b8\u30a7\u30af\u30c8",level:3},{value:"Step 4: communication by XBee.",id:"step-4-communication-by-xbee",level:2},{value:"Step 5: Integrating 3 and 4.",id:"step-5-integrating-3-and-4",level:2},{value:"Step 6: realizing haptics with vibration motor.",id:"step-6-realizing-haptics-with-vibration-motor",level:2},{value:"Hardware",id:"hardware-3",level:3},{value:"Software",id:"software-1",level:3},{value:"Step 7: Integrating 5 and 6.",id:"step-7-integrating-5-and-6",level:2},{value:"Prototypes",id:"prototypes",level:2},{value:"Reference",id:"reference",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["\u65e5\u672c\u8a9e\u30da\u30fc\u30b8\u306f",(0,i.jsx)(n.a,{href:"./PaxPowerGlove",children:"\u3053\u3061\u3089"}),"\u3002"]}),"\n",(0,i.jsx)("div",{class:"markdown",children:(0,i.jsx)("img",{src:r(56437).A,style:{width:"33%"}})}),"\n",(0,i.jsx)(n.p,{children:"I want to touch objects in virtual space."}),"\n",(0,i.jsx)(n.p,{children:"So I set motion sensor in PAX Power Glove, a legendary NES controller, to control the movement of my hand in the virtual space of Unity ."}),"\n","\n",(0,i.jsx)("div",{className:"video-container",children:(0,i.jsx)(l.A,{id:"6coz8Nx0RFI",webp:!0})}),"\n",(0,i.jsx)(n.p,{children:"The original Power Glove generate ultrasonic waves from the two ultrasonic transducers at different times to realize the motion capture."}),"\n",(0,i.jsx)(n.p,{children:"That idea was great. But it lacked accuracy. So I decided to use motion sensor."}),"\n",(0,i.jsx)(n.p,{children:"I used only flex sensor, out of original components."}),"\n",(0,i.jsx)(n.p,{children:"So I set motion sensor in PAX Power Glove, a legendary NES controller, to control the movement of my hand in the virtual space of Unity ."}),"\n",(0,i.jsx)("div",{class:"markdown",children:(0,i.jsx)("img",{src:r(80700).A,style:{width:"33%"}})}),"\n",(0,i.jsx)(n.p,{children:"I made that with following\u3000procedure."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"getting value of bending of fingers."}),"\n",(0,i.jsx)(n.li,{children:"detecting the movement of my hand with motion sensor."}),"\n",(0,i.jsx)(n.li,{children:"Integrating 1 and 2."}),"\n",(0,i.jsx)(n.li,{children:"communication by XBee."}),"\n",(0,i.jsx)(n.li,{children:"Integrating 3 and 4."}),"\n",(0,i.jsx)(n.li,{children:"realizing haptics with vibration motor."}),"\n",(0,i.jsx)(n.li,{children:"Integrating 5 and 6."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"materials",children:"Materials"}),"\n",(0,i.jsx)(n.h3,{id:"hardware",children:"Hardware"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.th,{children:"Item"})})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"http://www.amazon.co.jp/exec/obidos/ASIN/B0044X2E5S/cubic9com-22",children:"Arduino"})})}),(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"http://www.amazon.co.jp/exec/obidos/ASIN/B001VII7PA/cubic9com-22",children:"PowerGlove"})})}),(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"Resistance (100k ohm * 4)"})}),(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"http://strawberry-linux.com/catalog/items?code=12150",children:"MPU-9150"})})})]})]}),"\n",(0,i.jsx)(n.h3,{id:"sfotware",children:"Sfotware"}),"\n",(0,i.jsxs)(n.p,{children:["|Item|\r\n|---|---|\r\n|Arduino IDE|\r\n|",(0,i.jsx)(n.a,{href:"http://japan.unity3d.com/",children:"Unity"}),"|\r\n|I2C Device Library|\r\n|C# script for Unity3d|"]}),"\n",(0,i.jsx)(n.h2,{id:"step-1-detecting-the-movement-of-my-hand-with-motion-sensor",children:"Step 1: detecting the movement of my hand with motion sensor."}),"\n",(0,i.jsx)(n.h3,{id:"hardware-1",children:"Hardware"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Remove solder. Take off wires from board."}),"\n",(0,i.jsx)(n.li,{children:"Connect red wires to GND.\r\n.1 Connect Other wires to resistance to Arduino's 5V. Connect Analog input between wire and resistance."}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"finger"}),(0,i.jsx)(n.th,{children:"wire"}),(0,i.jsx)(n.th,{children:"analog input"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"thumb"}),(0,i.jsx)(n.td,{children:"blue"}),(0,i.jsx)(n.td,{children:"A0"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"index finger"}),(0,i.jsx)(n.td,{children:"black"}),(0,i.jsx)(n.td,{children:"A1"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"middle finger"}),(0,i.jsx)(n.td,{children:"white"}),(0,i.jsx)(n.td,{children:"A2"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"ring finger"}),(0,i.jsx)(n.td,{children:"brown"}),(0,i.jsx)(n.td,{children:"A3"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"littte finger"}),(0,i.jsx)(n.td,{children:"no wire"}),(0,i.jsx)(n.td,{children:"-"})]})]})]}),"\n",(0,i.jsx)("div",{class:"markdown",children:(0,i.jsx)("img",{src:r(62085).A,style:{width:"25%"}})}),"\n",(0,i.jsx)(n.p,{children:"\u66f2\u3052\u30bb\u30f3\u30b5\u306f\u51fa\u529b\u304c\u62b5\u6297\u5024\u306a\u306e\u3067\u3001\u540c\u7a0b\u5ea6\u306e\u62b5\u6297\u5668\u3092\u4f7f\u3046\u3053\u3068\u3067\u62b5\u6297\u5024\u2192\u96fb\u5727\u5024\u306b\u5909\u63db\u3057\u3066Arduino\u306b\u5165\u529b\u3059\u308b\u3001\u3068\u3044\u3046\u56de\u8def\u304c\u4e0a\u8a18\u3067\u3059\u3002"}),"\n",(0,i.jsx)(n.h3,{id:"software",children:"Software"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Write following sketch to Arduino."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"arduino-sketch",children:"Arduino sketch"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-C",children:'int fingers[4];\r\n\r\nvoid setup() {\r\n  Serial.begin(9600);\r\n}\r\n\r\nvoid loop() {\r\n  int i;\r\n  fingers[0] = constrain(map(analogRead(A0), 678, 760, 0, 10), 0, 10) * 10;\r\n  fingers[1] = constrain(map(analogRead(A1), 835, 935, 0, 10), 0, 10) * 10;\r\n  fingers[2] = constrain(map(analogRead(A2), 770, 905, 0, 10), 0, 10) * 10;\r\n  fingers[3] = constrain(map(analogRead(A3), 750, 910, 0, 10), 0, 10) * 10;\r\n\r\n  for (i = 0; i < 4; i++) {\r\n    Serial.print("finger");\r\n    Serial.print(i);\r\n    Serial.print(":");\r\n    Serial.print(fingers[i]);\r\n    Serial.print("\\t");\r\n  }\r\n  Serial.println();\r\n  delay(200);\r\n}\n'})}),"\n",(0,i.jsx)(n.p,{children:"NOTE: resistance may be different with your PowerGlove."}),"\n",(0,i.jsx)(n.h2,{id:"step-2-detecting-the-movement-of-my-hand-with-motion-sensor",children:"Step 2: detecting the movement of my hand with motion sensor."}),"\n",(0,i.jsxs)(n.p,{children:["for details, see ",(0,i.jsx)(n.a,{href:"./%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%BB%E3%83%B3%E3%82%B5",children:"\u30e2\u30fc\u30b7\u30e7\u30f3\u30bb\u30f3\u30b5"}
2)," . (written in Japanese)"]}),"\n",(0,i.jsx)(n.h2,{id:"step-3-integrating-1-and-2",children:"Step 3: Integrating 1 and 2."}),"\n",(0,i.jsx)(n.h3,{id:"hardware-2",children:"Hardware"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Integrate circuit of 1 and 2."}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"software1arduino-sketch",children:"Software(1)\uff1aArduino sketch"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Modify sketch, which you made at ",(0,i.jsx)(n.a,{href:"./%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%BB%E3%83%B3%E3%82%B5",children:"\u30e2\u30fc\u30b7\u30e7\u30f3\u30bb\u30f3\u30b5"})," ."]}),"\n",(0,i.jsx)(n.li,{children:"Modify line 286-297."}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-C",children:'        #ifdef OUTPUT_READABLE_QUATERNION\r\n            // display quaternion values in easy matrix form: w x y z\r\n            mpu.dmpGetQuaternion(&q, fifoBuffer);\r\n            Serial.print("quat\\t");\r\n            Serial.print(q.w);\r\n            Serial.print("\\t");\r\n            Serial.print(q.x);\r\n            Serial.print("\\t");\r\n            Serial.print(q.y);\r\n            Serial.print("\\t");\r\n-            Serial.println(q.z);\r\n+            Serial.print(q.z);\r\n+            Serial.print("\\t");\r\n+            Serial.print(constrain(map(analogRead(A0), 678, 760, 0, 10), 0, 10) * 6);\r\n+            Serial.print("\\t");\r\n+            Serial.print(constrain(map(analogRead(A1), 835, 935, 0, 10), 0, 10) * 6);\r\n+            Serial.print("\\t");\r\n+            Serial.print(constrain(map(analogRead(A2), 770, 905, 0, 10), 0, 10) * 6);\r\n+            Serial.print("\\t");\r\n+            Serial.println(constrain(map(analogRead(A3), 750, 910, 0, 10), 0, 10) * 6);\r\n        #endif\n'})}),"\n",(0,i.jsx)(n.h3,{id:"\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u6e96\u50992unity\u30d7\u30ed\u30b8\u30a7\u30af\u30c8",children:"\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u6e96\u5099(2)\uff1aUnity\u30d7\u30ed\u30b8\u30a7\u30af\u30c8"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Download following zip, and open PaxPowerGlove.unity."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"pathname:///assets/Arduino/PaxPowerGloveUnity.zip",children:"PaxPowerGloveUnity.zip"})}),"\n",(0,i.jsx)(n.h2,{id:"step-4-communication-by-xbee",children:"Step 4: communication by XBee."}),"\n",(0,i.jsx)("div",{class:"markdown",children:(0,i.jsx)("img",{src:r(10854).A,style:{width:"33%"}})}),"\n",(0,i.jsxs)(n.p,{children:["for details, see ",(0,i.jsx)(n.a,{href:"./XBee",children:"XBee"})," . (written in Japanese)"]}),"\n",(0,i.jsx)(n.h2,{id:"step-5-integrating-3-and-4",children:"Step 5: Integrating 3 and 4."}),"\n",(0,i.jsx)(n.p,{children:"\u3055\u3042\u3064\u3044\u306b\u3001\u4e0a\u8a183\u30684\u3092\u7d71\u5408\u3057\u307e\u3059\u3002"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Modify Arduino sketch."}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-C",children:"    #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE\r\n        Wire.begin();\r\n-        TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)\r\n+        TWBR = 12; // for Arduino Fio\n"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-C",children:"    // initialize serial communication\r\n    // (115200 chosen because it is required for Teapot Demo output, but it's\r\n    // really up to you depending on your project)\r\n-    Serial.begin(115200);\r\n+    Serial.begin(57600); // for Arduino Fio\n"})}),"\n",(0,i.jsx)(n.h2,{id:"step-6-realizing-haptics-with-vibration-motor",children:"Step 6: realizing haptics with vibration motor."}),"\n",(0,i.jsx)(n.h3,{id:"hardware-3",children:"Hardware"}),"\n",(0,i.jsx)("div",{class:"markdown",children:(0,i.jsx)("img",{src:r(78282).A,style:{width:"25%"}})}),"\n",(0,i.jsx)(n.h3,{id:"software-1",children:"Software"}),"\n",(0,i.jsx)(n.p,{children:"W.I.P."}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-C",children:"char c = Serial.read();\r\nif (c != -1) {\r\n  c -= '0';\r\n  for (int i = 0; i < 5; i++) {\r\n    if ((c & 0b00010000) != 0) {\r\n        digitalWrite(3, HIGH);\r\n    }\r\n    if ((c & 0b00001000) != 0) {\r\n        digitalWrite(4, HIGH);\r\n    }\r\n    if ((c & 0b00000100) != 0) {\r\n        digitalWrite(5, HIGH);\r\n    }\r\n    delay(7);\r\n    digitalWrite(3, LOW);\r\n    digitalWrite(4, LOW);\r\n    digitalWrite(5, LOW);\r\n    if ((c & 0b00000010) != 0) {\r\n        digitalWrite(6, HIGH);\r\n    }\r\n    if ((c & 0b00000001) != 0) {\r\n        digitalWrite(7, HIGH);\r\n    }\r\n    delay(7);\r\n    digitalWrite(6, LOW);\r\n    digitalWrite(7, LOW);\r\n  }\r\n}\n"})}),"\n",(0,i.jsx)(n.h2,{id:"step-7-integrating-5-and-6",children:"Step 7: Integrating 5 and 6."}),"\n",(0,i.jsx)(n.p,{children:"W.I.P."}),"\n",(0,i.jsx)(n.h2,{id:"prototypes",children:"Prototypes"}),"\n",(0,i.jsxs)("div",{class:"markdown",children:[(0,i.jsx)("img",{src:r(14204).A,style:{width:"20%"}}),(0,i.jsx)("img",{src:r(98859).A,style:{width:"20%"}}),(0,i.jsx)("img",{src:r(20814).A,style:{width:"20%"}})]}),"\n",(0,i.jsx)(n.h2,{id:"reference",children:"Reference"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"http://d.hatena.ne.jp/KZR/20090817/p1",children:"Power Glove \u3092\u697d\u5668\u306b\u3059\u308b - Radium Software"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"http://nagasm.org/ASL/globe/",children:"PowerGlove\u306e\u89e3\u6790"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"http://makers-with-myson.blog.so-net.ne.jp/2013-11-11",children:"Arduino \u3067\u30e2\u30fc\u30bf\u3092\u52d5\u304b\u3059\uff1a\u606f\u5b50\u3068\u4e00\u7dd2\u306b Makers\uff1aSo-net\u30d6\u30ed\u30b0"})}),"\n"]})]})}function p(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},56437:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove04-c804c539f4d5f3208f48567134864e7a.jpg"},62085:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove_circuit-b737b06f850c93ff05cab8bb338bd857.png"},77833:(e,n,r)=>{r.d(n,{A:()=>a});var t=r(96540),i=function(){return i=Object.assign||function(e){for(var n,r=1,t=arguments.length;r<t;r++)for(var i in n=arguments[r])Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i]);return e},i.apply(this,arguments)};var a=t.forwardRef((function(e,n){var r=t.useState(!1),a=r[0],l=r[1],o=t.useState(e.alwaysLoadIframe||!1),s=o[0],d=o[1],c=encodeURIComponent(e.id),h="string"==typeof e.playlistCoverId?encodeURIComponent(e.playlistCoverId):null,p=e.title,m=e.poster||"hqdefault",u=e.announce||"Watch",x=new URLSearchParams(i(i(i(i({},e.muted?{mute:"1"}:{}),e.alwaysLoadIframe?{}:{autoplay:"1",state:"1"}),e.enableJsApi?{enablejsapi:"1"}:{}),e.playlist?{list:c}:{})),g=e.noCookie;g=e.cookie?"https://www.youtube.com":"https://www.youtube-nocookie.com";var f=e.playlist?"".concat(g,"/embed/videoseries?").concat(x.toString()):"".concat(g,"/embed/").concat(c,"?").concat(x.toString()),j=e.webp?"webp":"jpg",w=e.webp?"vi_webp":"vi",v=e.thumbnail||(e.playlist?"https://i.ytimg.com/".concat(w,"/").concat(h,"/").concat(m,".").concat(j):"https://i.ytimg.com/".concat(w,"/").concat(c,"/").concat(m,".").concat(j)),b=e.activatedClass||"lyt-activated",y=e.adNetwork||!1,A=e.aspectHeight||9,S=e.aspectWidth||16,I=e.iframeClass||"",k=e.playerClass||"lty-playbtn",P=e.wrapperClass||"yt-lite",E=e.onIframeAdded||function(){},C=e.rel?"prefetch":"preload",B=e.containerElement||"article",R=e.style||{};return t.useEffect((function(){s&&E()}),[s]),t.createElement(t.Fragment,null,t.createElement("link",{rel:C,href:v,as:"image"}),t.createElement(t.Fragment,null,a&&t.createElement(t.Fragment,null,t.createElement("link",{rel:"prec
2onnect",href:g}),t.createElement("link",{rel:"preconnect",href:"https://www.google.com"}),y&&t.createElement(t.Fragment,null,t.createElement("link",{rel:"preconnect",href:"https://static.doubleclick.net"}),t.createElement("link",{rel:"preconnect",href:"https://googleads.g.doubleclick.net"})))),t.createElement(B,{onPointerOver:function(){a||l(!0)},onClick:function(){s||d(!0)},className:"".concat(P," ").concat(s?b:""),"data-title":p,style:i(i({backgroundImage:"url(".concat(v,")")},{"--aspect-ratio":"".concat(A/S*100,"%")}),R)},t.createElement("button",{type:"button",className:k,"aria-label":"".concat(u," ").concat(p)}),s&&t.createElement("iframe",{ref:n,className:I,title:p,width:"560",height:"315",frameBorder:"0",allow:"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:!0,src:f})))}))},78282:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove_vibration_circuit-2ac1c00bd0d40901a578477a4ee855fa.png"},80700:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove_board-da357da8fe1df7eed3ab7ae4e8c22cc6.jpg"},98859:(e,n,r)=>{r.d(n,{A:()=>t});const t=r.p+"assets/images/powerglove02-d6386b7575251aa84be39d22f7b19dbc.jpg"}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.