Finish reorganizing existing examples
This commit is contained in:
parent
dbfa4f859e
commit
64809b16cf
|
@ -1,13 +1,12 @@
|
||||||
Cylon = require '..'
|
Cylon = require '../..'
|
||||||
|
|
||||||
Cylon.api host: '0.0.0.0', port: '8080'
|
Cylon.api host: '0.0.0.0', port: '8080'
|
||||||
|
|
||||||
class MyRobot
|
class MyRobot
|
||||||
commands:
|
commands: ["relax"]
|
||||||
["relax"]
|
|
||||||
|
|
||||||
relax: ->
|
relax: ->
|
||||||
return "#{this.name} says relax"
|
"#{this.name} says relax"
|
||||||
|
|
||||||
work: (me) ->
|
work: (me) ->
|
||||||
every 1.seconds(), ->
|
every 1.seconds(), ->
|
|
@ -0,0 +1,29 @@
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
Cylon.api({ host: '0.0.0.0', port: '8080' });
|
||||||
|
|
||||||
|
var MyRobot = (function() {
|
||||||
|
function MyRobot() {}
|
||||||
|
|
||||||
|
MyRobot.prototype.commands = ["relax"];
|
||||||
|
|
||||||
|
MyRobot.prototype.relax = function() {
|
||||||
|
return "" + this.name + " says relax";
|
||||||
|
};
|
||||||
|
|
||||||
|
MyRobot.prototype.work = function(me) {
|
||||||
|
every((1).seconds(), function() {
|
||||||
|
Logger.info(me.name);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return MyRobot;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
var robot = new MyRobot;
|
||||||
|
robot.name = "frankie";
|
||||||
|
|
||||||
|
Cylon.robot(robot);
|
||||||
|
|
||||||
|
Cylon.start();
|
|
@ -1,122 +0,0 @@
|
||||||
Cylon = require('..')
|
|
||||||
|
|
||||||
Cylon.api host: '0.0.0.0', port: '8080'
|
|
||||||
|
|
||||||
class PebbleRobot
|
|
||||||
connection:
|
|
||||||
name: 'pebble', adaptor: 'pebble'
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'pebble', driver: 'pebble'
|
|
||||||
|
|
||||||
message: (robot, msg) =>
|
|
||||||
robot.message_queue().push(msg)
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
me.pebble.on('connect', ->
|
|
||||||
Logger.info 'connected!'
|
|
||||||
)
|
|
||||||
|
|
||||||
class SalesforceRobot
|
|
||||||
connection:
|
|
||||||
name: 'sfcon',
|
|
||||||
adaptor: 'force',
|
|
||||||
sfuser: process.env.SF_USERNAME,
|
|
||||||
sfpass: process.env.SF_SECURITY_TOKEN,
|
|
||||||
orgCreds: {
|
|
||||||
clientId: process.env.SF_CLIENT_ID,
|
|
||||||
clientSecret: process.env.SF_CLIENT_SECRET,
|
|
||||||
redirectUri: 'http://localhost:3000/oauth/_callback'
|
|
||||||
}
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'salesforce', driver: 'force'
|
|
||||||
|
|
||||||
spheroReport:{}
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
me.salesforce.on('start', () ->
|
|
||||||
me.salesforce.subscribe('/topic/SpheroMsgOutbound', (data) ->
|
|
||||||
spheroName = data.sobject.Sphero_Name__c
|
|
||||||
bucks = data.sobject.Bucks__c
|
|
||||||
Logger.info "Sphero: #{ spheroName }, data Bucks: #{ bucks }, SM_Id: #{ data.sobject.Id }"
|
|
||||||
me.master.findRobot(spheroName, (err, spheroBot) ->
|
|
||||||
spheroBot.react(spheroBot.devices.sphero)
|
|
||||||
)
|
|
||||||
me.spheroReport[spheroName] = bucks
|
|
||||||
toPebble = ""
|
|
||||||
for key, val of me.spheroReport
|
|
||||||
toPebble += "#{key}: $#{val}\n"
|
|
||||||
me.master.findRobot('pebble', (error, pebbleBot) ->
|
|
||||||
pebbleBot.message(pebbleBot.devices.pebble, toPebble)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
class SpheroRobot
|
|
||||||
totalBucks: 1
|
|
||||||
payingPower: true
|
|
||||||
|
|
||||||
connection:
|
|
||||||
name: 'sphero', adaptor: 'sphero'
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'sphero', driver: 'sphero'
|
|
||||||
|
|
||||||
react: (device) ->
|
|
||||||
device.setRGB(0x00FF00)
|
|
||||||
device.roll 90, Math.floor(Math.random() * 360)
|
|
||||||
this.payingPower = true
|
|
||||||
|
|
||||||
bankrupt: () ->
|
|
||||||
every 3.seconds(), () =>
|
|
||||||
if this.payingPower and this.totalBucks > 0
|
|
||||||
this.totalBucks += -1
|
|
||||||
if @totalBucks == 0
|
|
||||||
this.sphero.setRGB(0xFF000)
|
|
||||||
this.sphero.stop()
|
|
||||||
|
|
||||||
changeDirection: () ->
|
|
||||||
every 1.seconds(), () =>
|
|
||||||
this.sphero.roll 90, Math.floor(Math.random() * 360) if @payingPower
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
|
|
||||||
me.sphero.on 'connect', ->
|
|
||||||
Logger.info('Setting up Collision Detection...')
|
|
||||||
me.sphero.detectCollisions()
|
|
||||||
me.sphero.stop()
|
|
||||||
me.sphero.setRGB(0x00FF00)
|
|
||||||
me.sphero.roll 90, Math.floor(Math.random() * 360)
|
|
||||||
me.bankrupt()
|
|
||||||
me.changeDirection()
|
|
||||||
|
|
||||||
me.sphero.on 'collision', (data) ->
|
|
||||||
me.sphero.setRGB(0x0000FF)
|
|
||||||
me.sphero.stop()
|
|
||||||
me.payingPower = false
|
|
||||||
toSend = "{ \"spheroName\" :\"#{ me.name }\", \"bucks\": \"#{ me.totalBucks++ }\" }"
|
|
||||||
me.master.findRobot('salesforce', (err, sf) ->
|
|
||||||
sf.devices.salesforce.push('SpheroController', 'POST', toSend)
|
|
||||||
)
|
|
||||||
|
|
||||||
sfRobot = new SalesforceRobot()
|
|
||||||
sfRobot.name = "salesforce"
|
|
||||||
Cylon.robot sfRobot
|
|
||||||
pebRobot = new PebbleRobot()
|
|
||||||
pebRobot.name = "pebble"
|
|
||||||
Cylon.robot pebRobot
|
|
||||||
|
|
||||||
bots = [
|
|
||||||
{ port: '/dev/tty.Sphero-ROY-AMP-SPP', name: 'ROY' },
|
|
||||||
{ port: '/dev/tty.Sphero-GBO-AMP-SPP', name: 'GBO'},
|
|
||||||
{ port: '/dev/tty.Sphero-RRY-AMP-SPP', name: 'RRY'}
|
|
||||||
]
|
|
||||||
|
|
||||||
for bot in bots
|
|
||||||
robot = new SpheroRobot
|
|
||||||
robot.connection.port = bot.port
|
|
||||||
robot.name = bot.name
|
|
||||||
Cylon.robot robot
|
|
||||||
|
|
||||||
Cylon.start()
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
Cylon = require '../..'
|
||||||
|
|
||||||
|
Cylon.api host: '0.0.0.0', port: '8080'
|
||||||
|
|
||||||
|
class PebbleRobot
|
||||||
|
connection: { name: 'pebble', adaptor: 'pebble' }
|
||||||
|
device: { name: 'pebble', driver: 'pebble' }
|
||||||
|
|
||||||
|
message: (robot, msg) =>
|
||||||
|
robot.message_queue().push(msg)
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
me.pebble.on 'connect', -> Logger.info "Connected!"
|
||||||
|
|
||||||
|
class SalesforceRobot
|
||||||
|
connection:
|
||||||
|
name: 'sfcon'
|
||||||
|
adaptor: 'force'
|
||||||
|
sfuser: process.env.SF_USERNAME
|
||||||
|
sfpass: process.env.SF_SECURITY_TOKEN
|
||||||
|
orgCreds:
|
||||||
|
clientId: process.env.SF_CLIENT_ID
|
||||||
|
clientSecret: process.env.SF_CLIENT_SECRET
|
||||||
|
redirectUri: 'http://localhost:3000/oauth/_callback'
|
||||||
|
|
||||||
|
device: { name: 'salesforce', driver: 'force' }
|
||||||
|
|
||||||
|
spheroReport: {}
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
me.salesforce.on 'start', () ->
|
||||||
|
me.salesforce.subscribe '/topic/SpheroMsgOutbound', (data) ->
|
||||||
|
name = data.sobject.Sphero_Name__c
|
||||||
|
bucks = data.sobject.Bucks__c
|
||||||
|
|
||||||
|
msg = "Sphero: #{name},"
|
||||||
|
msg += "data Bucks: #{bucks},"
|
||||||
|
msg += "SM_Id: #{data.sobject.Id}"
|
||||||
|
|
||||||
|
Logger.info msg
|
||||||
|
|
||||||
|
me.master.findRobot name, (err, spheroBot) ->
|
||||||
|
spheroBot.react spheroBot.devices.sphero
|
||||||
|
|
||||||
|
me.spheroReport[name] = bucks
|
||||||
|
|
||||||
|
toPebble = ""
|
||||||
|
toPebble += "#{key}: $#{val}\n" for key, val of me.spheroReport
|
||||||
|
|
||||||
|
me.master.findRobot 'pebble', (error, pebbleBot) ->
|
||||||
|
pebbleBot.message pebbleBot.devices.pebble, toPebble
|
||||||
|
|
||||||
|
class SpheroRobot
|
||||||
|
totalBucks: 1
|
||||||
|
payingPower: true
|
||||||
|
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero' }
|
||||||
|
|
||||||
|
device: { name: 'sphero', driver: 'sphero' }
|
||||||
|
|
||||||
|
react: (device) ->
|
||||||
|
device.setRGB 0x00FF00
|
||||||
|
device.roll 90, Math.floor(Math.random() * 360)
|
||||||
|
@payingPower = true
|
||||||
|
|
||||||
|
bankrupt: () ->
|
||||||
|
every 3.seconds(), () =>
|
||||||
|
if @payingPower and @totalBucks > 0
|
||||||
|
@totalBucks += -1
|
||||||
|
if @totalBucks is 0
|
||||||
|
@sphero.setRGB 0xFF000
|
||||||
|
@sphero.stop()
|
||||||
|
|
||||||
|
changeDirection: () ->
|
||||||
|
every 1.seconds(), () =>
|
||||||
|
@sphero.roll 90, Math.floor(Math.random() * 360) if @payingPower
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
|
||||||
|
me.sphero.on 'connect', ->
|
||||||
|
Logger.info 'Setting up Collision Detection...'
|
||||||
|
me.sphero.detectCollisions()
|
||||||
|
me.sphero.stop()
|
||||||
|
me.sphero.setRGB 0x00FF00
|
||||||
|
me.sphero.roll 90, Math.floor(Math.random() * 360)
|
||||||
|
me.bankrupt()
|
||||||
|
me.changeDirection()
|
||||||
|
|
||||||
|
me.sphero.on 'collision', (data) ->
|
||||||
|
me.sphero.setRGB 0x0000FF
|
||||||
|
me.sphero.stop()
|
||||||
|
me.payingPower = false
|
||||||
|
|
||||||
|
data = JSON.stringify
|
||||||
|
spheroName: "#{me.name}",
|
||||||
|
bucks: "#{me.totalBucks++}"
|
||||||
|
|
||||||
|
me.master.findRobot 'salesforce', (err, sf) ->
|
||||||
|
sf.devices.salesforce.push "SpheroController", "POST", data
|
||||||
|
|
||||||
|
salesforceRobot = new SalesforceRobot()
|
||||||
|
salesforceRobot.name = "salesforce"
|
||||||
|
Cylon.robot salesforceRobot
|
||||||
|
|
||||||
|
pebbleRobot = new PebbleRobot()
|
||||||
|
pebbleRobot.name = "pebble"
|
||||||
|
Cylon.robot pebbleRobot
|
||||||
|
|
||||||
|
bots = [
|
||||||
|
{ port: '/dev/tty.Sphero-ROY-AMP-SPP', name: 'ROY' },
|
||||||
|
{ port: '/dev/tty.Sphero-GBO-AMP-SPP', name: 'GBO'},
|
||||||
|
{ port: '/dev/tty.Sphero-RRY-AMP-SPP', name: 'RRY'}
|
||||||
|
]
|
||||||
|
|
||||||
|
for bot in bots
|
||||||
|
robot = new SpheroRobot
|
||||||
|
robot.connection.port = bot.port
|
||||||
|
robot.name = bot.name
|
||||||
|
Cylon.robot robot
|
||||||
|
|
||||||
|
Cylon.start()
|
|
@ -0,0 +1,178 @@
|
||||||
|
var __bind = function(fn, me) {
|
||||||
|
return function() { return fn.apply(me, arguments); };
|
||||||
|
};
|
||||||
|
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
Cylon.api({ host: '0.0.0.0', port: '8080' });
|
||||||
|
|
||||||
|
var PebbleRobot = (function() {
|
||||||
|
function PebbleRobot() { this.message = __bind(this.message, this); }
|
||||||
|
|
||||||
|
PebbleRobot.prototype.connection = { name: 'pebble', adaptor: 'pebble' };
|
||||||
|
PebbleRobot.prototype.device = { name: 'pebble', driver: 'pebble' };
|
||||||
|
|
||||||
|
PebbleRobot.prototype.message = function(robot, msg) {
|
||||||
|
robot.message_queue().push(msg);
|
||||||
|
};
|
||||||
|
|
||||||
|
PebbleRobot.prototype.work = function(me) {
|
||||||
|
me.pebble.on('connect', function() { Logger.info("Connected!"); });
|
||||||
|
};
|
||||||
|
|
||||||
|
return PebbleRobot;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
var SalesforceRobot = (function() {
|
||||||
|
function SalesforceRobot() {}
|
||||||
|
|
||||||
|
SalesforceRobot.prototype.connection = {
|
||||||
|
name: 'sfcon',
|
||||||
|
adaptor: 'force',
|
||||||
|
sfuser: process.env.SF_USERNAME,
|
||||||
|
sfpass: process.env.SF_SECURITY_TOKEN,
|
||||||
|
orgCreds: {
|
||||||
|
clientId: process.env.SF_CLIENT_ID,
|
||||||
|
clientSecret: process.env.SF_CLIENT_SECRET,
|
||||||
|
redirectUri: 'http://localhost:3000/oauth/_callback'
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
SalesforceRobot.prototype.device = { name: 'salesforce', driver: 'force' };
|
||||||
|
|
||||||
|
SalesforceRobot.prototype.spheroReport = {};
|
||||||
|
|
||||||
|
SalesforceRobot.prototype.work = function(me) {
|
||||||
|
me.salesforce.on('start', function() {
|
||||||
|
me.salesforce.subscribe('/topic/SpheroMsgOutbound', function(data) {
|
||||||
|
var bucks, key, msg, name, toPebble, val, _ref;
|
||||||
|
|
||||||
|
name = data.sobject.Sphero_Name__c;
|
||||||
|
bucks = data.sobject.Bucks__c;
|
||||||
|
|
||||||
|
msg = "Sphero: " + name + ",";
|
||||||
|
msg += "data Bucks: " + bucks + ",";
|
||||||
|
msg += "SM_Id: " + data.sobject.Id;
|
||||||
|
|
||||||
|
Logger.info(msg);
|
||||||
|
|
||||||
|
me.master.findRobot(name, function(err, spheroBot) {
|
||||||
|
spheroBot.react(spheroBot.devices.sphero);
|
||||||
|
});
|
||||||
|
|
||||||
|
me.spheroReport[name] = bucks;
|
||||||
|
toPebble = "";
|
||||||
|
|
||||||
|
_ref = me.spheroReport;
|
||||||
|
|
||||||
|
for (key in _ref) {
|
||||||
|
val = _ref[key];
|
||||||
|
toPebble += "" + key + ": $" + val + "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
me.master.findRobot('pebble', function(error, pebbleBot) {
|
||||||
|
pebbleBot.message(pebbleBot.devices.pebble, toPebble);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return SalesforceRobot;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
var SpheroRobot = (function() {
|
||||||
|
function SpheroRobot() {}
|
||||||
|
|
||||||
|
SpheroRobot.prototype.totalBucks = 1;
|
||||||
|
|
||||||
|
SpheroRobot.prototype.payingPower = true;
|
||||||
|
|
||||||
|
SpheroRobot.prototype.connection = { name: 'sphero', adaptor: 'sphero' };
|
||||||
|
SpheroRobot.prototype.device = { name: 'sphero', driver: 'sphero' };
|
||||||
|
|
||||||
|
SpheroRobot.prototype.react = function(device) {
|
||||||
|
device.setRGB(0x00FF00);
|
||||||
|
device.roll(90, Math.floor(Math.random() * 360));
|
||||||
|
this.payingPower = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
SpheroRobot.prototype.bankrupt = function() {
|
||||||
|
var _this = this;
|
||||||
|
every(3..seconds(), function() {
|
||||||
|
if (_this.payingPower && _this.totalBucks > 0) {
|
||||||
|
_this.totalBucks += -1;
|
||||||
|
if (_this.totalBucks === 0) {
|
||||||
|
_this.sphero.setRGB(0xFF000);
|
||||||
|
_this.sphero.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
SpheroRobot.prototype.changeDirection = function() {
|
||||||
|
var _this = this;
|
||||||
|
every((1).seconds(), function() {
|
||||||
|
if (_this.payingPower) {
|
||||||
|
_this.sphero.roll(90, Math.floor(Math.random() * 360));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
SpheroRobot.prototype.work = function(me) {
|
||||||
|
me.sphero.on('connect', function() {
|
||||||
|
Logger.info('Setting up Collision Detection...');
|
||||||
|
me.sphero.detectCollisions();
|
||||||
|
me.sphero.stop();
|
||||||
|
me.sphero.setRGB(0x00FF00);
|
||||||
|
me.sphero.roll(90, Math.floor(Math.random() * 360));
|
||||||
|
me.bankrupt();
|
||||||
|
me.changeDirection();
|
||||||
|
});
|
||||||
|
|
||||||
|
me.sphero.on('collision', function(data) {
|
||||||
|
me.sphero.setRGB(0x0000FF);
|
||||||
|
me.sphero.stop();
|
||||||
|
me.payingPower = false;
|
||||||
|
|
||||||
|
data = JSON.stringify({
|
||||||
|
spheroName: "" + me.name,
|
||||||
|
bucks: "" + (me.totalBucks++)
|
||||||
|
});
|
||||||
|
|
||||||
|
me.master.findRobot('salesforce', function(err, sf) {
|
||||||
|
sf.devices.salesforce.push("SpheroController", "POST", data);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return SpheroRobot;
|
||||||
|
|
||||||
|
})();
|
||||||
|
|
||||||
|
var salesforceRobot = new SalesforceRobot();
|
||||||
|
salesforceRobot.name = "salesforce";
|
||||||
|
Cylon.robot(salesforceRobot);
|
||||||
|
|
||||||
|
var pebbleRobot = new PebbleRobot();
|
||||||
|
pebbleRobot.name = "pebble";
|
||||||
|
Cylon.robot(pebbleRobot);
|
||||||
|
|
||||||
|
var bots = [
|
||||||
|
{ port: '/dev/tty.Sphero-ROY-AMP-SPP', name: 'ROY' },
|
||||||
|
{ port: '/dev/tty.Sphero-GBO-AMP-SPP', name: 'GBO' },
|
||||||
|
{ port: '/dev/tty.Sphero-RRY-AMP-SPP', name: 'RRY' }
|
||||||
|
];
|
||||||
|
|
||||||
|
for (var i = 0; i < bots.length; i++) {
|
||||||
|
var bot = bots[i];
|
||||||
|
var robot = new SpheroRobot;
|
||||||
|
|
||||||
|
robot.connection.port = bot.port;
|
||||||
|
robot.name = bot.name;
|
||||||
|
|
||||||
|
Cylon.robot(robot);
|
||||||
|
}
|
||||||
|
|
||||||
|
Cylon.start();
|
|
@ -1,14 +0,0 @@
|
||||||
Cylon = require('..')
|
|
||||||
|
|
||||||
Cylon.robot
|
|
||||||
connection:
|
|
||||||
name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0'
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'sphero', driver: 'sphero'
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
every 1.second(), ->
|
|
||||||
me.sphero.roll 60, Math.floor(Math.random() * 360)
|
|
||||||
|
|
||||||
.start()
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
Cylon = require '../..'
|
||||||
|
|
||||||
|
Cylon.robot
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' }
|
||||||
|
device: { name: 'sphero', driver: 'sphero' }
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
every 1.second(), ->
|
||||||
|
me.sphero.roll 60, Math.floor(Math.random() * 360)
|
||||||
|
|
||||||
|
.start()
|
|
@ -0,0 +1,12 @@
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
Cylon.robot({
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' },
|
||||||
|
device: { name: 'sphero', driver: 'sphero' },
|
||||||
|
|
||||||
|
work: function(me) {
|
||||||
|
every((1).second(), function() {
|
||||||
|
me.sphero.roll(60, Math.floor(Math.random() * 360));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).start();
|
|
@ -1,28 +0,0 @@
|
||||||
Cylon = require('..')
|
|
||||||
|
|
||||||
Cylon.robot
|
|
||||||
connection:
|
|
||||||
name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0'
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'sphero', driver: 'sphero'
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
color = 0x00FF00
|
|
||||||
bitFilter = 0xFFFF00
|
|
||||||
|
|
||||||
me.sphero.on('connect', ->
|
|
||||||
Logger.info('Setting up Collision Detection...')
|
|
||||||
me.sphero.detectCollisions()
|
|
||||||
me.sphero.setRGB(color)
|
|
||||||
me.sphero.stop()
|
|
||||||
)
|
|
||||||
|
|
||||||
me.sphero.on 'collision', (data) ->
|
|
||||||
Logger.info 'collision:'
|
|
||||||
color = color ^ bitFilter
|
|
||||||
console.log("color: #{ color.toString(16) } ")
|
|
||||||
me.sphero.setRGB(color)
|
|
||||||
me.sphero.roll 90, Math.floor(Math.random() * 360)
|
|
||||||
|
|
||||||
.start()
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
Cylon = require '../..'
|
||||||
|
|
||||||
|
Cylon.robot
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' }
|
||||||
|
device: { name: 'sphero', driver: 'sphero' }
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
color = 0x00FF00
|
||||||
|
bitFilter = 0xFFFF00
|
||||||
|
|
||||||
|
me.sphero.on 'connect', ->
|
||||||
|
Logger.info "Setting up Collision Detection..."
|
||||||
|
me.sphero.detectCollisions()
|
||||||
|
me.sphero.setRGB color
|
||||||
|
me.sphero.stop()
|
||||||
|
|
||||||
|
me.sphero.on 'collision', (data) ->
|
||||||
|
Logger.info "Collision:"
|
||||||
|
color = color ^ bitFilter
|
||||||
|
Logger.info "Color: #{color.toString(16)} "
|
||||||
|
me.sphero.setRGB color
|
||||||
|
me.sphero.roll 90, Math.floor(Math.random() * 360)
|
||||||
|
|
||||||
|
.start()
|
|
@ -0,0 +1,26 @@
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
Cylon.robot({
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' },
|
||||||
|
device: { name: 'sphero', driver: 'sphero' },
|
||||||
|
|
||||||
|
work: function(me) {
|
||||||
|
var color = 0x00FF00;
|
||||||
|
var bitFilter = 0xFFFF00;
|
||||||
|
|
||||||
|
me.sphero.on('connect', function() {
|
||||||
|
Logger.info("Setting up Collision Detection...");
|
||||||
|
me.sphero.detectCollisions();
|
||||||
|
me.sphero.setRGB(color);
|
||||||
|
me.sphero.stop();
|
||||||
|
});
|
||||||
|
|
||||||
|
me.sphero.on('collision', function(data) {
|
||||||
|
Logger.info("Collision:");
|
||||||
|
color = color ^ bitFilter;
|
||||||
|
Logger.info("Color: " + (color.toString(16)) + " ");
|
||||||
|
me.sphero.setRGB(color);
|
||||||
|
me.sphero.roll(90, Math.floor(Math.random() * 360));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).start();
|
|
@ -1,14 +0,0 @@
|
||||||
Cylon = require('..')
|
|
||||||
|
|
||||||
Cylon.robot
|
|
||||||
connection:
|
|
||||||
name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0'
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'sphero', driver: 'sphero'
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
every 1.second(), ->
|
|
||||||
me.sphero.setRGB Math.floor(Math.random() * 100000)
|
|
||||||
|
|
||||||
.start()
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
Cylon = require '../..'
|
||||||
|
|
||||||
|
Cylon.robot
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' }
|
||||||
|
|
||||||
|
device: { name: 'sphero', driver: 'sphero' }
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
every 1.second(), ->
|
||||||
|
me.sphero.setRGB Math.floor(Math.random() * 100000)
|
||||||
|
|
||||||
|
.start()
|
|
@ -0,0 +1,12 @@
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
Cylon.robot({
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' },
|
||||||
|
device: { name: 'sphero', driver: 'sphero' },
|
||||||
|
|
||||||
|
work: function(me) {
|
||||||
|
every((1).second(), function() {
|
||||||
|
me.sphero.setRGB(Math.floor(Math.random() * 100000));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).start();
|
|
@ -1,38 +0,0 @@
|
||||||
Cylon = require('..')
|
|
||||||
|
|
||||||
Cylon.robot
|
|
||||||
connection:
|
|
||||||
name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0'
|
|
||||||
|
|
||||||
device:
|
|
||||||
name: 'sphero', driver: 'sphero'
|
|
||||||
|
|
||||||
work: (me) ->
|
|
||||||
|
|
||||||
|
|
||||||
me.sphero.on 'connect', ->
|
|
||||||
Logger.info('Setting up Collision Detection...')
|
|
||||||
me.sphero.detectCollisions()
|
|
||||||
me.sphero.setRGB(0x00FF00)
|
|
||||||
|
|
||||||
me.sphero.on 'update', (data) ->
|
|
||||||
Logger.info("Update event eventName -> #{ data } ")
|
|
||||||
Logger.info("Update event args -> ")
|
|
||||||
Logger.info(data)
|
|
||||||
|
|
||||||
me.sphero.on 'message', (data) ->
|
|
||||||
me.sphero.setRGB(0x0000FF)
|
|
||||||
Logger.info 'message:'
|
|
||||||
Logger.info data
|
|
||||||
|
|
||||||
me.sphero.on 'collision', (data) ->
|
|
||||||
me.sphero.setRGB(0xFF0000)
|
|
||||||
Logger.info 'collision:'
|
|
||||||
Logger.info data
|
|
||||||
|
|
||||||
me.sphero.on 'notification', (data) ->
|
|
||||||
me.sphero.setRGB(0xFF0000)
|
|
||||||
Logger.info 'notification:'
|
|
||||||
Logger.info data
|
|
||||||
|
|
||||||
.start()
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
Cylon = require '../..'
|
||||||
|
|
||||||
|
Cylon.robot
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' }
|
||||||
|
device: { name: 'sphero', driver: 'sphero' }
|
||||||
|
|
||||||
|
work: (me) ->
|
||||||
|
me.sphero.on 'connect', ->
|
||||||
|
Logger.info "Setting up Collision Detection..."
|
||||||
|
me.sphero.detectCollisions()
|
||||||
|
me.sphero.setRGB 0x00FF00
|
||||||
|
|
||||||
|
me.sphero.on 'update', (data) ->
|
||||||
|
Logger.info "Update event eventName: #{data} "
|
||||||
|
Logger.info "Update event args: "
|
||||||
|
Logger.info data
|
||||||
|
|
||||||
|
me.sphero.on 'message', (data) ->
|
||||||
|
me.sphero.setRGB 0x0000FF
|
||||||
|
Logger.info "Message:"
|
||||||
|
Logger.info data
|
||||||
|
|
||||||
|
me.sphero.on 'collision', (data) ->
|
||||||
|
me.sphero.setRGB 0xFF0000
|
||||||
|
Logger.info "Collision:"
|
||||||
|
Logger.info data
|
||||||
|
|
||||||
|
me.sphero.on 'notification', (data) ->
|
||||||
|
me.sphero.setRGB 0xFF0000
|
||||||
|
Logger.info "Notification:"
|
||||||
|
Logger.info data
|
||||||
|
|
||||||
|
.start()
|
|
@ -0,0 +1,38 @@
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
Cylon.robot({
|
||||||
|
connection: { name: 'sphero', adaptor: 'sphero', port: '/dev/rfcomm0' },
|
||||||
|
device: { name: 'sphero', driver: 'sphero' },
|
||||||
|
|
||||||
|
work: function(me) {
|
||||||
|
me.sphero.on('connect', function() {
|
||||||
|
Logger.info("Setting up Collision Detection...");
|
||||||
|
me.sphero.detectCollisions();
|
||||||
|
me.sphero.setRGB(0x00FF00);
|
||||||
|
});
|
||||||
|
|
||||||
|
me.sphero.on('update', function(data) {
|
||||||
|
Logger.info("Update event eventName: " + data + " ");
|
||||||
|
Logger.info("Update event args: ");
|
||||||
|
Logger.info(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
me.sphero.on('message', function(data) {
|
||||||
|
me.sphero.setRGB(0x0000FF);
|
||||||
|
Logger.info("Message:");
|
||||||
|
Logger.info(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
me.sphero.on('collision', function(data) {
|
||||||
|
me.sphero.setRGB(0xFF0000);
|
||||||
|
Logger.info("Collision:");
|
||||||
|
Logger.info(data);
|
||||||
|
});
|
||||||
|
|
||||||
|
me.sphero.on('notification', function(data) {
|
||||||
|
me.sphero.setRGB(0xFF0000);
|
||||||
|
Logger.info("Notification:");
|
||||||
|
Logger.info(data);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).start();
|
|
@ -0,0 +1,26 @@
|
||||||
|
Cylon = require '../..'
|
||||||
|
|
||||||
|
class SpheroRobot
|
||||||
|
connection: { name: 'Sphero', adaptor: 'sphero' }
|
||||||
|
device: { name: 'sphero', driver: 'sphero' }
|
||||||
|
|
||||||
|
work: (my) ->
|
||||||
|
every 1.seconds(), ->
|
||||||
|
Logger.info my.name
|
||||||
|
my.sphero.setRandomColor()
|
||||||
|
my.sphero.roll 60, Math.floor(Math.random() * 360)
|
||||||
|
|
||||||
|
bots = [
|
||||||
|
{ name: "Thelma", port: "/dev/rfcomm0" },
|
||||||
|
{ name: "Louise", port: "/dev/rfcomm1" }
|
||||||
|
]
|
||||||
|
|
||||||
|
for bot in bots
|
||||||
|
robot = new SpheroRobot
|
||||||
|
|
||||||
|
robot.name = bot.name
|
||||||
|
robot.connection.port = bot.port
|
||||||
|
|
||||||
|
Cylon.robot robot
|
||||||
|
|
||||||
|
Cylon.start()
|
|
@ -0,0 +1,35 @@
|
||||||
|
var Cylon = require('../..');
|
||||||
|
|
||||||
|
var SpheroRobot = (function() {
|
||||||
|
function SpheroRobot() {}
|
||||||
|
|
||||||
|
SpheroRobot.prototype.connection = { name: 'Sphero', adaptor: 'sphero' };
|
||||||
|
SpheroRobot.prototype.device = { name: 'sphero', driver: 'sphero' };
|
||||||
|
|
||||||
|
SpheroRobot.prototype.work = function(my) {
|
||||||
|
every((1).second(), function() {
|
||||||
|
Logger.info(my.name);
|
||||||
|
my.sphero.setRandomColor();
|
||||||
|
my.sphero.roll(60, Math.floor(Math.random() * 360));
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
return SpheroRobot;
|
||||||
|
})();
|
||||||
|
|
||||||
|
var bots = [
|
||||||
|
{ name: "Thelma", port: "/dev/rfcomm0" },
|
||||||
|
{ name: "Louise", port: "/dev/rfcomm1" }
|
||||||
|
];
|
||||||
|
|
||||||
|
for (var i = 0; i < bots.length; i++) {
|
||||||
|
var bot = bots[i];
|
||||||
|
var robot = new SpheroRobot;
|
||||||
|
|
||||||
|
robot.name = bot.name;
|
||||||
|
robot.connection.port = bot.port;
|
||||||
|
|
||||||
|
Cylon.robot(robot);
|
||||||
|
}
|
||||||
|
|
||||||
|
Cylon.start();
|
|
@ -9,7 +9,7 @@ install cylon-sphero`)
|
||||||
First, load up Cylon. Since we're in the Cylon repo, we can use the version
|
First, load up Cylon. Since we're in the Cylon repo, we can use the version
|
||||||
already here:
|
already here:
|
||||||
|
|
||||||
Cylon = require '..'
|
Cylon = require '../..'
|
||||||
|
|
||||||
Since both of our Spheros are going to have faily similar behaviour, we can
|
Since both of our Spheros are going to have faily similar behaviour, we can
|
||||||
define a class to hold their attributes:
|
define a class to hold their attributes:
|
|
@ -1,16 +0,0 @@
|
||||||
var Cylon = require('..');
|
|
||||||
|
|
||||||
// Initialize the robot
|
|
||||||
var robot = Cylon.robot({
|
|
||||||
connection: { name: 'arduino', adaptor: 'firmata', port: '/dev/ttyACM0' },
|
|
||||||
device: { name: 'led', driver: 'led', pin: 13 },
|
|
||||||
|
|
||||||
work: function(self) {
|
|
||||||
// we do our thing here
|
|
||||||
console.log(self.led.name);
|
|
||||||
every((1).second(), function() { console.log(self.led.name); });
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// start working
|
|
||||||
robot.start();
|
|
|
@ -1,4 +1,4 @@
|
||||||
Cylon = require '..'
|
Cylon = require '../..'
|
||||||
Travis = require 'travis-ci'
|
Travis = require 'travis-ci'
|
||||||
|
|
||||||
travis = new Travis
|
travis = new Travis
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
var Cylon = require('..')
|
var Cylon = require('../..')
|
||||||
var Travis = require('travis-ci')
|
var Travis = require('travis-ci')
|
||||||
|
|
||||||
var travis = new Travis({version: '2.0.0'});
|
var travis = new Travis({version: '2.0.0'});
|
||||||
|
|
|
@ -11,7 +11,7 @@ Before you run this, make sure you install the following dependencies:
|
||||||
First of all, let's load up Cylon. We're going to load the version directly from
|
First of all, let's load up Cylon. We're going to load the version directly from
|
||||||
the repo, since we're here already:
|
the repo, since we're here already:
|
||||||
|
|
||||||
Cylon = require '..'
|
Cylon = require '../..'
|
||||||
|
|
||||||
Next, we'll set up Travis. We're going to be using the very useful [travis-ci][]
|
Next, we'll set up Travis. We're going to be using the very useful [travis-ci][]
|
||||||
module.
|
module.
|
||||||
|
|
Loading…
Reference in New Issue