The NETLab Widgets are a series of drag & drop components for Flash that enable designers to create physical computing projects quickly and easily, and in many cases with no programming. Download the full toolkit here.

Widget Categories

  • Input-Output:  These widgets communicate with microcontrollers, other computers, and software outside of Flash
  • Media: These widgets control sound, images, and video
  • Logic-Processing: These widgets enable the processing and interpretation of values as they go from one widget to the next

Common Features for all Widgets

Parameters – All widgets have parameters that control the widget behavior. You can change the default settings of these parameters by selecting a widget on the Flash stage and opening the Properties panel WINDOW>PROPERTIES.

Instance Names – Widgets communicate with each other based on the instance names of the widgets. For example, the AnalogOutput widget will set the brightness of an LED (connected to a PWM output on the microcontroller) based on the values coming from the widget named in the AnalogOutput’s “inputSource” parameter. This name refers to the instance name of the widget providing the values, e.g. an AnalogInput widget named “input0”. For this to work, you must set the instance name in the properties inspector of any widget that is used as an input or a target of another widget.

Show/Hide Widgets with “\” key – The visibility of widgets on the Flash stage is set in the parameters. But you can also interactively show or hide the widgets by pressing the back-slash key “\” on the keyboard to toggle between visible and hidden, regardless of the “invisible” setting in the parameters.

Saved Settings – For widgets that have changable settings (e.g. AnalogInput min/max numbers) in their visual interface, these settings are automatically saved in an .xml file with the same name as the Flash file. For example, if your Flash file is called project1.fla, the settings are saved in project1.xml in the same directory as the original Flash file. If you rename or save a new version of the Flash file, be sure to make a copy of the .xml settings file and give it the same name as your new Flash file.

Serial Port – For widgets set to communicate with an Arduino or XBee, the USB serial port name that the device is connected to must be set in the widget’s serialPort parameter.

  • Mac: If you only have a single device hooked up, you can simply leave the default of “/dev/cu.usb*” and the Hub will figure out which port to connect to. If you are using more than one device (i.e. any combination of Arduinos and XBees) you’ll need to specify which port each widget should connect to. To find out the name of a specific serial port (which is usually something like: “/dev/cu.usbserial-A6007WLE” – the Arduino and SparkFun XBee USB Explorer have a USB interfaces that will have a name with “/dev/cu.usbserial” at the beginning) you can find out the actual serial port name by opening up the Terminal Application (in Applications>Utilities) and typing: “ls /dev/cu*”. It’s easiest to have only one device plugged in at a time when you do this. Once you fine the device name, copy and paste it into the serialPort parameter.
  • PC: Set this to the com port the device shows up as, for example “COM5”. You can find out the port name on the PC by opening Accessories>System Tools>System Information, then select Components>USB. You should see something with FTDI in it, e.g. “USB Serial Port (COM7) FTDIBUS\VID_0403+PID_6001+A6007WLEA\0000”, where COM7 would be the name to enter into the serialPort parameter.

Input-Output Widgets

AnalogIn Read values from a microcontroller analog input
AnalogOut Send values to a PWM output on a microcontroller
BlinkMOut Control the brightness and color of the BlinkM family of smart, tri-color LEDs made by ThingM
CloudIn Receive a feed from an Internet of Things (IoT) cloud service
CloudOut Send a feed to an Internet of Things (IoT) cloud service
DigitalIn Read values from a microcontroller digital input
DigitalOut Send values to a microcontroller digital output
DmxOut Send DMX 512a lighting control signals to change the operation of lighting
MidiOutCtrl Send a MIDI Control Message to any MIDI device
MidiOutNote Send a MIDI Note Message to any MIDI device
MotionTrack Uses a video camera as an input device to provide an X,Y position from the most recent motion in the frame
MultiOut Send a string of multiple values at once to a serial, hubFeed, or OSC output
ServoOut Send position values to a microcontroller servo output
StepperIn Status of a stepper to show if it is running or not
StepperOut Move a stepper motor to a certain position

Media Widgets

ClipControl Control the characteristics of a movieClip such as width, x position, scale, etc.
ClipProperty Uses a movieClip on the stage as input and outputs a property of the clip, including X,Y,Z,width, height, etc.
SlideShow Create a timed slideshow from an ordered or random list of images provided by ListItems
SoundControl Play a sound and control its volume
VideoControl Control the playback start/stop, speed, or position in time of an external FLV video
ZSortClips Make sure clips in 3D space are in front or behind of each other according to their Z axis

Logic and Processing Widgets

Code Provides a mechanism for inserting ActionScript code between widgets
Combine Processes up to four inputs and outputs the min, max, sum, difference, etc. of those inputs
Counter Outputs values that increase or decrease by an increment each time the input reaches a threshold
Envelope Processes its input to generate an output fade up and fade down within a specified range of input values
IfThenElse Tests a condition for true or false, and outputs different values accordingly – multiple IfThenElse widgets can be combined
ListItems Manages a list of text items, loaded from a text file, and delivers each item in order or randomly
Logger Records and plays back data streams
MobileControl Used in phone and tablet projects for setting the IP address of the remote Hub for all widgets, and for hiding/showing all widgets
TweenIt Outputs a stream of rising or falling values over a specified period of time

Last modified July 6th, 2014