Workshop at AXIS Inc.

Shigeru Kobayashi
Shigeru KobayashiProfessor at Institute of Advanced Media Arts and Sciences [IAMAS]
IAMAS Gainer/Funnel
2009   3   15 16
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
2
•   10:00 14:45
•                15:00 16:30
•        Funnel        16:30 17:30
•              17:30 18:00
•
•
•
• 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
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
2/2


              AMN11112     1
              GP2Y0A21YK   1
                           1
SoftPot       100mm        1
FSR           FSR #402     1
SoftPot/FSR                1
•                          ITP*1    Tom Igoe

•
             1
•

•                               1


    *1   Interactive Telecommunications Program
ITP
ITP Winter Show 2008
• ITP                              2
• 12 17          18
• http://itp.nyu.edu/shows/winter2008/
PC
•        ASCII
•         1
Alto (1973)




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

    –
    – PC
•

           Flash
•
           Nintendo Wii
•
• iPhone
•
•

•
    LED
•
          I/O   PC
•
    ActionScript C C++ Java
•

•
•
•
•
    – Flash
    – Processing
    – Max/MSP
•
    – Gainer
    – Arduino
    – Phidgets
•
•

    –
    –
    –
    –
•
•       UNDO
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
Workshop at AXIS Inc.
I/O
Workshop at AXIS Inc.
LED
Workshop at AXIS Inc.
HELLO!!
•     2007.12.22-23
•
•         19
•
•     Processing×Funnel×Gainer I/O
1 Haohao table


•
•
•            3
• NTT InterCommunication Center [ICC]
         2006.6.6-2008.3.11
1 Haohao table




             ICC
1 Haohao table
1 Haohao table
1 Haohao table
2


•
•            1
• NTT InterCommunication Center [ICC]
         2007.4.19-2008.3.9
•                     2008
2
2
2
2
2
2
2




    ICC
2




    ICC
2




    ICC
3              3
•                 11
•
•
•
• IAMAS
   2007.8.24-26
4 Mountain Guitar
•
•
    –
    –
•            I/O            PC
• IAMAS
•    CG
•
•
•
•
•
•
•
•
•


            littleBits coffemaker*2




    *2   http://www.vimeo.com/1389390
•
    –
    –
•
    –
    –
5 Jamming Gear
•       ×
•
    –
    –
•            I/O              PC
• Make: Tokyo Meeting 01-02
  IAMAS Gangu Project
6            ephemeral melody
•          ×          ×        ×
•
• Gainer I/O              3   Max    PC
•     CG


http://www.youtube.com/watch?v=usou5Xs4IQ0
1
•
•
•
    –
    –
•
    –
    –
•
    –2
    –    GND
    –    V
Workshop at AXIS Inc.
•
    –
    –   A
Workshop at AXIS Inc.
•
    –
    –   Ω
Workshop at AXIS Inc.
• 1,000        1kΩ
• 1,000,000          1MΩ
• 1,000
    1
              1mA
• 1,000,000
      1
                     50µA
Workshop at AXIS Inc.
•
•
+5V   GND
Workshop at AXIS Inc.
Workshop at AXIS Inc.
Workshop at AXIS Inc.
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
Gainer I/O

            2
•                     dout 0   1   2
    – LED
    –
•                                        *3
                      aout 0 255   256
    – LED
    –

    *3          PWM
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();
    }
}
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();
     };
};
dout 0   LED
dout 0   LED
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);
          };
     };
};
aout 0   LED
aout 0   LED
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);
    }
}
Gainer I/O

        2
•            din 0   1   2
    –
    –
•            ain 0 255   256
    –
    –
din 0
din 0
ain 0
ain 0
ain 0
• SignalScopeApp
•
• ain 1
•
Workshop at AXIS Inc.
Workshop at AXIS Inc.
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);
     };
};
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);
     };
};
2
•
•
    –
    –
    –
ain 0
ain 0
ain 0
•
• SignalScopeApp
•
•
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);
     };
};
ain 0
ain 0
ain 0   SoftPot
ain 0   SoftPot
ain 0   SoftPot
•
•
•
ain 0
ain 0
ain 0
• PSD
•

•       PSD movie sound.fla
din 0
• SignalScopeApp
•
•       true   false
•
    –
    –
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];
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;
     };
};
ain
ain
ain
• SignalScopeApp
• x, y, z
  –
  –
•
•
Workshop at AXIS Inc.
•
• SignalScopeApp
• -1     +1
• sin
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;
}
•
•   LPF
•   HPF
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;
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;
    }
}
•
    –   rising edge
    –   falling edge
•
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; //
     };
};
•
    –
    –

•
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();
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;
     };
};
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;
     };
};
Workshop at AXIS Inc.
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
}
Workshop at AXIS Inc.
18 2

var val0:Number = gio.analogInput[0];
var val1:Number = gio.analogInput[1];
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];
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);
Funnel
Gainer
•        GUI

•
Funnel


•
•
•
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
Funnel


•
    –
    –
    –
    –
•
Funnel
•
•
•
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
• GUI
•
  –                      Convolution
  –                            SetPoint
  –             Scaler
  –            Osc
•        I/O
Funnel
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
XIO: XBee I/O Board v1.0
XIO: XBee I/O Board v1.0
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
Star
Point to Point




Point to Multi




                                 802.15.4 Coordinator
                                 802.15.4 End Device

                 IEEE 802.15.4
IEEE 802.15.4
•               1
•
Mesh
           Coordinator
           Router
           End Device

ZigBee
ZigBee
•        1
•
•
XBee
• IEEE 802.15.4 ZigBee 2          *5

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



  *5
FIO (Funnel I/O)

• LilyPad Arduino v1.6
•
• XBee
FIO (Funnel I/O) v1.0
FIO (Funnel I/O) v1.0
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
Funnel
     009
• I2C
  –
  –
  –        LED
• XBee      FIO
•
2006
•
    –
    – 3D
    –
    –
•
•
2008
IAMAS Gainer/Funnel
2009   3   15 16
1 of 185

More Related Content

Similar to Workshop at AXIS Inc.(20)

67WS Seminar Event67WS Seminar Event
67WS Seminar Event
Shigeru Kobayashi863 views
YCAM Workshop Part 1YCAM Workshop Part 1
YCAM Workshop Part 1
Shigeru Kobayashi708 views
WCAN mini ActionScript Vol.4WCAN mini ActionScript Vol.4
WCAN mini ActionScript Vol.4
Shigeru Kobayashi1K views
Workshop @ Make: Tokyo Meeting 02Workshop @ Make: Tokyo Meeting 02
Workshop @ Make: Tokyo Meeting 02
Shigeru Kobayashi806 views
67WS 2008.07.1667WS 2008.07.16
67WS 2008.07.16
Shigeru Kobayashi589 views
WCAN mini ActionScript Vol.5WCAN mini ActionScript Vol.5
WCAN mini ActionScript Vol.5
Shigeru Kobayashi1.6K views
Talk @ Make: Tokyo Meeting 02Talk @ Make: Tokyo Meeting 02
Talk @ Make: Tokyo Meeting 02
Shigeru Kobayashi856 views
Apple Store, GinzaApple Store, Ginza
Apple Store, Ginza
Shigeru Kobayashi1.3K views
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
Luki B. Subekti296 views
Introducing the ArduinoIntroducing the Arduino
Introducing the Arduino
Charles A B Jr2.1K views
Android Things Linux Day 2017 Android Things Linux Day 2017
Android Things Linux Day 2017
Stefano Sanna536 views
Powerful Electronics with ArduinoPowerful Electronics with Arduino
Powerful Electronics with Arduino
Abdallah Hodieb209 views
Intel galileo gen 2Intel galileo gen 2
Intel galileo gen 2
srknec1.4K views
Prižiganje lučk z ArduinomPrižiganje lučk z Arduinom
Prižiganje lučk z Arduinom
Maja Kraljič838 views
PCB CAD workshopPCB CAD workshop
PCB CAD workshop
Shigeru Kobayashi1.3K views

More from Shigeru Kobayashi(20)

Maker Faire Tokyo 2018Maker Faire Tokyo 2018
Maker Faire Tokyo 2018
Shigeru Kobayashi1.2K views
IoT Workshop in MacaoIoT Workshop in Macao
IoT Workshop in Macao
Shigeru Kobayashi1.6K views
au未来研究所ハッカソンau未来研究所ハッカソン
au未来研究所ハッカソン
Shigeru Kobayashi1.7K views
Maker Faire Tokyo 2015Maker Faire Tokyo 2015
Maker Faire Tokyo 2015
Shigeru Kobayashi9.4K views
Gesture WorkshopGesture Workshop
Gesture Workshop
Shigeru Kobayashi1.4K views
Telematics HackathonTelematics Hackathon
Telematics Hackathon
Shigeru Kobayashi1.1K views
monoFab Ideathon MeetingmonoFab Ideathon Meeting
monoFab Ideathon Meeting
Shigeru Kobayashi4K views
CEATEC JAPAN 2014CEATEC JAPAN 2014
CEATEC JAPAN 2014
Shigeru Kobayashi1.2K views
BLE Boot CampBLE Boot Camp
BLE Boot Camp
Shigeru Kobayashi1.7K views
Fab MeetUp Vol.5Fab MeetUp Vol.5
Fab MeetUp Vol.5
Shigeru Kobayashi999 views
SK creator planet 2014SK creator planet 2014
SK creator planet 2014
Shigeru Kobayashi10.4K views
Solid 2014 kobayashiSolid 2014 kobayashi
Solid 2014 kobayashi
Shigeru Kobayashi1.4K views
情報学基礎:エレクトロニクス情報学基礎:エレクトロニクス
情報学基礎:エレクトロニクス
Shigeru Kobayashi2.4K views
Rebuilding the world, from the 'periphery'Rebuilding the world, from the 'periphery'
Rebuilding the world, from the 'periphery'
Shigeru Kobayashi3K views
第2回iBeaconハッカソン第2回iBeaconハッカソン
第2回iBeaconハッカソン
Shigeru Kobayashi22.3K views

Recently uploaded(20)

Drama KS5 BreakdownDrama KS5 Breakdown
Drama KS5 Breakdown
WestHatch50 views
Narration  ppt.pptxNarration  ppt.pptx
Narration ppt.pptx
Tariq KHAN62 views
Class 10 English  lesson plansClass 10 English  lesson plans
Class 10 English lesson plans
Tariq KHAN172 views
AI Tools for Business and StartupsAI Tools for Business and Startups
AI Tools for Business and Startups
Svetlin Nakov57 views
BYSC infopack.pdfBYSC infopack.pdf
BYSC infopack.pdf
Fundacja Rozwoju Społeczeństwa Przedsiębiorczego144 views
Material del tarjetero LEES Travesías.docxMaterial del tarjetero LEES Travesías.docx
Material del tarjetero LEES Travesías.docx
Norberto Millán Muñoz57 views
ACTIVITY BOOK key water sports.pptxACTIVITY BOOK key water sports.pptx
ACTIVITY BOOK key water sports.pptx
Mar Caston Palacio132 views
Narration lesson plan.docxNarration lesson plan.docx
Narration lesson plan.docx
Tariq KHAN90 views
Nico Baumbach IMR Media ComponentNico Baumbach IMR Media Component
Nico Baumbach IMR Media Component
InMediaRes1186 views
NS3 Unit 2 Life processes of animals.pptxNS3 Unit 2 Life processes of animals.pptx
NS3 Unit 2 Life processes of animals.pptx
manuelaromero201389 views
discussion post.pdfdiscussion post.pdf
discussion post.pdf
jessemercerail70 views
Plastic waste.pdfPlastic waste.pdf
Plastic waste.pdf
alqaseedae81 views
Structure and Functions of Cell.pdfStructure and Functions of Cell.pdf
Structure and Functions of Cell.pdf
Nithya Murugan142 views
Education and Diversity.pptxEducation and Diversity.pptx
Education and Diversity.pptx
DrHafizKosar56 views
CWP_23995_2013_17_11_2023_FINAL_ORDER.pdfCWP_23995_2013_17_11_2023_FINAL_ORDER.pdf
CWP_23995_2013_17_11_2023_FINAL_ORDER.pdf
SukhwinderSingh895865467 views

Workshop at AXIS Inc.

  • 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. 2 • 10:00 14:45 • 15:00 16:30 • Funnel 16:30 17:30 • 17:30 18:00
  • 5. • 1970 • 1993 2004 – – – • IAMAS 2004 – –
  • 7. Make Volume 04 Sketch 2008
  • 8. Make Volume 05 Sketch / Prototype 2008
  • 9. Make Volume 06 Prototyping Lab: 2009
  • 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. 2/2 AMN11112 1 GP2Y0A21YK 1 1 SoftPot 100mm 1 FSR FSR #402 1 SoftPot/FSR 1
  • 14. ITP*1 Tom Igoe • 1 • • 1 *1 Interactive Telecommunications Program
  • 15. ITP ITP Winter Show 2008 • ITP 2 • 12 17 18 • http://itp.nyu.edu/shows/winter2008/
  • 16. PC • ASCII • 1
  • 17. Alto (1973) http://toastytech.com/guis/
  • 18. • PC – – PC • Flash
  • 19. Nintendo Wii • • iPhone •
  • 20. • • LED • I/O PC
  • 21. ActionScript C C++ Java • •
  • 23. – Flash – Processing – Max/MSP • – Gainer – Arduino – Phidgets
  • 24. • • – – – – • • UNDO
  • 25. PIC AVR program A a0]=ain.o; aout.1 = 255; B C D
  • 26. PC Arduino Wiring program A a0]=ain.o; aout.1 = 255; B C D PC program a0]=ain.o; aout.1 = 255;
  • 27. Arduino I/O SparkFun Electronics
  • 28. I/O PC Gainer Phidgets A B C D PC program a0]=ain.o; aout.1 = 255;
  • 30. Gainer • I/O • – ActionScript 2/3 – Processing – Max/MSP
  • 32. I/O
  • 34. I/O
  • 36. LED
  • 38. HELLO!! • 2007.12.22-23 • • 19 • • Processing×Funnel×Gainer I/O
  • 39. 1 Haohao table • • • 3 • NTT InterCommunication Center [ICC] 2006.6.6-2008.3.11
  • 44. 2 • • 1 • NTT InterCommunication Center [ICC] 2007.4.19-2008.3.9 • 2008
  • 45. 2
  • 46. 2
  • 47. 2
  • 48. 2
  • 49. 2
  • 50. 2
  • 51. 2 ICC
  • 52. 2 ICC
  • 53. 2 ICC
  • 54. 3 3 • 11 • • • • IAMAS 2007.8.24-26
  • 55. 4 Mountain Guitar • • – – • I/O PC • IAMAS • CG
  • 57. • • • littleBits coffemaker*2 *2 http://www.vimeo.com/1389390
  • 58. – – • – –
  • 59. 5 Jamming Gear • × • – – • I/O PC • Make: Tokyo Meeting 01-02 IAMAS Gangu Project
  • 60. 6 ephemeral melody • × × × • • Gainer I/O 3 Max PC • CG http://www.youtube.com/watch?v=usou5Xs4IQ0
  • 61. 1 • • • – – • – –
  • 62. –2 – GND – V
  • 64. – – A
  • 66. – – Ω
  • 68. • 1,000 1kΩ • 1,000,000 1MΩ • 1,000 1 1mA • 1,000,000 1 50µA
  • 71. +5V GND
  • 75. LED
  • 76. • • – – –
  • 78. LED
  • 79. LED • LED 20mA • • •
  • 80. V =I ×R •V V •I A •R Ω
  • 81. − LED ×R = LED R − LED R= LED 5.0V LED 1.8V 10mA 5 − 1.8 3.2 R= = = 0.01 0.01
  • 82. LED
  • 83. +5V • GND •
  • 84. LED NG
  • 85. LED
  • 86. LED 7
  • 87. Gainer I/O 2 • dout 0 1 2 – LED – • *3 aout 0 255 256 – LED – *3 PWM
  • 88. 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(); } }
  • 89. 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(); }; };
  • 90. dout 0 LED
  • 91. dout 0 LED
  • 92. 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); }; }; };
  • 93. aout 0 LED
  • 94. aout 0 LED
  • 95. 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); } }
  • 96. Gainer I/O 2 • din 0 1 2 – – • ain 0 255 256 – –
  • 97. din 0
  • 98. din 0
  • 99. ain 0
  • 100. ain 0
  • 104. 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); }; };
  • 105. 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); }; };
  • 106. 2 • • – – –
  • 107. ain 0
  • 108. ain 0
  • 110. 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); }; };
  • 111. ain 0
  • 112. ain 0
  • 113. ain 0 SoftPot
  • 114. ain 0 SoftPot
  • 115. ain 0 SoftPot • • •
  • 116. ain 0
  • 117. ain 0
  • 118. ain 0 • PSD • • PSD movie sound.fla
  • 119. din 0
  • 121. true false • – –
  • 122. 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];
  • 123. 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; }; };
  • 124. ain
  • 125. ain
  • 130. 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; }
  • 131. • • LPF • HPF
  • 132. 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;
  • 133. 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; } }
  • 134. – rising edge – falling edge •
  • 135. 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; // }; };
  • 136. – – •
  • 137. 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();
  • 138. 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; }; };
  • 139. 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; }; };
  • 141. 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 }
  • 143. 18 2 var val0:Number = gio.analogInput[0]; var val1:Number = gio.analogInput[1];
  • 144. 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];
  • 145. 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);
  • 146. Funnel Gainer • GUI •
  • 148. 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
  • 149. Funnel • – – – – •
  • 151. Funnel Gainer • Gainer – – Gainer I/O 1:1 – • Funnel – – Arduino XBee –
  • 152. Funnel Sketching User Experiences Getting the Design Right and the Right Design Bill Buxton Morgan Kaufmann Pub 2007
  • 153. Funnel Bill Buxton, Sketching User Experiences (2008)
  • 154. Funnel • GUI • – Convolution – SetPoint – Scaler – Osc • I/O
  • 155. Funnel
  • 156. Arduino • Hernando Barrag´n IDII*4 a Wiring • • IDE Arduino I/O *4 Interaction Design Institute Ivrea
  • 157. Wiring SparkFun Electronics
  • 158. Arduino Duemilanove SparkFun Electronics
  • 160. – – •
  • 161. LilyPad Arduino SparkFun Electronics
  • 162. Arduino Pro Mini SparkFun Electronics
  • 163. Arduino ProtoShield SparkFun Electronics
  • 164. Arduino XBee Shield SparkFun Electronics
  • 165. XIO: XBee I/O Board v1.0
  • 166. XIO: XBee I/O Board v1.0
  • 167. 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
  • 168. Star Point to Point Point to Multi 802.15.4 Coordinator 802.15.4 End Device IEEE 802.15.4
  • 170. Mesh Coordinator Router End Device ZigBee
  • 171. ZigBee • 1 • •
  • 172. XBee • IEEE 802.15.4 ZigBee 2 *5 – XBee 802.15.4 – XBee ZB ZigBee PRO • 3500 • • *5
  • 173. FIO (Funnel I/O) • LilyPad Arduino v1.6 • • XBee
  • 178. FIO (Funnel I/O) v1.3 - +
  • 180. FIO v1.3 vs Funnel IO Remixed
  • 181. Funnel 009 • I2C – – – LED • XBee FIO •
  • 182. 2006
  • 183. – – 3D – – • •
  • 184. 2008