Phidget
# Phidget

A phidget is a physical representation or implementation of a GUI widget. For example, an on-screen dial widget could be implemented physically as a knob.

Phidgets are a system of low-cost electronic components and sensors that are controlled by a personal computer. Using the Universal Serial Bus (USB) as the basis for all phidgets, the complexity is managed behind an Application Programming Interface (API). Applications can be developed in Mac OS X, Linux, Windows CE and Windows operating systems.

Their usage is primarily focused to allow exploration of alternative physical computer interaction systems, but have most notably been adopted by robotic enthusiasts as they greatly simplify PC-Robot interaction. Phidgets are an attempt to build physical analogue to software widgets, allowing the construction of complex physical systems out of simpler components. Phidgets are designed and produced by Phidgets Inc.

## Phidget

A phidget (physical widget) is attached to a host computer via USB. There are various phidgets available, each having a counterpart class in the phidget API. As each phidget is attached to the host computer, it is made available to control in the API, where its state can be accessed and set.

Phidgets arose out of a research project in 2001 directed by Saul Greenberg at the Department of Computer Science, University of Calgary.

## Phidget API

Phidgets can be programmed using a variety of software and programming languages, ranging from Java to Microsoft Excel.

Examples of programming languages are:

Adobe Director, AutoIt, C#, C/C++, Cocoa, Delphi, Flash AS3, Flex AS3, Java, LabVIEW, MATLAB, Max/MSP, Microsoft Robotics Studio 1.5, Python Module (version: 2.1.6.20100317), REALBasic, Visual Basic .NET, Visual Basic 6.0, Visual Basic for Applications, Visual Basic Script, Visual C/C++/Borland and FlowStone.

The phidget API is what allows systems to access the phidget devices in a high level manner. The API allows the management of devices as they are attached, to subscribe to events and to access the state of the phidgets. The core API is originally written in C and has been extended to work in numerous languages including .NET and Java.

## Examples of Phidgets

* Servo – Allows control of up to 4 servo motors. Each servo can be addressed individually where it can have its position read and set.
* PhidgetAccelerometer – The accelerometer senses acceleration in 2 and 3 dimensions.
* TextLCD – A 20 character * 2 line LCD display, acting as an alternative display mechanism in a phidget project.
* InterfaceKit – Allows input/output interface to analog and digital sensors and switches.
