Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Physical JavaScript with Johnny-5, Cylon and Te...

mulderp
September 24, 2014

Physical JavaScript with Johnny-5, Cylon and Tessel

A small overview on the current state of JavaScript for physical computing

mulderp

September 24, 2014
Tweet

More Decks by mulderp

Other Decks in Programming

Transcript

  1. example: blinking http://makezine.com/2014/05/29/10-ways-to-make-your-robot-more-humanlike/ “The average human blink rate is about

    17 blinks per minute.” (ca. 3 blinks/s) “The normal length of a blink is 100-400 milliseconds”
  2. Embedded Code void setup() {! pinMode(led, OUTPUT);! }! ! void

    loop() {! digitalWrite(led, HIGH);! delay(300);! digitalWrite(led, LOW); ! delay(2700); ! }
  3. blink == blocking ? void loop() {! ! blink();! !

    check_network();! move_something();! wait_for_input();! write_to_file();! }
  4. –Eric Lippert “The by-design purpose of JavaScript was to make

    the monkey dance when you moused over it. ” http://programmers.stackexchange.com/a/221658/4723 JavaScript
  5. Firmata protocol “The aim is to allow people to completely

    control the Arduino from software on the host computer.” http://www.firmata.org/wiki/Main_Page
  6. control flow led = new five.Led({! pin: 13! });! !

    led.on();! ! this.wait(2700, function() {! led.on();! }); JavaScript https://www.flickr.com/photos/nate/3081263606 Firmata /! serial port Arduino
  7. For developer, OpenWrt is the framework to build an application

    without having to build a complete firmware around it + embedded host
  8. led blinking var Cylon = require('cylon');! ! Cylon.robot({! connection: {!

    name: 'arduino',! adaptor: 'firmata',! port: '/dev/ttyACM0'! },! ! devices: [! { name: 'led', driver: 'led', pin: 13 },! { name: 'button', driver: 'button', pin: 2 }! ],! ! work: function(my) {! my.button.on('push', function() {! my.led.toggle()! });! }! }).start();
  9. http://www.slideshare.net/TechnicalMachine/tessel-the-end-of-web-development-as-we-know-it Tessel is a microcontroller that runs JavaScript. It's npm-compatible

    and ships with Wifi built in. Use it to easily make physical devices that connect to the web. http://www.slideshare.net/TechnicalMachine/fluent-20-min-32416115
  10. Blink first var tessel = require('tessel');! ! var gpioA =

    tessel.port['A'];! ! var led1 = gpioA.digital[0];! ! var value = true;! setInterval(function () {! led.write(value);! value = !value;! }, 2000);