67WS Seminar Event

Shigeru Kobayashi
Shigeru KobayashiProfessor at Institute of Advanced Media Arts and Sciences [IAMAS]
http://67.org/ws/




   Funnel           ActionScript
•   1   13:00 14:30
  –
  – Funnel
  – Funnel Gainer
  – Funnel
•   2   14:45 16:15
  – FIO Funnel I/O
    ∗ Arduino
    ∗ XBee
  – Funnel 009
  –
• 1970
•              1993 2004
  –
  –
  –
• IAMAS 2004
  –
  –
  –
•

•

•
Make            Volume 04
       Sketch
                            2008
Make          Volume 05
Sketch / Prototype
                          2008
Make          Volume 06
Prototyping Lab:
                          2009
GAINER
GainerBook Labo   2007   2008
Making Things Talk
Arduino
Tom Igoe             2008
•                      ITP*1   Tom Igoe

•                                                 1
•

•                          1




    *1   Interactive Telecommunications Program
PC
•        ASCII
•         1
                 bps
Alto (1973)




              http://toastytech.com/guis/
•
•
•
•
•
•
•
•
•



          littleBits coffemaker*2




    *2   http://www.vimeo.com/1389390
•
    –
    –
•
    –
    –
1
•
•
•          ×XBee×Funnel×PC
• Make: Tokyo Meeting 01-02
  IAMAS Gangu Project
2 Jamming Gear
•       ×
•
    –
    –
•          ×FIO×Max/MSP×PC
• Make: Tokyo Meeting 01-02
  IAMAS Gangu Project
HELLO!!
•      2007.12.22-23
•
•        19
•
•      Processing×Funnel×Gainer I/O
PIC AVR
      program
                      A
      a0]=ain.o;
      aout.1 = 255;


                      B



                      C



                      D
PC   Arduino Wiring
           program
                                       A
           a0]=ain.o;
           aout.1 = 255;


                                       B



                                       C



                                       D




           PC

                       program

                       a0]=ain.o;
                       aout.1 = 255;
Arduino I/O




              SparkFun Electronics
I/O   PC   Gainer Phidgets

                                 A



                                 B



                                 C



                                 D




            PC

                 program

                 a0]=ain.o;
                 aout.1 = 255;
Phidgets
Gainer

• I/O
•
  – ActionScript 2/3
  – Processing
  – Max/MSP
Gainer I/O
I/O
67WS Seminar Event
I/O
67WS Seminar Event
LED
•
    –2
    –    GND
    –    V
67WS Seminar Event
•
    –
    –   A
67WS Seminar Event
•
    –
    –   Ω
67WS Seminar Event
• 1,000          1kΩ
• 1,000,000            1MΩ
• 1,000
    1
                1mA
•       1
                       50µA
    1,000,000
67WS Seminar Event
•
•
+5V   GND
67WS Seminar Event
67WS Seminar Event
67WS Seminar Event
LED
•
•
    –
    –
    –
•
•
•
LED
LED

• LED
        20mA
•
•
•
V =I ×R

•V    V
•I   A
•R    Ω
− LED                          ×R
                  = LED

R
                   − LED
      R=
            LED
    5.0V LED        1.8V    10mA
         5 − 1.8   3.2
      R=         =      =
           0.01    0.01
LED
•   +5V
•   GND
•
LED   NG
LED
LED

      7
Funnel
Gainer
•        GUI

•
Funnel

•
•
•
Funnel

•
    –
    –
    –
    –
•
Funnel
•
•
•
Bill Moggridge, Designing Interactions (2006)
Funnel   Gainer
• Gainer
  –
  – Gainer I/O 1:1
• Funnel
  –
  – Arduino XBee
Funnel
Sketching User Experiences
Getting the Design Right and the Right Design
Bill Buxton Morgan Kaufmann Pub 2007
Funnel




         Bill Buxton, Sketching User Experiences (2008)
Funnel




         Bill Buxton, Sketching User Experiences (2008)
Funnel
• GUI
•
  –                      Convolution
  –                           SetPoint
  –             Scaler
  –            Osc
•        I/O
Funnel
Gainer I/O
        2
•            din 0   1     2
    –
    –
•            ain 0 1     256
    –
    –
din 0
din 0
•
•
    –   rising edge
    –   falling edge
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; //
     };
};
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
});
ain 0
ain 0
ain 0
• GainerSignalScope
•
• ain 1
•
67WS Seminar Event
67WS Seminar Event
ain 0   CdS
ain 0   CdS
ain 0                 CdS
•
• GainerSignalScope
•
•
Gainer.remap()

                          3 Gainer.remap()

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);
     };
};
Scaler

                           4 Scaler

gio = new Gainer();

gio.analogInput(0).filters = [new Scaler(0.2, 0.6, 0, 1, Scaler.LINEAR, true)];
•
    –
    –
•
1        2

                          51     2   set point.fla

var threshold:Number = 127; //
var hysteresis:Number = 10; //
var lastState:Number = -1; //

gio.onReady = function() {
    gio.beginAnalogInput();
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;
     };
};
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;
     };
};
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);
ain 0
ain 0
ain 0   SoftPot
ain 0   SoftPot
ain 0   SoftPot
•
•
•
ain
ain
•
•
67WS Seminar Event
•
• -1     +1
•    sin
•
•
•   LPF
•   HPF
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;
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;
    }
}
Gainer

                        11 MovingAverageFilter

var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true);

//
var smoothFilter:MovingAverageFilter = new MovingAverageFilter(8);

function loop():Void {
    var val:Number = smoothFilter.processSample(this.analogInput[0]);
    ...
Convolution

                      12 Convolution

gio = new Gainer();

gio.analogInput(0).filters = [new Convolution(Convolution.MOVING_AVERAGE)];
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;
}
Gainer I/O
         2
•             dout 0   1   2
    – LED
    –
•                                *3
              aout 0 255   256
    – LED
    –




    *3       PWM
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;
}
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;
}
dout 0   LED
dout 0   LED
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;
}
aout 0   LED
aout 0   LED
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;
}
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;
}
FIO (Funnel I/O)
• LilyPad Arduino v1.6
•
• XBee
FIO (Funnel I/O) v1.3
FIO (Funnel I/O) v1.3
FIO (Funnel I/O) v1.3

                        -   +
FIO (Funnel I/O) v1.3
FIO v1.3 vs Funnel IO Remixed
Arduino
• Hernando Barrag´n       IDII*4
                 a
  Wiring
•

• IDE     Arduino I/O




   *4   Interaction Design Institute Ivrea
Wiring




         SparkFun Electronics
Arduino Duemilanove




                SparkFun Electronics
Arduino IDE
•
    –
    –
•
LilyPad Arduino




                  SparkFun Electronics
Arduino Pro Mini




                   SparkFun Electronics
Arduino ProtoShield




                 SparkFun Electronics
Arduino XBee Shield




                SparkFun Electronics
Arduino
          GND




                +5V GND
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
Arduino
•
•
•
•
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);
}
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;
}
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;
}
Arduino
• C/C++
•
•
Arduino      PC
•
    –
    – USB
    – Ethernet
•
    – Bluetooth
    – IEEE 802.15.4 / ZigBee
Firmata
http://firmata.org/
• Hans-Christoph Steiner
• MIDI
• Arduino 0012
Firmata             PC
•   Pd (aka Pure Data)
•   Processing
•   Funnel
•   Linux C++
•   C++/openFrameworks
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
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
IEEE 802.15.4
•               1
•
IEEE 802.15.4

                      Star
  Point to Point




  Point to Multi




                   802.15.4 Coordinator
                   802.15.4 End Device
ZigBee
•        1
•
•
ZigBee




         Mesh
           Coordinator
           Router
           End Device
XBee
• IEEE 802.15.4 ZigBee 2        *5

  – XBee 802.15.4
  – XBee ZB ZigBee PRO
•                        3500
•
•




  *5
XBee
•           5V
• UDP
•
  100kbps
XBee
               XBee
• hardware/fio/tool/XBeeConfigTool
•
• PAN ID
•
•                     MY ID
• Configure
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
FIO
• hardware/fio/firmware/FioStandardFirmata
• Upload to I/O Board
FIO
•   FIO
•   XBee Explorer USB   PC
•   Funnel Server
•   FioTest
Funnel 009
• I2 C
  –
  –
  –         LED
• Funnel Server
• XBee       FIO
•
2006
•
    –
    – 3D
    –
    –
•
•
2008
http://67.org/ws/




   Funnel           ActionScript
1 of 155

Recommended

Day2.Combinational Logic by
Day2.Combinational LogicDay2.Combinational Logic
Day2.Combinational LogicRon Liu
397 views19 slides
Scottish Ruby Conference 2010 Arduino, Ruby RAD by
Scottish Ruby Conference 2010 Arduino, Ruby RADScottish Ruby Conference 2010 Arduino, Ruby RAD
Scottish Ruby Conference 2010 Arduino, Ruby RADlostcaggy
1.6K views65 slides
TC74LCX244FW PSpice Model (Free SPICE Model) by
TC74LCX244FW PSpice Model (Free SPICE Model)TC74LCX244FW PSpice Model (Free SPICE Model)
TC74LCX244FW PSpice Model (Free SPICE Model)Tsuyoshi Horigome
261 views13 slides
TC74LCX244F PSpice Model (Free SPICE Model) by
TC74LCX244F PSpice Model (Free SPICE Model)TC74LCX244F PSpice Model (Free SPICE Model)
TC74LCX244F PSpice Model (Free SPICE Model)Tsuyoshi Horigome
615 views13 slides
TC74LCX244FT PSpice Model (Free SPICE Model) by
TC74LCX244FT PSpice Model (Free SPICE Model)TC74LCX244FT PSpice Model (Free SPICE Model)
TC74LCX244FT PSpice Model (Free SPICE Model)Tsuyoshi Horigome
367 views13 slides
DomCode 2015 - Abusing phones to make the internet of things by
DomCode 2015 - Abusing phones to make the internet of thingsDomCode 2015 - Abusing phones to make the internet of things
DomCode 2015 - Abusing phones to make the internet of thingsJan Jongboom
1.4K views93 slides

More Related Content

What's hot

Home Automation with Android Things and the Google Assistant by
Home Automation with Android Things and the Google AssistantHome Automation with Android Things and the Google Assistant
Home Automation with Android Things and the Google AssistantNilhcem
1.4K views92 slides
Using Android Things to Detect & Exterminate Reptilians by
Using Android Things to Detect & Exterminate ReptiliansUsing Android Things to Detect & Exterminate Reptilians
Using Android Things to Detect & Exterminate ReptiliansNilhcem
1.4K views117 slides
TC74VHC244FW PSpice Model (Free SPICE Model) by
TC74VHC244FW PSpice Model (Free SPICE Model)TC74VHC244FW PSpice Model (Free SPICE Model)
TC74VHC244FW PSpice Model (Free SPICE Model)Tsuyoshi Horigome
283 views12 slides
TC74VHC244FT PSpice Model (Free SPICE Model) by
TC74VHC244FT PSpice Model (Free SPICE Model)TC74VHC244FT PSpice Model (Free SPICE Model)
TC74VHC244FT PSpice Model (Free SPICE Model)Tsuyoshi Horigome
258 views12 slides
TC74VHC244F PSpice Model (Free SPICE Model) by
TC74VHC244F PSpice Model (Free SPICE Model)TC74VHC244F PSpice Model (Free SPICE Model)
TC74VHC244F PSpice Model (Free SPICE Model)Tsuyoshi Horigome
318 views12 slides
Device Modeling of Oscillator using PSpice by
Device Modeling of Oscillator using PSpiceDevice Modeling of Oscillator using PSpice
Device Modeling of Oscillator using PSpiceTsuyoshi Horigome
293 views3 slides

What's hot(19)

Home Automation with Android Things and the Google Assistant by Nilhcem
Home Automation with Android Things and the Google AssistantHome Automation with Android Things and the Google Assistant
Home Automation with Android Things and the Google Assistant
Nilhcem1.4K views
Using Android Things to Detect & Exterminate Reptilians by Nilhcem
Using Android Things to Detect & Exterminate ReptiliansUsing Android Things to Detect & Exterminate Reptilians
Using Android Things to Detect & Exterminate Reptilians
Nilhcem1.4K views
TC74VHC244FW PSpice Model (Free SPICE Model) by Tsuyoshi Horigome
TC74VHC244FW PSpice Model (Free SPICE Model)TC74VHC244FW PSpice Model (Free SPICE Model)
TC74VHC244FW PSpice Model (Free SPICE Model)
Tsuyoshi Horigome283 views
TC74VHC244FT PSpice Model (Free SPICE Model) by Tsuyoshi Horigome
TC74VHC244FT PSpice Model (Free SPICE Model)TC74VHC244FT PSpice Model (Free SPICE Model)
TC74VHC244FT PSpice Model (Free SPICE Model)
Tsuyoshi Horigome258 views
TC74VHC244F PSpice Model (Free SPICE Model) by Tsuyoshi Horigome
TC74VHC244F PSpice Model (Free SPICE Model)TC74VHC244F PSpice Model (Free SPICE Model)
TC74VHC244F PSpice Model (Free SPICE Model)
Tsuyoshi Horigome318 views
Device Modeling of Oscillator using PSpice by Tsuyoshi Horigome
Device Modeling of Oscillator using PSpiceDevice Modeling of Oscillator using PSpice
Device Modeling of Oscillator using PSpice
Tsuyoshi Horigome293 views
Mdp plus 2.1 by boedax
Mdp plus 2.1Mdp plus 2.1
Mdp plus 2.1
boedax1.4K views
Digital system design practical file by Archita Misra
Digital system design practical fileDigital system design practical file
Digital system design practical file
Archita Misra6.5K views
Vhdl lab manual by Mukul Mohal
Vhdl lab manualVhdl lab manual
Vhdl lab manual
Mukul Mohal2.8K views
openFrameworks、サウンド機能・音響合成、ofxMaxim, ofxOsc, ofxPd, ofxSuperCollider by Atsushi Tadokoro
openFrameworks、サウンド機能・音響合成、ofxMaxim, ofxOsc, ofxPd, ofxSuperCollideropenFrameworks、サウンド機能・音響合成、ofxMaxim, ofxOsc, ofxPd, ofxSuperCollider
openFrameworks、サウンド機能・音響合成、ofxMaxim, ofxOsc, ofxPd, ofxSuperCollider
Atsushi Tadokoro11.2K views
Stabilizer: Statistically Sound Performance Evaluation by Emery Berger
Stabilizer: Statistically Sound Performance EvaluationStabilizer: Statistically Sound Performance Evaluation
Stabilizer: Statistically Sound Performance Evaluation
Emery Berger17.2K views
Writing more complex models by Mohamed Samy
Writing more complex modelsWriting more complex models
Writing more complex models
Mohamed Samy1.5K views
Scala Under the Hood / ScalaSwarm by Tzofia Shiftan
Scala Under the Hood / ScalaSwarmScala Under the Hood / ScalaSwarm
Scala Under the Hood / ScalaSwarm
Tzofia Shiftan1.3K views
NSClient++ whats new for 0.3.9 users by Michael Medin
NSClient++ whats new for 0.3.9 usersNSClient++ whats new for 0.3.9 users
NSClient++ whats new for 0.3.9 users
Michael Medin286 views
W8_2: Inside the UoS Educational Processor by Daniel Roggen
W8_2: Inside the UoS Educational ProcessorW8_2: Inside the UoS Educational Processor
W8_2: Inside the UoS Educational Processor
Daniel Roggen148 views
TC74VCX244FT PSpice Model (Free SPICE Model) by Tsuyoshi Horigome
TC74VCX244FT PSpice Model (Free SPICE Model)TC74VCX244FT PSpice Model (Free SPICE Model)
TC74VCX244FT PSpice Model (Free SPICE Model)
Tsuyoshi Horigome337 views
Arduino workshop by Jonah Marrs
Arduino workshopArduino workshop
Arduino workshop
Jonah Marrs177 views

Viewers also liked

Presentation 2nd campaign ideas by
Presentation 2nd campaign ideasPresentation 2nd campaign ideas
Presentation 2nd campaign ideasmegx
318 views17 slides
Flea marlet flyer by
Flea marlet flyerFlea marlet flyer
Flea marlet flyerPearl Mims
45 views2 slides
Shanghai XY Flea Market - historical moment by
Shanghai XY Flea Market - historical momentShanghai XY Flea Market - historical moment
Shanghai XY Flea Market - historical momentKuan Ong
419 views20 slides
Janet Firth's Flea Market Flips by
Janet Firth's Flea Market FlipsJanet Firth's Flea Market Flips
Janet Firth's Flea Market FlipsJanet Firth
907 views15 slides
130205 epa exc_event_seminar by
130205 epa exc_event_seminar130205 epa exc_event_seminar
130205 epa exc_event_seminarRudolf Husar
484 views43 slides
Plan it! by
Plan it!Plan it!
Plan it!joanrdrgz
657 views8 slides

Viewers also liked(7)

Presentation 2nd campaign ideas by megx
Presentation 2nd campaign ideasPresentation 2nd campaign ideas
Presentation 2nd campaign ideas
megx318 views
Flea marlet flyer by Pearl Mims
Flea marlet flyerFlea marlet flyer
Flea marlet flyer
Pearl Mims45 views
Shanghai XY Flea Market - historical moment by Kuan Ong
Shanghai XY Flea Market - historical momentShanghai XY Flea Market - historical moment
Shanghai XY Flea Market - historical moment
Kuan Ong419 views
Janet Firth's Flea Market Flips by Janet Firth
Janet Firth's Flea Market FlipsJanet Firth's Flea Market Flips
Janet Firth's Flea Market Flips
Janet Firth907 views
130205 epa exc_event_seminar by Rudolf Husar
130205 epa exc_event_seminar130205 epa exc_event_seminar
130205 epa exc_event_seminar
Rudolf Husar484 views
Plan it! by joanrdrgz
Plan it!Plan it!
Plan it!
joanrdrgz657 views

Similar to 67WS Seminar Event

Workshop at AXIS Inc. by
Workshop at AXIS Inc.Workshop at AXIS Inc.
Workshop at AXIS Inc.Shigeru Kobayashi
741 views185 slides
Workshop at IAMAS 2008-05-24 by
Workshop at IAMAS 2008-05-24Workshop at IAMAS 2008-05-24
Workshop at IAMAS 2008-05-24Shigeru Kobayashi
638 views157 slides
Make: Tokyo Meeting 03 by
Make: Tokyo Meeting 03Make: Tokyo Meeting 03
Make: Tokyo Meeting 03Shigeru Kobayashi
1.6K views118 slides
YCAM Workshop Part 2 by
YCAM Workshop Part 2YCAM Workshop Part 2
YCAM Workshop Part 2Shigeru Kobayashi
526 views71 slides
Geidai Open Workshop 2009 by
Geidai Open Workshop 2009Geidai Open Workshop 2009
Geidai Open Workshop 2009Shigeru Kobayashi
858 views177 slides
67WS Funnel by
67WS Funnel67WS Funnel
67WS FunnelShigeru Kobayashi
759 views115 slides

Similar to 67WS Seminar Event(20)

Getting Started With Raspberry Pi - UCSD 2013 by Tom Paulus
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013
Tom Paulus1.9K views
iOS Bluetooth Low Energy (BLE) Remote Robot Interface by Steve Knodl
iOS Bluetooth Low Energy (BLE) Remote Robot InterfaceiOS Bluetooth Low Energy (BLE) Remote Robot Interface
iOS Bluetooth Low Energy (BLE) Remote Robot Interface
Steve Knodl234 views
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21 by josnihmurni2907
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
Twin wheeler modified for arduino simplified serial protocol to sabertooth v21
josnihmurni290780 views
Arduino for Beginners by Sarwan Singh
Arduino for BeginnersArduino for Beginners
Arduino for Beginners
Sarwan Singh618 views
Game Development using SDL and the PDK by ardiri
Game Development using SDL and the PDK Game Development using SDL and the PDK
Game Development using SDL and the PDK
ardiri2K views
Android Things in action by Stefano Sanna
Android Things in actionAndroid Things in action
Android Things in action
Stefano Sanna646 views

More from Shigeru Kobayashi

Maker Faireを持続可能にするには? by
Maker Faireを持続可能にするには?Maker Faireを持続可能にするには?
Maker Faireを持続可能にするには?Shigeru Kobayashi
427 views23 slides
Maker Faire Tokyo 2018 by
Maker Faire Tokyo 2018Maker Faire Tokyo 2018
Maker Faire Tokyo 2018Shigeru Kobayashi
1.2K views89 slides
IoT Workshop in Macao by
IoT Workshop in MacaoIoT Workshop in Macao
IoT Workshop in MacaoShigeru Kobayashi
1.6K views32 slides
au未来研究所ハッカソン by
au未来研究所ハッカソンau未来研究所ハッカソン
au未来研究所ハッカソンShigeru Kobayashi
1.7K views22 slides
Maker Faire Tokyo 2015 by
Maker Faire Tokyo 2015Maker Faire Tokyo 2015
Maker Faire Tokyo 2015Shigeru Kobayashi
9.4K views17 slides
Gesture Workshop by
Gesture WorkshopGesture Workshop
Gesture WorkshopShigeru Kobayashi
1.4K views9 slides

More from Shigeru Kobayashi(20)

Maker Faireを持続可能にするには? by Shigeru Kobayashi
Maker Faireを持続可能にするには?Maker Faireを持続可能にするには?
Maker Faireを持続可能にするには?
Shigeru Kobayashi427 views
テレマティクスハッカソン参加同意書 by Shigeru Kobayashi
テレマティクスハッカソン参加同意書テレマティクスハッカソン参加同意書
テレマティクスハッカソン参加同意書
Shigeru Kobayashi2.4K views
monoFabアイデアソンミーティング参加同意書 by Shigeru Kobayashi
monoFabアイデアソンミーティング参加同意書monoFabアイデアソンミーティング参加同意書
monoFabアイデアソンミーティング参加同意書
Shigeru Kobayashi2.8K views
情報学基礎:エレクトロニクス by Shigeru Kobayashi
情報学基礎:エレクトロニクス情報学基礎:エレクトロニクス
情報学基礎:エレクトロニクス
Shigeru Kobayashi2.4K views
Engadget電子工作部:インテルGalileoでガジェットを作ろう! by Shigeru Kobayashi
Engadget電子工作部:インテルGalileoでガジェットを作ろう!Engadget電子工作部:インテルGalileoでガジェットを作ろう!
Engadget電子工作部:インテルGalileoでガジェットを作ろう!
Shigeru Kobayashi1.4K views
イノベーション創出のファシリテータとしてのデジタル工作機械を備えた市民工房 by Shigeru Kobayashi
イノベーション創出のファシリテータとしてのデジタル工作機械を備えた市民工房イノベーション創出のファシリテータとしてのデジタル工作機械を備えた市民工房
イノベーション創出のファシリテータとしてのデジタル工作機械を備えた市民工房
Shigeru Kobayashi2.7K views

Recently uploaded

New Icon Presentation.pdf by
New Icon Presentation.pdfNew Icon Presentation.pdf
New Icon Presentation.pdfsydneyjrichardson
21 views5 slides
Sudden Deafness Design Document by
Sudden Deafness Design DocumentSudden Deafness Design Document
Sudden Deafness Design Documentwyfangherman
48 views19 slides
Anti -Parkinsonian Drugs-Medicinal Chemistry by
Anti -Parkinsonian Drugs-Medicinal ChemistryAnti -Parkinsonian Drugs-Medicinal Chemistry
Anti -Parkinsonian Drugs-Medicinal ChemistryNarminHamaaminHussen
17 views36 slides
FIESTAS DE QUITO.pdf by
FIESTAS DE QUITO.pdfFIESTAS DE QUITO.pdf
FIESTAS DE QUITO.pdfeluniversocom
15 views8 slides
Scopic UX Design Test Task.pdf by
Scopic UX Design Test Task.pdfScopic UX Design Test Task.pdf
Scopic UX Design Test Task.pdfAtiqur Rahaman
302 views36 slides
Presentation (1).pdf by
Presentation (1).pdfPresentation (1).pdf
Presentation (1).pdfhjksa
17 views5 slides

Recently uploaded(20)

Sudden Deafness Design Document by wyfangherman
Sudden Deafness Design DocumentSudden Deafness Design Document
Sudden Deafness Design Document
wyfangherman48 views
Scopic UX Design Test Task.pdf by Atiqur Rahaman
Scopic UX Design Test Task.pdfScopic UX Design Test Task.pdf
Scopic UX Design Test Task.pdf
Atiqur Rahaman302 views
Presentation (1).pdf by hjksa
Presentation (1).pdfPresentation (1).pdf
Presentation (1).pdf
hjksa17 views
TISFLEET WEB DESIGN PROJECT by Rabius Sany
TISFLEET WEB DESIGN PROJECTTISFLEET WEB DESIGN PROJECT
TISFLEET WEB DESIGN PROJECT
Rabius Sany39 views
Big Deal Curmel Moton Shirt by brandshop1
Big Deal Curmel Moton ShirtBig Deal Curmel Moton Shirt
Big Deal Curmel Moton Shirt
brandshop19 views
IEC 600068-2-39 ENVIROMENT TESTING COMBINED TEMPERATURE LOW HUMIDTY.pdf by NirmalanGanapathy1
IEC 600068-2-39 ENVIROMENT TESTING COMBINED TEMPERATURE LOW HUMIDTY.pdfIEC 600068-2-39 ENVIROMENT TESTING COMBINED TEMPERATURE LOW HUMIDTY.pdf
IEC 600068-2-39 ENVIROMENT TESTING COMBINED TEMPERATURE LOW HUMIDTY.pdf
Free World aids day Template from Best presentation design agency by slideceotemplates
Free World aids day Template from Best presentation design agencyFree World aids day Template from Best presentation design agency
Free World aids day Template from Best presentation design agency
Design System in Figma A to Z.pdf by Atiqur Rahaman
Design System in Figma A to Z.pdfDesign System in Figma A to Z.pdf
Design System in Figma A to Z.pdf
Atiqur Rahaman22 views
StratPlanning Manual 220713.pdf by Lakewalk Media
StratPlanning Manual 220713.pdfStratPlanning Manual 220713.pdf
StratPlanning Manual 220713.pdf
Lakewalk Media15 views

67WS Seminar Event

  • 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 – – –
  • 5. Make Volume 04 Sketch 2008
  • 6. Make Volume 05 Sketch / Prototype 2008
  • 7. Make Volume 06 Prototyping Lab: 2009
  • 10. ITP*1 Tom Igoe • 1 • • 1 *1 Interactive Telecommunications Program
  • 11. PC • ASCII • 1 bps
  • 12. Alto (1973) http://toastytech.com/guis/
  • 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;
  • 24. Gainer • I/O • – ActionScript 2/3 – Processing – Max/MSP
  • 26. I/O
  • 28. I/O
  • 30. LED
  • 31. –2 – GND – V
  • 33. – – A
  • 35. – – Ω
  • 37. • 1,000 1kΩ • 1,000,000 1MΩ • 1,000 1 1mA • 1 50µA 1,000,000
  • 40. +5V GND
  • 44. LED
  • 45. • • – – –
  • 47. LED
  • 48. LED • LED 20mA • • •
  • 49. V =I ×R •V V •I A •R Ω
  • 50. − LED ×R = LED R − LED R= LED 5.0V LED 1.8V 10mA 5 − 1.8 3.2 R= = = 0.01 0.01
  • 51. LED
  • 52. +5V • GND •
  • 53. LED NG
  • 54. LED
  • 55. LED 7
  • 56. Funnel Gainer • GUI •
  • 58. Funnel • – – – – •
  • 60. Bill Moggridge, Designing Interactions (2006)
  • 61. Funnel Gainer • Gainer – – Gainer I/O 1:1 • Funnel – – Arduino XBee
  • 62. Funnel Sketching User Experiences Getting the Design Right and the Right Design Bill Buxton Morgan Kaufmann Pub 2007
  • 63. Funnel Bill Buxton, Sketching User Experiences (2008)
  • 64. Funnel Bill Buxton, Sketching User Experiences (2008)
  • 65. Funnel • GUI • – Convolution – SetPoint – Scaler – Osc • I/O
  • 67. Gainer I/O 2 • din 0 1 2 – – • ain 0 1 256 – –
  • 68. din 0
  • 69. din 0
  • 70. • • – rising edge – falling edge
  • 71. 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; // }; };
  • 72. 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 });
  • 73. ain 0
  • 74. ain 0
  • 78. ain 0 CdS
  • 79. ain 0 CdS
  • 80. ain 0 CdS • • GainerSignalScope • •
  • 81. Gainer.remap() 3 Gainer.remap() 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); }; };
  • 82. Scaler 4 Scaler gio = new Gainer(); gio.analogInput(0).filters = [new Scaler(0.2, 0.6, 0, 1, Scaler.LINEAR, true)];
  • 83. – – •
  • 84. 1 2 51 2 set point.fla var threshold:Number = 127; // var hysteresis:Number = 10; // var lastState:Number = -1; // gio.onReady = function() { gio.beginAnalogInput();
  • 85. 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; }; };
  • 86. 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; }; };
  • 87. 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);
  • 88. ain 0
  • 89. ain 0
  • 90. ain 0 SoftPot
  • 91. ain 0 SoftPot
  • 92. ain 0 SoftPot • • •
  • 93. ain
  • 94. ain
  • 97. • • -1 +1 • sin •
  • 98. • • LPF • HPF
  • 99. 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;
  • 100. 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; } }
  • 101. Gainer 11 MovingAverageFilter var gio:Gainer = new Gainer(quot;localhostquot;, 2000, Gainer.MODE1, true); // var smoothFilter:MovingAverageFilter = new MovingAverageFilter(8); function loop():Void { var val:Number = smoothFilter.processSample(this.analogInput[0]); ...
  • 102. Convolution 12 Convolution gio = new Gainer(); gio.analogInput(0).filters = [new Convolution(Convolution.MOVING_AVERAGE)];
  • 103. 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; }
  • 104. Gainer I/O 2 • dout 0 1 2 – LED – • *3 aout 0 255 256 – LED – *3 PWM
  • 105. 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; }
  • 106. 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; }
  • 107. dout 0 LED
  • 108. dout 0 LED
  • 109. 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; }
  • 110. aout 0 LED
  • 111. aout 0 LED
  • 112. 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; }
  • 113. 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; }
  • 114. FIO (Funnel I/O) • LilyPad Arduino v1.6 • • XBee
  • 117. FIO (Funnel I/O) v1.3 - +
  • 119. FIO v1.3 vs Funnel IO Remixed
  • 120. Arduino • Hernando Barrag´n IDII*4 a Wiring • • IDE Arduino I/O *4 Interaction Design Institute Ivrea
  • 121. Wiring SparkFun Electronics
  • 122. Arduino Duemilanove SparkFun Electronics
  • 124. – – •
  • 125. LilyPad Arduino SparkFun Electronics
  • 126. Arduino Pro Mini SparkFun Electronics
  • 127. Arduino ProtoShield SparkFun Electronics
  • 128. Arduino XBee Shield SparkFun Electronics
  • 129. Arduino GND +5V GND
  • 130. 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
  • 132. 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); }
  • 133. 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; }
  • 134. 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; }
  • 136. Arduino PC • – – USB – Ethernet • – Bluetooth – IEEE 802.15.4 / ZigBee
  • 138. Firmata PC • Pd (aka Pure Data) • Processing • Funnel • Linux C++ • C++/openFrameworks
  • 139. 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
  • 140. 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
  • 142. IEEE 802.15.4 Star Point to Point Point to Multi 802.15.4 Coordinator 802.15.4 End Device
  • 143. ZigBee • 1 • •
  • 144. ZigBee Mesh Coordinator Router End Device
  • 145. XBee • IEEE 802.15.4 ZigBee 2 *5 – XBee 802.15.4 – XBee ZB ZigBee PRO • 3500 • • *5
  • 146. XBee • 5V • UDP • 100kbps
  • 147. XBee XBee • hardware/fio/tool/XBeeConfigTool • • PAN ID • • MY ID • Configure
  • 148. 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
  • 150. FIO • FIO • XBee Explorer USB PC • Funnel Server • FioTest
  • 151. Funnel 009 • I2 C – – – LED • Funnel Server • XBee FIO •
  • 152. 2006
  • 153. – – 3D – – • •
  • 154. 2008
  • 155. http://67.org/ws/ Funnel ActionScript