

const int ledPin = 13; void setup() { // initialize the digital pin as an output. pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
#include "SimpleTimer.h"
const int ledPin = 13;
SimpleTimer timer;
void setup() {
  timer.setInterval(1000, blink);
}
void loop() { 
  timer.run(); 
}
void blink() {
  digitalWrite(ledPin, digitalRead(ledPin) ^ 1); // toggle pin status
}
#include "TimerOne.h" const int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // reset led state Timer1.initialize(); Timer1.attachInterrupt(blink, 500 * 1000); // 500ms timeout } void loop() {} void blink() { digitalWrite(ledPin, digitalRead(ledPin) ^ 1); // toggle pin status }

#include "TemperatureSensor.h"
TemperatureSensor sensor(2); // setup sensor on pin 2
void setup() {
  sensor.start();
  Serial.begin(9600);
}
void loop() {
  if (sensor.updateTemperature()) {
    Serial.println(sensor.getTemperature());
  }
}

const int ledPin = 11;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, HIGH);
  Serial.begin(9600);
  Serial.setTimeout(100);
}
void loop() {
  char input[4];
  if (Serial.available() && Serial.read() == 'P')
    Serial.readBytes(input, 3);
  int pwmValue = atoi(input);
  if (pwmValue > 0) {
    analogWrite(ledPin, pwmValue);
  }
}

 class ArduinoHandler
  serialport = require('serialport')
  constructor: (@device) ->
    @serialPort = new serialport.SerialPort @device,
      baudrate: 115200,
      dataBits: 8,
      parity: 'none',
      stopBits: 1,
      flowControl: false,
      parser: serialport.parsers.readline("\n")
  listen: (onData) ->
    @serialPort.on "open", => @serialPort.on('data', onData)
  send: (data) ->
    @serialPort.write("P#{data}")
@arduinoHandler = new ArduinoHandler('/dev/tty.usbmodem1421')
class Temperature
  history: []
  constructor: (@ioServer, @arduinoHandler) ->
    @arduinoHandler.listen(@update)
    @ioServer.onConnection(@pushHistory)
  update: (data) =>
    [device, temp] = data.split(':')
    @history.push
      device: parseInt(device)
      temp: temp
      date: new Date()
    @pushHistory()
  pushHistory: =>
    @ioServer.emit('change-temp', @history)
 class Pwm
  constructor: (@ioServer, @arduinoHandler) ->
    @ioServer.onConnection(@addEventListener)
  addEventListener: (socket) =>
    socket.on('change-pwm', @onChange)
  onChange: (pwm) =>
    @arduinoHandler.send(pwm) class App
  constructor: (@port, @device) ->
    @httpServer = new HttpServer(@port)
    @ioServer = new IoServer(@httpServer.getApp())
    @arduinoHandler = new ArduinoHandler(@device)
    @temperature = new Temperature(@ioServer, @arduinoHandler)
    @pwm = new Pwm(@ioServer, @arduinoHandler)      function updatePwm() {
        val = $("#slider").slider('value');
        toPwm = Math.ceil(val * 2.55);
        socket.emit('change-pwm', toPwm)
      }
      $("#slider").slider({
        slide: updatePwm,
        change: updatePwm
      });
      function updateLatestTemperatures(history) {
        $('[data-role=temperature]').each(function(){
          deviceId = $(this).data('id');
          temp = _.chain(history)
                  .where({ device: deviceId }).last().value().temp
          $(this).html(temp)
        })
      }
      
      var socket = io.connect('http://192.168.5.10:3334');
      socket.on('change-temp', updateLatestTemperatures);
