Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Physical JavaScript with Johnny-5, Cylon and Te...
Search
mulderp
September 24, 2014
Programming
1.1k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Physical JavaScript with Johnny-5, Cylon and Tessel
A small overview on the current state of JavaScript for physical computing
mulderp
September 24, 2014
More Decks by mulderp
See All by mulderp
Node.js for Embedded Systems
mulderp
1
2.8k
Nodebotsday
mulderp
1
160
I2C basics with Arduino
mulderp
0
250
Sharing hardware with JavaScript
mulderp
1
250
Arduino October meetup
mulderp
0
150
Blogging and writing about JavaScript
mulderp
2
980
Minimum Viable Interactions
mulderp
3
660
Arduino July Meetup
mulderp
0
130
Handlebones
mulderp
0
260
Other Decks in Programming
See All in Programming
WebRTC映像をAirPlayに対応させる挑戦.pdf
monolithic_adam
0
340
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
350
R8 の設定見直しでアプリサイズ削減
andpad
0
190
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
470
SREの越境 / SRE Collaboration
y0hgi
2
300
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
920
Simple Storage Service(S3) is not simple
iwatsukayura
0
210
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
350
Agents on Rails - Rails at Scale 2026
irinanazarova
0
340
Atomic Design, Enforced: Scaling Mobile Design Systems (next.app devCon / droidCon Berlin 2026)
steliosf
PRO
0
130
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
200
Featured
See All Featured
Mind Mapping
helmedeiros
1
390
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Statistics for Hackers
jakevdp
799
230k
Test your architecture with Archunit
thirion
2
2.4k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Cult of Friendly URLs
andyhume
79
7k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
520
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
600
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.9k
Transcript
Physical NodeJS! with Johnny-5, Cylon and Tessel Patrick Mulder @mulpat
Munich Node JS User Group September 2014
https://www.flickr.com/photos/spelio/13884611917
ngraph http://anvaka.github.io/talks/jsfest/presentation
maker labs https://www.flickr.com/photos/leesean/3098869562
Source: Sander Arts, Atmel
“inspecting” your car https://vimeo.com/84498522
new browser controls https://www.flickr.com/photos/frenchhope/317111231 https://www.flickr.com/photos/bagogames/14073389239
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”
Arduino! 1x1
Arduino UNO MPU Digital Pins Analog Pins USB Power Pins
a “typical” project configuration blocking! code Processing IDE sketch
Embedded Code void setup() {! pinMode(led, OUTPUT);! }! ! void
loop() {! digitalWrite(led, HIGH);! delay(300);! digitalWrite(led, LOW); ! delay(2700); ! }
blink == blocking ? void loop() {! ! blink();! !
check_network();! move_something();! wait_for_input();! write_to_file();! }
–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
How would you write this with JavaScript ?
blink = function() {! led.toggle();! setTimeout(blink, 2700);! }! ! blink();
setTimeout(…)
setInterval(…) setInterval(function () {! led.toggle();! }, 2700);
https://github.com/rwaldron/johnny-five Johnny-5 API
Johnny-5 API this.repl.inject({! board: this! }); https://github.com/rwaldron/johnny-five/tree/master/docs led.fadeIn(); led.blink(100); //
or led.strobe() led.color(keymap[key.name]);
demo johnny-5 http://www.flickr.com/photos/tronixstuff/5268597956/
How can Arduino speak JavaScript ?
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
firmata sketch
firmata test
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
Network? This means Arduino Yun…
None
Yun architecture
acts-as-webserver http://www.open-electronics.org/interact-and-remotely-control-arduino-yun-with-ajax/#
For developer, OpenWrt is the framework to build an application
without having to build a complete firmware around it + embedded host
Cylon.js http://cylonjs.com/
Cylon.js
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();
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
How does it work? today tomorrow
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);
physical JavaScript is fun :) still in early stages dedicated
platforms emerge
Thanks! http://blog.farsinotare.com https://oshpark.com/shared_projects/ZsQu0dA9 https://www.kickstarter.com/projects/311408456/rgb-123-led-matrices
None
None
https://iotroadshow.intel.com/de/home/