nodebot: arte de controlar arduino com javascript

20
Nodebot: Arduino + Javascript Desiree Santos

Upload: desiree-santos

Post on 15-Jul-2015

321 views

Category:

Devices & Hardware


0 download

TRANSCRIPT

Nodebot: Arduino + Javascript

Desiree Santos

@desisant

• Consultora ThoughtWorks Brasil • Open hardware desde 2009 • Hobby #1 objetos interativos • Coordena (arduinrio) • Modera arduinoBrasil • Hackerspace

@desisant

Agenda

• IDE Sublime + Stino• IDE Arduino• Instalar nodejs• Download john-Five

Desenvolvimento:

100% prática:• Javascript• Eletrônica• Analógico• Digital

Referência: node-ardx.org

@desisant

Expectativa

Explorar meios diferentes para controlar o arduino Utilizando ferramentas que aumentam a nossa produtividade Extrair o melhor que o arduino proporcionaAlavancar aprendizado com JS + arduino para desenvolver projetos

Javascript é meio e não fm, não é ofcina de javascript

Sim

Não

Não se preocupe, haverá suporte para todos fcarem na mesma página

@desisant

Arduino is an open-source electronics platform based on easy-to-use hardware and software.It's intended for anyone making interactive projects.

By Massimo Banzi

@desisant

Arte de controlar arduino utilizando a linguaguem Javascript

@desisant

Montar o ambiente:

1) Baixar IDE arduino → www.arduino.cc/ → menu Download

2) Sublime Text → http://www.sublimetext.com/2

3) Instalar plugin STINO no sublime text → https://github.com/Robot-Will/Stino

4) Instalar nodejs https://nodejs.org/

@desisant

Blink – Piscar Led

2 pin (digital)5mm LED330 ohm resistor (orange-orange-brown)jumper wires

@desisant

var five = require("johnny-five");var myBoard, myLed;

myBoard = new five.Board();

myBoard.on("ready", function() {

myLed = new five.Led(13);

myLed.strobe( 1000 );

// make myLED available as "led" in REPL

this.repl.inject({ led: myLed });

// try "on", "off", "toggle", "strobe", "stop" (stops strobing)});

blink.js

@desisant

Semáforo

3 pin (digital)5mm LED330 ohm resistor (orange-orange-brown)jumper wires

@desisant

var five = require("johnny-five");var board, leds=[], ledPins = [2,3,4,5,6,7,8,9];board = new five.Board();board.on("ready", function() {

// initialize LEDs using a for loop for (var i = 0; i < ledPins.length; i++){ var myLed = new five.Led(ledPins[i]); leds.push(myLed); } function allOn(){ for (var i = 0; i < leds.length; i++) { leds[i].on(); } } function allOff(){ for (var i = 0; i < leds.length; i++) { leds[i].off(); } } function oneAfterAnother() { var delay = 1; board.counter = 0; for (var i = 0; i < leds.length; i++) { var led = leds[i]; board.wait(delay,function(){ console.log(this.counter + " on"); leds[this.counter].on(); }); board.wait(delay + 200,function(){ console.log(this.counter + " off"); leds[this.counter].off(); this.counter = (this.counter + 1) % leds.length; }); delay += 500; } } // allOn(); // board.wait(1000,allOff); oneAfterAnother(); board.loop(4500, oneAfterAnother);});

semaforo.js

@desisant

• 2 pin header x 4• Piezo element• jumper wires

Música

@desisant

var five = require("johnny-five");

five.Board().on("ready", function() { var piezo = new five.Piezo(9); var val = 0;

this.loop(200, function() { if (val ^= 1) { // Play note a4 for 1/5 second piezo.frequency(five.Piezo.Notes["a4"], 200); } });});

Music.js

@desisant

• 2 pin header x 4• 5mm LED• Pushbutton x 2• 330 ohm resistor (orange-orange-brown)• 10k Ohm Resistor (brown-black-orange) x 2• jumper wires

Push Button

@desisant

var five = require("johnny-five"), onButton, offButton, led;five.Board().on("ready", function() { onButton = new five.Button(2); led = new five.Led(13);

onButton.on("down", function(value){ led.on(); });

});

Button.js

@desisant

• 2 pin header x 4• Potentiometer 10k ohm• 5mm LED• 330 ohm resistor (orange-orange-brown)• jumper wires

Potenciômetro

@desisant

var five = require("johnny-five"), board, myPotentiometer;board = new five.Board();board.on("ready", function() { myPotentiometer = new five.Sensor({ pin: "A0", freq: 250 }); myLed = new five.Led(9); myPotentiometer.on("read", function() { var rawValue = this.raw; myLed.brightness(Math.floor(rawValue / 4)); });});

Potenciometro.js

@desisant

• 2 pin header x 4• TMP36 Temperature sensor• jumper wires

Temperatura

@desisant

var five = require("johnny-five");five.Board().on("ready", function(){ var tempSensor = new five.Sensor("A0"); tempSensor.on("read", function(err, value){ var cel = (100 * (value / 1000) - 50).toFixed(2); console.log("temp is " + cel); });});

Temperatura.js

@desisant

@desisantdesisantos.wordpress.com

Dúvidas, suporte para projetos :