mirror of
https://github.com/Ekokumppanit/Bicyclesim.git
synced 2026-01-26 03:04:09 +00:00
Use serialport data from TI Launchpad instead of keystrokes.
This commit is contained in:
@@ -98,7 +98,7 @@
|
||||
<div class="fluid-row">
|
||||
<form>
|
||||
<legend>Asetukset</legend>
|
||||
<label>Liikekerroin. Vaikuttaa nopeuteen jolla reitillä liikutaan. Ei vaikuta nopeuslukemaan tai kuljettuun matkaan.</label>
|
||||
<label>Liikekerroin. Vaikuttaa kuljettuun matkaan mutta ei nopeuslukemaan.</label>
|
||||
<input type="text" value="{{settings.multiplier}}" id="settings_multiplier"/>
|
||||
<label>Renkaan koko, tuumia</label>
|
||||
<input type="text" value="{{settings.diameter}}" id="settings_diameter"/>
|
||||
|
||||
@@ -41,14 +41,14 @@ $(document).bind('keydown.space', function () {
|
||||
}
|
||||
});
|
||||
|
||||
function speedo() {
|
||||
speed_buffer.push(revs * c());
|
||||
revs = 0;
|
||||
// function speedo() {
|
||||
// speed_buffer.push(revs * c());
|
||||
// revs = 0;
|
||||
|
||||
Session.set('speed', speed_buffer.sum() / 5);
|
||||
}
|
||||
// Session.set('speed', speed_buffer.sum() / 5);
|
||||
// }
|
||||
|
||||
setInterval(speedo, 500);
|
||||
// setInterval(speedo, 500);
|
||||
|
||||
// 5sec, 2 values / sec.
|
||||
var speed_buffer = createRingBuffer(5 * 2);
|
||||
@@ -72,8 +72,49 @@ Template.sim.helpers({
|
||||
}
|
||||
});
|
||||
|
||||
// This version is connected to a bicycle using a TI Launchpad which sends data to
|
||||
// computer using a serialport. Nodejs service reads that data using node-serialport
|
||||
// and then sends it through websocket.
|
||||
var sock = new SockJS("http://localhost:9999/speed");
|
||||
|
||||
function init_sim() {
|
||||
|
||||
|
||||
sock.onopen = function() {
|
||||
debug('open');
|
||||
};
|
||||
|
||||
sock.onmessage = function(e) {
|
||||
if (Session.equals('page', 'sim') && window.point) {
|
||||
debug('message', e.data);
|
||||
|
||||
var dist = parseInt(e.data, 10) * c();
|
||||
speed_buffer.push(dist);
|
||||
|
||||
Session.set('speed', speed_buffer.sum() / 5);
|
||||
|
||||
Session.set('distance', Session.get('distance') + localStorage.multiplier * dist);
|
||||
window.traveled += localStorage.multiplier * dist;
|
||||
|
||||
if (window.traveled >= window.point.distance) {
|
||||
var next = Points.findOne({_id: window.point.next});
|
||||
|
||||
// Stay on current point if no next point exists
|
||||
if (next) {
|
||||
window.traveled -= next.distance;
|
||||
|
||||
maps.travel(next._id, {route: true});
|
||||
window.point = next;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
sock.onclose = function() {
|
||||
debug('close');
|
||||
};
|
||||
|
||||
Meteor.autosubscribe(function () {
|
||||
if (Session.equals('page', 'sim')) {
|
||||
var route = Routes.findOne({_id: Session.get('route')});
|
||||
|
||||
Reference in New Issue
Block a user