67WS Seminar Event

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    67WS Seminar Event - Presentation Transcript

    1. http://67.org/ws/ Funnel ActionScript
    2. • 1 13:00 14:30 – – Funnel – Funnel Gainer – Funnel • 2 14:45 16:15 – FIO Funnel I/O ∗ Arduino ∗ XBee – Funnel 009 –
    3. • 1970 • 1993 2004 – – – • IAMAS 2004 – – –
    4. • • •
    5. Make Volume 04 Sketch 2008
    6. Make Volume 05 Sketch / Prototype 2008
    7. Make Volume 06 Prototyping Lab: 2009
    8. GAINER GainerBook Labo 2007 2008
    9. Making Things Talk Arduino Tom Igoe 2008
    10. • ITP*1 Tom Igoe • 1 • • 1 *1 Interactive Telecommunications Program
    11. PC • ASCII • 1 bps
    12. Alto (1973) http://toastytech.com/guis/
    13. • • • • • •
    14. • • • littleBits coffemaker*2 *2 http://www.vimeo.com/1389390
    15. • – – • – –
    16. 1 • • • ×XBee×Funnel×PC • Make: Tokyo Meeting 01-02 IAMAS Gangu Project
    17. 2 Jamming Gear • × • – – • ×FIO×Max/MSP×PC • Make: Tokyo Meeting 01-02 IAMAS Gangu Project
    18. HELLO!! • 2007.12.22-23 • • 19 • • Processing×Funnel×Gainer I/O
    19. PIC AVR program A a0]=ain.o; aout.1 = 255; B C D
    20. PC Arduino Wiring program A a0]=ain.o; aout.1 = 255; B C D PC program a0]=ain.o; aout.1 = 255;
    21. Arduino I/O SparkFun Electronics
    22. I/O PC Gainer Phidgets A B C D PC program a0]=ain.o; aout.1 = 255;
    23. Phidgets
    24. Gainer • I/O • – ActionScript 2/3 – Processing – Max/MSP
    25. Gainer I/O
    26. I/O
    27. I/O
    28. LED
    29. • –2 – GND – V
    30. • – – A
    31. • – – Ω
    32. • 1,000 1kΩ • 1,000,000 1MΩ • 1,000 1 1mA • 1 50µA 1,000,000
    33. • •
    34. +5V GND
    35. LED
    36. • • – – –
    37. • • •
    38. LED
    39. LED • LED 20mA • • •
    40. V =I ×R •V V •I A •R Ω
    41. − LED ×R = LED R − LED R= LED 5.0V LED 1.8V 10mA 5 − 1.8 3.2 R= = = 0.01 0.01
    42. LED
    43. • +5V • GND •
    44. LED NG
    45. LED
    46. LED 7
    47. Funnel Gainer • GUI •
    48. Funnel • • •
    49. Funnel • – – – – •
    50. Funnel • • •
    51. Bill Moggridge, Designing Interactions (2006)
    52. Funnel Gainer • Gainer – – Gainer I/O 1:1 • Funnel – – Arduino XBee
    53. Funnel Sketching User Experiences Getting the Design Right and the Right Design Bill Buxton Morgan Kaufmann Pub 2007
    54. Funnel Bill Buxton, Sketching User Experiences (2008)
    55. Funnel Bill Buxton, Sketching User Experiences (2008)
    56. Funnel • GUI • – Convolution – SetPoint – Scaler – Osc • I/O
    57. Funnel
    58. Gainer I/O 2 • din 0 1 2 – – • ain 0 1 256 – –
    59. din 0
    60. din 0
    61. • • – rising edge – falling edge
    62. 1 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; // }; };
    63. Funnel 2 var gio:Gainer = new Gainer(); gio.digitalInput(0).addEventListener(RISING_EDGE, function(e:Event):void { // 0 1 }); gio.digitalInput(0).addEventListener(FALLING_EDGE, function(e:Event):void { // 1 0 });
    64. ain 0
    65. ain 0
    66. ain 0 • GainerSignalScope • • ain 1 •
    67. ain 0 CdS
    68. ain 0 CdS
    69. ain 0 CdS • • GainerSignalScope • •
    70. Gainer.remap() 3 Gainer.remap() import gainer.*; var gio:Gainer = new Gainer(\"localhost\", 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); }; };
    71. Scaler 4 Scaler gio = new Gainer(); gio.analogInput(0).filters = [new Scaler(0.2, 0.6, 0, 1, Scaler.LINEAR, true)];
    72. • – – •
    73. 1 2 51 2 set point.fla var threshold:Number = 127; // var hysteresis:Number = 10; // var lastState:Number = -1; // gio.onReady = function() { gio.beginAnalogInput();
    74. 1 2 61 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; }; };
    75. 1 2 71 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; }; };
    76. SetPoint 8 SetPoint gio = new Gainer(); gio.analogInput(0).filters = [new SetPoint([0.5, 0.1])]; gio.analogInput(0).addEventListener(RISING_EDGE, onRisingEdge); gio.analogInput(0).addEventListener(FALLING_EDGE, onFallingEdge);
    77. ain 0
    78. ain 0
    79. ain 0 SoftPot
    80. ain 0 SoftPot
    81. ain 0 SoftPot • • •
    82. ain
    83. ain
    84. • •
    85. • • -1 +1 • sin •
    86. • • LPF • HPF
    87. 9 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;
    88. 10 // 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; } }
    89. Gainer 11 MovingAverageFilter var gio:Gainer = new Gainer(\"localhost\", 2000, Gainer.MODE1, true); // var smoothFilter:MovingAverageFilter = new MovingAverageFilter(8); function loop():Void { var val:Number = smoothFilter.processSample(this.analogInput[0]); ...
    90. Convolution 12 Convolution gio = new Gainer(); gio.analogInput(0).filters = [new Convolution(Convolution.MOVING_AVERAGE)];
    91. 13 public function GainerAccelerometer() { gio = new Gainer(); board = new Shape(); ... this.addChild(board); var smoother:Convolution = new Convolution(Convolution.MOVING_AVERAGE); var scaler:Scaler = new Scaler(0.30, 0.70, -1, 1, Scaler.LINEAR, true); gio.analogInput(1).filters = [smoother, scaler]; addEventListener(Event.ENTER_FRAME, loop); } private function loop(event:Event):void { board.rotation = Math.asin(gio.analogInput(1).value) / Math.PI * 180; }
    92. Gainer I/O 2 • dout 0 1 2 – LED – • *3 aout 0 255 256 – LED – *3 PWM
    93. 14 I/O LED public function GainerLED() { ... var circle:Sprite = new Sprite(); ... this.addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mousePressed); circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); } private function mousePressed(e:MouseEvent):void { gio.led.value = 1; } private function mouseReleased(e:MouseEvent):void { gio.led.value = 0; }
    94. 15 I/O LED LED button.fla public function GainerLED() { gio = new Gainer(); gio.button.addEventListener(PinEvent.RISING_EDGE, buttonPressed); gio.button.addEventListener(PinEvent.FALLING_EDGE, buttonReleased); } private function buttonPressed(e:PinEvent):void { gio.led.value = 1; } private function buttonReleased(e:PinEvent):void { gio.led.value = 0; }
    95. dout 0 LED
    96. dout 0 LED
    97. 16 LED public function GainerLED() { ... var circle:Sprite = new Sprite(); ... this.addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mousePressed); circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); } private function mousePressed(e:MouseEvent):void { gio.digitalOutput(0).value = 1; } private function mouseReleased(e:MouseEvent):void { gio.digitalOutput(0).value = 0; }
    98. aout 0 LED
    99. aout 0 LED
    100. 17 x LED public function GainerLED() { gio = new Gainer(); stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoved); gio.analogOutput(0).filters = [new Scaler(0, 199, 0, 1, Scaler.LINEAR, true)]; } private function mouseMoved(e:MouseEvent):void { gio.analogOutput(0).value = e.stageX; }
    101. Osc LED 18 Osc LED public function GainerLED() { ... circle.addEventListener(MouseEvent.MOUSE_DOWN, mousePressed); circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); gio.analogOutput(0).filters = [new Osc(Osc.SQUARE, 0.5, 1, 0, 0)]; } private function mousePressed(e:MouseEvent):void { gio.analogOutput(0).filters[0].start(); } private function mouseReleased(e:MouseEvent):void { gio.analogOutput(0).filters[0].stop(); gio.analogOutput(0).value = 0; }
    102. FIO (Funnel I/O) • LilyPad Arduino v1.6 • • XBee
    103. FIO (Funnel I/O) v1.3
    104. FIO (Funnel I/O) v1.3
    105. FIO (Funnel I/O) v1.3 - +
    106. FIO (Funnel I/O) v1.3
    107. FIO v1.3 vs Funnel IO Remixed
    108. Arduino • Hernando Barrag´n IDII*4 a Wiring • • IDE Arduino I/O *4 Interaction Design Institute Ivrea
    109. Wiring SparkFun Electronics
    110. Arduino Duemilanove SparkFun Electronics
    111. Arduino IDE
    112. • – – •
    113. LilyPad Arduino SparkFun Electronics
    114. Arduino Pro Mini SparkFun Electronics
    115. Arduino ProtoShield SparkFun Electronics
    116. Arduino XBee Shield SparkFun Electronics
    117. Arduino GND +5V GND
    118. Gainer vs Arduino Gainer Arduino Duemilanove 16 20 RX/TX A/D 8 8bit 6 10bit PWM 8 8bit 6 8bit LED 1 0 LED 1 1 D13 Yes Yes No Yes
    119. Arduino • • • •
    120. Arduino LED 19 Arduino LED int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); }
    121. C LED 20 C LED #include <avr/io.h> #include <avr/pgmspace.h> #include <avr/delay.h> #define CLK_CALIB_DATA (FLASHEND - 3) void init() { uint8_t osccal_data = pgm_read_byte(CLK_CALIB_DATA); if (osccal_data != 0xff) OSCCAL = osccal_data; DDRB = 0xff; DDRD = 0xff; return; }
    122. C LED 21 C LED void delay_ms(uint16_t t) { while (t--) _delay_ms(1); } int main(void) { init(); for (; ;) { PORTB = 0xff; delay_ms(500); PORTB = 0x00; delay_ms(500); } return 0; }
    123. Arduino • C/C++ • •
    124. Arduino PC • – – USB – Ethernet • – Bluetooth – IEEE 802.15.4 / ZigBee
    125. Firmata http://firmata.org/ • Hans-Christoph Steiner • MIDI • Arduino 0012
    126. Firmata PC • Pd (aka Pure Data) • Processing • Funnel • Linux C++ • C++/openFrameworks
    127. 10G IEEE 802.11n 100M IEEE 802.11a/g 10M IEEE 802.11b Bluetooth 1M ANT 100k ZigBee/IEEE 802.15.4 10k 1k 0.1m 1m 10m 100m 1km BAN PAN LAN MAN
    128. Wi-Fi Bluetooth 802.15.4/ZigBee IEEE 802.11a/b/g/n 802.15.1 802.15.4 2.4GHz/5GHz 2.4GHz 866MHz/915MHz/2.4GHz 100m 100m 100m 2.4GHz 300Mbps 3Mbps 250kbps 2.4GHz 32 7 65535 LAN 1
    129. IEEE 802.15.4 • 1 •
    130. IEEE 802.15.4 Star Point to Point Point to Multi 802.15.4 Coordinator 802.15.4 End Device
    131. ZigBee • 1 • •
    132. ZigBee Mesh Coordinator Router End Device
    133. XBee • IEEE 802.15.4 ZigBee 2 *5 – XBee 802.15.4 – XBee ZB ZigBee PRO • 3500 • • *5
    134. XBee • 5V • UDP • 100kbps
    135. XBee XBee • hardware/fio/tool/XBeeConfigTool • • PAN ID • • MY ID • Configure
    136. FIO • XBee Explorer USB PC • Arduino 15 • Tools Board Arduino Pro/ Pro Mini (8MHz) • Tools Serial Port • Open Examples Digital Blink • Upload to I/O Board
    137. FIO • hardware/fio/firmware/FioStandardFirmata • Upload to I/O Board
    138. FIO • FIO • XBee Explorer USB PC • Funnel Server • FioTest
    139. Funnel 009 • I2 C – – – LED • Funnel Server • XBee FIO •
    140. 2006
    141. • – – 3D – – • •
    142. 2008
    143. http://67.org/ws/ Funnel ActionScript

    + kotobukikotobuki, 6 months ago

    custom

    606 views, 0 favs, 0 embeds more stats

    The slides for the 67WS seminar event on 2009.04.17 more

    More info about this document

    CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

    Go to text version

    • Total Views 606
      • 606 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories