Connecting Hardware to
Flex
A practical guide to connecting open source
hardware (Arduino’s) to Flex
Justin Mclean
Class Software
Who am I?
• Director of Class Software for 10 years
• Developing and creating web applications for
15 years
• Programming for 25 years
• Adobe solution partner
• Adobe certified developer and trainer in Flex
and ColdFusion
• Based in Sydney Australia
Electronics Trends
• Low cost small components
• More complex components with simple
standard interfaces
• Cheap low volume board manufacture
Computing Trends
• Easier to program
• Use of high level languages
• Software tools
• Open source
Communication Trends
• Low cost long range wireless
• Mesh networks
Are We There Yet?
• Low cost fast devices
• It’s easy to communicate between devices and
computers
• Can build complex systems from off the shelf
components
• Commercial and open source products and
kits are available
Arduino
Open source hardware and software
platform
Arduino Platform
• Open source hardware and software platform
• Easy to program
• Hardware is flexible, fast, low power and low
cost
Arduino Hardware
• Comes in a number of shapes sizes
• Low cost
• Easy to program
• Easy to extend
Arduino Boards
Arduino Boards
Arduino Boards
Arduino Boards
Arduino Shields
Arduino Shields
Arduino Shields
Arduino Shields
Arduino Software Platform
• Open source cross platform IDE
• Alpha but very stable
• Code in high level C like language
• Updated frequently
• Growing and active community
Arduino IDE
Arduino Code
• C like high level language
• Inbuilt functions to read and set digital and
analog inputs and outputs
• Includes libraries to perform common
hardware or software tasks
Led Shield Demo
Led Shield Demo
Setup and Loop Functions
• Setup function called once
void setup() {
...
}
• Loop function called over and over again
void loop() {
...
}
Setting Digital Outputs
• Set digital pin as output in setup
pinMode(pin, OUTPUT);
• Digital outputs turned on or off in setup or
loop
digitalWrite(pin, HIGH);
digitalWrite(pin, LOW);
Flex
Flex to Arduino communication
Layers of Communication
• Flex to proxy via an Actionscript library
• Proxy to USB communication
• USB to arduino
Computer Arduino
Flex Code Arduino
Function Calls and
Code
Events
TCP/IP USB
AS3 Glue USB Proxy Firmata
Socket Cable
Flex to Arduino
Flex Led Demo
AS3Glue Digital Output
• Create arduino instance
var arduino:Arduino = new Arduino();
• Wait for firmware version
• Set digital pin as output
[Link](pin, [Link]);
• Turn digital output on
[Link](pin, [Link]);
AS3Glue Events
• Uses Flex events for digital inputs.
• Listen for changes via event listener
[Link]
(ArduinoEvent.DIGITAL_DATA,
onReceiveData);
public function onReceiveData
(event:ArduinoEvent):void {
}
Wireless
Communication
Wireless communication with XBee
modems
XBee Modems
• Hardware wireless modem
• Low cost
• Consume very little power
• Good range
• Easy to configure
XBee Modem
XBee Networks
• Point to point
• Point to multipoint
• Mesh
Funnel IO
• Arduino based hardware
• Java server
• Flex library
Funnel Digital Output
Funnel Digital Output
Funnel Digital Output
Setting Digital Output
• Create FIO instance
var fio:Fio = new Fio([1], [Link]);
• Turn digital output on or off by setting value
[Link](1).digitalPin(pin).value = 1;
Funnel Analog Graph
Funnel Analog Graph
Reading Analog Input
• Read analog value same way as digital value
value = ioModule(1).analogPin(pin).value;
• Event based
analogPin(pin).addEventListener(
[Link], function);
• Timer based
Issues
• Debugging can be hard
• No simulator
• Memory, power and speed limits
• Need a little electronic knowledge
Why do this?
• Expose yourself to new ideas and new ways of
solving problems
• Involves interaction with the real world
• Encourages creativity
• Platform limits improves programming skill
It’s Fun!
Questions?
Ask now, see me after the session or
email me at justin@[Link]
Useful Sites
List of useful hardware of software
sites
Software Sites
• Arduino [Link] for software,
user forum and playground
• AS3Glue [Link]
• Funnel IO [Link]
Hardware Sites
• Spark Fun (US) [Link]
• Adafruit Industries (US) http://
[Link]/
• Electronic Goldmine (US) http://
[Link]/
Other Sites
• Lady Ada [Link]
• Evil Mad Scientist http://
[Link]/
• NY Resistor [Link]
• Make Zine [Link]