// get serial port
var mraa = require('mraa');
mraa.init();
var port = mraa.init ? new mraa.Uart(0).getDevicePath() : '';
// instantiate the camera
var Camera = require('jsupm_grovescam_js');
var camera = new Camera(port);
// instantiate sensors and actuators
var groveSensor = require('jsupm_grove');
var gcl = require("jsupm_grovecircularled");
var button = new groveSensor.GroveButton(3);
// set layout parameters
var f3js = require('f3js')
, x = 10
, y = 10
, useCountdown = false /* Use the countdown feature. */
, width = useCountdown ? 130 : 60
, height = 105
, thickness = 45 /* Thickness [10, 100] */
, dw = 5 /* Joint width [0, 10] */
, dh = 2 /* Joint height (panel thickness) [0, 10] */;
// put base board
var rect = f3js.drawJointRectangle(x, y, width, height, dw, dh, true);
var planes = rect.extrude(thickness);
planes[4].x = width; planes[4].y = 0; f3js.add(planes[4]);
// put sensors and actuators
var leftMargin = 28 // Left margin [0, 100]
, topMargin = 30; // Top margin [0, 100]
f3js.add(camera, { x: x + leftMargin + 0, y: y + topMargin + 0 });
f3js.add(button, { x: x + leftMargin + 0, y: y + 75 });
var circle;
if (useCountdown) {
circle = new gcl.GroveCircularLED(5, 4);
f3js.add(circle, { x: x + width - 30, y: y + topMargin + 0 });
f3js.drawRectangle(x + width - 30 - 6, y + topMargin - 18, 12, 3);
}
// draw circles...
for (var i = 0; i < 7; i ++) {
f3js.drawCircle(
x + width - (i + 1) * 10
, y + height - 10
, 1); // additional holes
}
// put side boards
var margin = dh;
planes[0].x = x;
planes[0].y = y + height + margin;
f3js.add(planes[0]);
planes[1].x = x + width;
planes[1].y = y + height + margin - dh;
f3js.add(planes[1]);
planes[2].x = x + height;
planes[2].y = y + height + thickness + margin;
f3js.add(planes[2]);
planes[3].x = x;
planes[3].y = y + height + thickness + margin;
f3js.add(planes[3]);
// put a side hall
planes[3].drawRectangle(
5, thickness - dh - 15,
height - 10, 10);
// take a picture after a while
var ready = true;
function readButtonValue() {
// detect button push
if (ready && button.value() > 0) {
ready = false;
if (!useCountdown) {
// use countdown
camera.takePicture('/home/root/test.jpg');
} else {
// or immediately take a photo
var cycle = 300
, maxLevel = 24
, level = maxLevel;
// start countdown timer
var countDown = setInterval(function() {
level --;
console.log("countdown: ", level);
circle.setLevel(level);
// take a picture!
if (level <= 0) {
camera.takePicture('/home/root/test.jpg');
clearInterval(countDown);
ready = true;
}
}, cycle);
}
}
}
setInterval(readButtonValue, 100);
var var29169 = false; // *proposed* Flash ON/OFF
var var83594 = false; // *proposed* Shutter noise ON/OFF