Successfully reported this slideshow.
Your SlideShare is downloading. ×

Workshop at AXIS Inc.

Ad

IAMAS Gainer/Funnel
2009   3   15 16

Ad

1
•       10:00 10:30
•           10:30 11:30
•               11:30 12:00
•   1   13:00 14:45
•   2   15:00 16:45
•       ...

Ad

2
•   10:00 14:45
•                15:00 16:30
•        Funnel        16:30 17:30
•              17:30 18:00

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Upcoming SlideShare
Make: Tokyo Meeting 03
Make: Tokyo Meeting 03
Loading in …3
×

Check these out next

1 of 185 Ad
1 of 185 Ad
Advertisement

More Related Content

Advertisement

Workshop at AXIS Inc.

  1. 1. IAMAS Gainer/Funnel 2009 3 15 16
  2. 2. 1 • 10:00 10:30 • 10:30 11:30 • 11:30 12:00 • 1 13:00 14:45 • 2 15:00 16:45 • 17:00 18:00
  3. 3. 2 • 10:00 14:45 • 15:00 16:30 • Funnel 16:30 17:30 • 17:30 18:00
  4. 4. • • •
  5. 5. • 1970 • 1993 2004 – – – • IAMAS 2004 – –
  6. 6. • • •
  7. 7. Make Volume 04 Sketch 2008
  8. 8. Make Volume 05 Sketch / Prototype 2008
  9. 9. Make Volume 06 Prototyping Lab: 2009
  10. 10. GAINER GainerBook Labo 2007 2008
  11. 11. Making Things Talk Arduino Tom Igoe 2008
  12. 12. 1/2 Gainer I/O 1 USB 1 SAD-01 1 SPP-100 470Ω 1 10kΩ 1 10kΩ B 1 CdS 5mm 1 LED 1 KMX52-1050 1 6mm 1
  13. 13. 2/2 AMN11112 1 GP2Y0A21YK 1 1 SoftPot 100mm 1 FSR FSR #402 1 SoftPot/FSR 1
  14. 14. • ITP*1 Tom Igoe • 1 • • 1 *1 Interactive Telecommunications Program
  15. 15. ITP ITP Winter Show 2008 • ITP 2 • 12 17 18 • http://itp.nyu.edu/shows/winter2008/
  16. 16. PC • ASCII • 1
  17. 17. Alto (1973) http://toastytech.com/guis/
  18. 18. • PC – – PC • Flash
  19. 19. • Nintendo Wii • • iPhone •
  20. 20. • • LED • I/O PC
  21. 21. • ActionScript C C++ Java • •
  22. 22. • •
  23. 23. • – Flash – Processing – Max/MSP • – Gainer – Arduino – Phidgets
  24. 24. • • – – – – • • UNDO
  25. 25. PIC AVR program A a0]=ain.o; aout.1 = 255; B C D
  26. 26. PC Arduino Wiring program A a0]=ain.o; aout.1 = 255; B C D PC program a0]=ain.o; aout.1 = 255;
  27. 27. Arduino I/O SparkFun Electronics
  28. 28. I/O PC Gainer Phidgets A B C D PC program a0]=ain.o; aout.1 = 255;
  29. 29. Phidgets
  30. 30. Gainer • I/O • – ActionScript 2/3 – Processing – Max/MSP
  31. 31. Gainer I/O
  32. 32. I/O
  33. 33. I/O
  34. 34. LED
  35. 35. HELLO!! • 2007.12.22-23 • • 19 • • Processing×Funnel×Gainer I/O
  36. 36. 1 Haohao table • • • 3 • NTT InterCommunication Center [ICC] 2006.6.6-2008.3.11
  37. 37. 1 Haohao table ICC
  38. 38. 1 Haohao table
  39. 39. 1 Haohao table
  40. 40. 1 Haohao table
  41. 41. 2 • • 1 • NTT InterCommunication Center [ICC] 2007.4.19-2008.3.9 • 2008
  42. 42. 2
  43. 43. 2
  44. 44. 2
  45. 45. 2
  46. 46. 2
  47. 47. 2
  48. 48. 2 ICC
  49. 49. 2 ICC
  50. 50. 2 ICC
  51. 51. 3 3 • 11 • • • • IAMAS 2007.8.24-26
  52. 52. 4 Mountain Guitar • • – – • I/O PC • IAMAS • CG
  53. 53. • • • • • •
  54. 54. • • • littleBits coffemaker*2 *2 http://www.vimeo.com/1389390
  55. 55. • – – • – –
  56. 56. 5 Jamming Gear • × • – – • I/O PC • Make: Tokyo Meeting 01-02 IAMAS Gangu Project
  57. 57. 6 ephemeral melody • × × × • • Gainer I/O 3 Max PC • CG http://www.youtube.com/watch?v=usou5Xs4IQ0
  58. 58. 1 • • • – – • – –
  59. 59. • –2 – GND – V
  60. 60. • – – A
  61. 61. • – – Ω
  62. 62. • 1,000 1kΩ • 1,000,000 1MΩ • 1,000 1 1mA • 1,000,000 1 50µA
  63. 63. • •
  64. 64. +5V GND
  65. 65. LED
  66. 66. • • – – –
  67. 67. • • •
  68. 68. LED
  69. 69. LED • LED 20mA • • •
  70. 70. V =I ×R •V V •I A •R Ω
  71. 71. − LED ×R = LED R − LED R= LED 5.0V LED 1.8V 10mA 5 − 1.8 3.2 R= = = 0.01 0.01
  72. 72. LED
  73. 73. • +5V • GND •
  74. 74. LED NG
  75. 75. LED
  76. 76. LED 7
  77. 77. Gainer I/O 2 • dout 0 1 2 – LED – • *3 aout 0 255 256 – LED – *3 PWM
  78. 78. 1 I/O LED LED.fla import gainer.*; var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); //IO gio.onReady = function() { // LED sqr.onPress = function() { gio.turnOnLED(); } // LED sqr.onRelease = function() { gio.turnOffLED(); } }
  79. 79. 2 I/O LED LED button.fla import gainer.*; var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); //IO gio.onReady = function() { //I/O gio.onPressed = function() { gio.turnOnLED(); }; //I/O gio.onReleased = function() { gio.turnOffLED(); }; };
  80. 80. dout 0 LED
  81. 81. dout 0 LED
  82. 82. 3 LED LED dout mouse.fla import gainer.*; var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); gio.onReady = function() { _root.onEnterFrame = function() { // LED sqr.onPress = function() { gio.setHigh(0); }; // LED sqr.onRelease = function() { gio.setLow(0); }; }; };
  83. 83. aout 0 LED
  84. 84. aout 0 LED
  85. 85. 4 x LED LED aout mouse.fla import gainer.*; var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); gio.onReady = function() { _root.onEnterFrame = function() { // x 0 255 var brightness:Number = Math.round(255 * (_root._xmouse/Stage.width)); trace(brightness); // aout 0 brightness gio.analogOutput(0, brightness); } }
  86. 86. Gainer I/O 2 • din 0 1 2 – – • ain 0 255 256 – –
  87. 87. din 0
  88. 88. din 0
  89. 89. ain 0
  90. 90. ain 0
  91. 91. ain 0 • SignalScopeApp • • ain 1 •
  92. 92. 5 0 pot movie.fla // import gainer.*; // Gainer var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); // I/O gio.onReady = function() { // gio.beginAnalogInput(); // _root.onEnterFrame = function() { // _root.movieClip.gotoAndStop(gio.analogInput[0] + 1); }; };
  93. 93. 6 0 pot sound.fla // import gainer.*; // Gainer var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); // I/O gio.onReady = function() { // gio.beginAnalogInput(); // _root.onEnterFrame = function() { // _root.soundClip.setVolume(gio.analogInput[0] / 255 * 100); }; };
  94. 94. 2 • • – – –
  95. 95. ain 0
  96. 96. ain 0
  97. 97. ain 0 • • SignalScopeApp • •
  98. 98. Gainer.remap() 7 Gainer.remap() pot movie remap.fla import gainer.*; var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); gio.onReady = function() { gio.beginAnalogInput(); _root.onEnterFrame = function() { var val:Number; var frames:Number = movieClip._totalframes; //ain 0 0-255 val = Math.round(Gainer.remap(gio.analogInput[0], 0, 255, 1, frames)); _root.movieClip.gotoAndStop(val); }; };
  99. 99. ain 0
  100. 100. ain 0
  101. 101. ain 0 SoftPot
  102. 102. ain 0 SoftPot
  103. 103. ain 0 SoftPot • • •
  104. 104. ain 0
  105. 105. ain 0
  106. 106. ain 0 • PSD • • PSD movie sound.fla
  107. 107. din 0
  108. 108. • SignalScopeApp •
  109. 109. • true false • – –
  110. 110. 8 NaPiOn movie.fla var scheduledTime:Number = 0; // var wasActive:Boolean = false; // var isPlaying:Boolean = false; // var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); gio.onReady = function() { // gio.beginDigitalInput(); // _root.onEnterFrame = function() { // var now:Number = getTimer(); // var isActive:Boolean = gio.digitalInput[0];
  111. 111. 9 if (!wasActive && isActive && !isPlaying) { // true _root.movieClip.gotoAndPlay(1); isPlaying = true; } else if (wasActive && !isActive) { // true false 3 scheduledTime = now + 3000; } if (isPlaying && (now >= scheduledTime)) { // false _root.movieClip.stop(); isPlaying = false; } wasActive = isActive; }; };
  112. 112. ain
  113. 113. ain
  114. 114. ain • SignalScopeApp • x, y, z – –
  115. 115. • •
  116. 116. • • SignalScopeApp • -1 +1 • sin
  117. 117. 10 acceleration basic.fla var xMin:Number = 70; // X var xMax:Number = 180; // X gio.onReady = function() { this.beginAnalogInput(); // gio loop() _root.onEnterFrame = mx.utils.Delegate.create(this, loop); } function loop():Void { // -1 1 var xSinTheta:Number = Gainer.remap(this.analogInput[0], xMin, xMax, -1, 1); // var xInDegree:Number = Math.asin(xSinTheta) / Math.PI * 180; }
  118. 118. • • LPF • HPF
  119. 119. 11 MovingAverageFilter.as class MovingAverageFilter { private var _taps:Number; // private var _values:Array; // function MovingAverageFilter(taps:Number) { _taps = taps; _values = new Array(_taps); } function processSample(sample:Number):Number { var acc:Number = 0; var i:Number = 0; // _values[0] = sample;
  120. 120. 12 // for (i = 0; i < _taps; i++) { acc = acc + _values[i]; } acc = acc / _taps; // 1 // [A][B][C][D][E] ... // [A][A][B][C][D] ... for (i = _taps - 1; i > 0; i--) { _values[i] = _values[i - 1]; } return acc; } }
  121. 121. • – rising edge – falling edge •
  122. 122. 13 var wasPressed:boolean = false; // gio.onReady = function() { gio.beginDigitalInput(); _root.onEnterFrame = function() { var isPressed:boolean = gio.digitalInput[0]; // if (!wasPressed && isPressed) { // 0 1 } else if (wasPressed && !isPressed) { // 1 0 } wasPressed = isPressed; // }; };
  123. 123. • – – •
  124. 124. 1 2 14 1 2 set point.fla var threshold:Number = 127; // var hysteresis:Number = 10; // var lastState:Number = -1; // gio.onReady = function() { gio.beginAnalogInput();
  125. 125. 1 2 15 1 2 _root.onEnterFrame = function() { var state:Number = lastState; var val:Number = gio.analogInput[0]; if (val < threshold) { state = 0; } else { state = 1; } if (lastState != state) { // } lastState = state; }; };
  126. 126. 1 2 16 1 2 _root.onEnterFrame = function() { var state:Number = lastState; var val:Number = gio.analogInput[0]; if (val < (threshold - hysteresis)) { state = 0; } else if (val > (threshold + hysteresis)) { state = 1; } if (lastState != state) { // } lastState = state; }; };
  127. 127. 17 2 two switches.fla if (gio.digitalInput[0] && !gio.digitalInput[1]) { // 0 1 } else if (!gio.digitalInput[0] && gio.digitalInput[1]) { // 0 1 } else if (gio.digitalInput[0] && gio.digitalInput[1]) { // 01 } else { // 01 }
  128. 128. 18 2 var val0:Number = gio.analogInput[0]; var val1:Number = gio.analogInput[1];
  129. 129. Gainer I/O 19 8 // 8 // // din 0 ain 4 // din 1 ain 5 // din 2 ain 6 // din 3 ain 7 var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE2, true); // ain 7 var val:Number = gio.analogInput[7];
  130. 130. 20 3 // // Sound() MovieClip var mc0 = _root.createEmptyMovieClip(quot;sound_mc0quot;,0); var mc1 = _root.createEmptyMovieClip(quot;sound_mc1quot;,1); var mc2 = _root.createEmptyMovieClip(quot;sound_mc2quot;,2); var soundClip0 = new Sound(mc0); var soundClip1 = new Sound(mc1); var soundClip2 = new Sound(mc2); soundClip0.setVolume(100); soundClip1.setVolume(50); soundClip2.setVolume(0);
  131. 131. Funnel Gainer • GUI •
  132. 132. Funnel • • •
  133. 133. Gainer I/O Arduino Gainer I/O Arduino Duemilanove 16 20 A/D 8 8bit 6 10bit PWM 8 8bit 6 8bit 1 0 LED 1 1 D13 Yes Yes No Yes
  134. 134. Funnel • – – – – •
  135. 135. Funnel • • •
  136. 136. Funnel Gainer • Gainer – – Gainer I/O 1:1 – • Funnel – – Arduino XBee –
  137. 137. Funnel Sketching User Experiences Getting the Design Right and the Right Design Bill Buxton Morgan Kaufmann Pub 2007
  138. 138. Funnel Bill Buxton, Sketching User Experiences (2008)
  139. 139. Funnel • GUI • – Convolution – SetPoint – Scaler – Osc • I/O
  140. 140. Funnel
  141. 141. Arduino • Hernando Barrag´n IDII*4 a Wiring • • IDE Arduino I/O *4 Interaction Design Institute Ivrea
  142. 142. Wiring SparkFun Electronics
  143. 143. Arduino Duemilanove SparkFun Electronics
  144. 144. Arduino IDE
  145. 145. • – – •
  146. 146. LilyPad Arduino SparkFun Electronics
  147. 147. Arduino Pro Mini SparkFun Electronics
  148. 148. Arduino ProtoShield SparkFun Electronics
  149. 149. Arduino XBee Shield SparkFun Electronics
  150. 150. XIO: XBee I/O Board v1.0
  151. 151. XIO: XBee I/O Board v1.0
  152. 152. Wi-Fi Bluetooth 802.15.4 / ZigBee IEEE 802.11b 802.15.1 802.15.4 100m 10m 30m 11Mbps 1Mbps 250kbps 32 7 65535 LAN 1 2.4GHz
  153. 153. Star Point to Point Point to Multi 802.15.4 Coordinator 802.15.4 End Device IEEE 802.15.4
  154. 154. IEEE 802.15.4 • 1 •
  155. 155. Mesh Coordinator Router End Device ZigBee
  156. 156. ZigBee • 1 • •
  157. 157. XBee • IEEE 802.15.4 ZigBee 2 *5 – XBee 802.15.4 – XBee ZB ZigBee PRO • 3500 • • *5
  158. 158. FIO (Funnel I/O) • LilyPad Arduino v1.6 • • XBee
  159. 159. FIO (Funnel I/O) v1.0
  160. 160. FIO (Funnel I/O) v1.0
  161. 161. FIO (Funnel I/O) v1.3
  162. 162. FIO (Funnel I/O) v1.3
  163. 163. FIO (Funnel I/O) v1.3 - +
  164. 164. FIO (Funnel I/O) v1.3
  165. 165. FIO v1.3 vs Funnel IO Remixed
  166. 166. Funnel 009 • I2C – – – LED • XBee FIO •
  167. 167. 2006
  168. 168. • – – 3D – – • •
  169. 169. 2008
  170. 170. IAMAS Gainer/Funnel 2009 3 15 16

×