process.stdin.on('keypress', (str, key) => {
    if (key.ctrl && key.name === 'c') {
        process.exit();
    } else {
        switch (key.name) {
            case 'q':
                pulse1 -= 10;
                break;
            case 'a':
                pulse1 += 10;
                break;
            case 'w':
                pulse2 -= 10;
                break;
            case 's':
                pulse2 += 10;
                break;
            case 'e':
                pulse3 -= 10;
                break;
            case 'd':
                pulse3 += 10;
                break;    
        }
        servo1.servoWrite(pulse1);
        servo2.servoWrite(pulse2);
        servo3.servoWrite(pulse3);
        console.log("1: GPIO21: Steering " + pulse1);
        console.log("2: GPIO20: Bucket   " + pulse2);
        console.log("3: GPIO25: Camera   " + pulse3);

    }
});
Esempio n. 2
0
(function () {
  var startTickRight;
 
  echoRight.on('alert', function (level, tick) {
    var endTick,
      diff, dist;
 
    if (level == 1) {
      startTickRight = tick;
    } else {
      endTick = tick;
      diff = (endTick >> 0) - (startTickRight >> 0); // Unsigned 32 bit arithmetic 
      dist = diff / 2 / MICROSECONDS_PER_CM;
      console.log(`Right: ${dist.toFixed(2)}`);
    }
  });

  echoLeft.on('alert', function (level, tick) {
    var endTick,
      diff, dist;
 
    if (level == 1) {
      startTickLeft = tick;
    } else {
      endTick = tick;
      diff = (endTick >> 0) - (startTickLeft >> 0); // Unsigned 32 bit arithmetic 
      dist = diff / 2 / MICROSECONDS_PER_CM;
      console.log(`Left: ${dist.toFixed(2)}`);
    }
  });
}());
Esempio n. 3
0
    moveBackward: function () {
        leftPower.pwmWrite(leftPowerAmount, function (err) {});
        //  gpio.write(this.motors.leftPower, 1, function (err) {});
        gpio.write(this.motors.leftBack, 1, function (err) {});

        rightPower.pwmWrite(rightPowerAmount, function (err) {});
        //    gpio.write(this.motors.rightPower, 1, function (err) {});
        gpio.write(this.motors.rightBack, 1, function (err) {});
    },
Esempio n. 4
0
LED.prototype.setHue = function(hue, callback) {
	
	h = hue/360;
	var rgb = hslToRgb(h, s, l);

	redLED.pwmWrite(rgb[0]);
  	greenLED.pwmWrite(rgb[1]);
  	blueLED.pwmWrite(rgb[2]);
	
	 callback();
}
Esempio n. 5
0
LED.prototype.setBrightness = function(brightness, callback) { 
	
	l = brightness/200;
	var rgb = hslToRgb(h, s, l);

	redLED.pwmWrite(rgb[0]);
  	greenLED.pwmWrite(rgb[1]);
  	blueLED.pwmWrite(rgb[2]);
 
  callback();
}
Esempio n. 6
0
LED.prototype.setSaturation = function(saturation, callback) {
  
	s = saturation/100;
	
		var rgb = hslToRgb(h, s, l);

		redLED.pwmWrite(rgb[0]);
  		greenLED.pwmWrite(rgb[1]);
  		blueLED.pwmWrite(rgb[2]);
	
 	callback();
}
Esempio n. 7
0
 socket.on('servos', function (data) { 
   // move servo
   panPos = 0- -data.pan;
   if(panPos < panMin) panPos = panMin;
   if(panPos > panMax) panPos = panMax;
   pan.servoWrite( tiltPos );
   // move servo
   tiltPos = 0- -data.tilt;
   if(tiltPos < tiltMin) tiltPos = tiltMin;
   if(tiltPos > tiltMax) tiltPos = tiltMax;
   tilt.servoWrite( panPos );
   sendPos();
 });
Esempio n. 8
0
    stop: function () {
        leftPower.pwmWrite(0, function (err) {});
        rightPower.pwmWrite(0, function (err) {});

        //   gpio.write(this.motors.leftPower, 0, function (err) {});
        gpio.write(this.motors.leftFront, 0, function (err) {});
        gpio.write(this.motors.leftBack, 0, function (err) {});
        //   gpio.write(this.motors.rightPower, 0, function (err) {});
        gpio.write(this.motors.rightFront, 0, function (err) {});
        gpio.write(this.motors.rightBack, 0, function (err) {});
        gpio.write(7, 0, function (err) {});

    }
Esempio n. 9
0
    moveRightFWD: function () {
        rightPower.pwmWrite(rightPowerAmount, function (err) {});
        //   gpio.write(this.motors.rightPower, 1, function (err) {});
        gpio.write(this.motors.rightFront, 1, function (err) {});
        gpio.write(this.motors.rightBack, 0, function (err) {});

    },
Esempio n. 10
0
    stopRight: function () {
        rightPower.pwmWrite(0, function (err) {});

        //   gpio.write(this.motors.rightPower, 0, function (err) {});
        gpio.write(this.motors.rightFront, 0, function (err) {});
        gpio.write(this.motors.rightBack, 0, function (err) {});
    },
Esempio n. 11
0
    moveLeftFWD: function () {
        leftPower.pwmWrite(leftPowerAmount, function (err) {});
        //  gpio.write(this.motors.leftPower, 1, function (err) {});
        gpio.write(this.motors.leftFront, 1, function (err) {});
        gpio.write(this.motors.leftBack, 0, function (err) {});

    },
Esempio n. 12
0
function test() {
    red.digitalWrite(1);
    green.digitalWrite(0);
    blue.digitalWrite(0);

    setTimeout(function () {
        red.digitalWrite(0);
        green.digitalWrite(1);
    }, 2000);
    setTimeout(function () {
        green.digitalWrite(0);
        blue.digitalWrite(1);
    }, 4000);
    setTimeout(function () {
        blue.digitalWrite(0);
    }, 6000);
}
setInterval(function () {
  motorSpeed.pwmWrite(dutyCycle);

  dutyCycle += 5;
  if (dutyCycle > 255) {
    dutyCycle = 0;
  }
}, 20);
Esempio n. 14
0
	socket.on('led', function (data) { //makes the socket react to 'led' packets by calling this function
		ledOn = data.value;  //updates brightness from the data object
		console.log(data); 
		led.digitalWrite(ledOn);

		console.log(ledOn); 
		io.sockets.emit('led', {value: data.value}); //sends the updated brightness to all connected clients
	});
Esempio n. 15
0
 this.updateServo = function(cb){
   // half a second to move 180 degrees, with 0 as 500ms and 180 as 2400ms
   var newPulseWidth = calculatePulseWidth(this.currentAngle);
   var diff = Math.abs(lastPulseWidth - newPulseWidth);
   lastPulseWidth = newPulseWidth;
   var duration = (diff/1900) * 500
   pin.servoWrite(newPulseWidth);
   if(cb) setTimeout(cb, duration);
 }
Esempio n. 16
0
setInterval(function () {
    motor.servoWrite(pulseWidth);

    pulseWidth += increment;
    if (pulseWidth >= 2000) {
        increment = -100;
    } else if (pulseWidth <= 1000) {
        increment = 100;
    }
}, 1000);
Esempio n. 17
0
File: app.js Progetto: Yustynn/raspy
setInterval(function () {
  console.log('calling...')
  motor.servoWrite(pulseWidth);

  pulseWidth += increment;
  if (pulseWidth >= 2000) {
    increment = -100;
  } else if (pulseWidth <= 1000) {
    increment = 100;
  }
}, 20);
Esempio n. 18
0
(function () {
  var startTick;
 
  echo.on('alert', function (level, tick) {
    var endTick,
      diff;
 
    if (level == 1) {
      startTick = tick;
    } else {
      endTick = tick;
      diff = (endTick >> 0) - (startTick >> 0); // Unsigned 32 bit arithmetic 
      console.log(diff / 2 / MICROSECDONDS_PER_CM);
    }
  });
}());
Esempio n. 19
0
LED.prototype.setOn = function(on, callback) {
	
	if (on == true) {
		
		var rgb = hslToRgb(h, s, l);

		redLED.pwmWrite(rgb[0]);
  		greenLED.pwmWrite(rgb[1]);
  		blueLED.pwmWrite(rgb[2]);

	} else {
		redLED.pwmWrite(0);
  		greenLED.pwmWrite(0);
  		blueLED.pwmWrite(0);		
	}
	
	callback();
}
Esempio n. 20
0
 setTimeout(function () {
     green.digitalWrite(0);
     blue.digitalWrite(1);
 }, 4000);
Esempio n. 21
0
 setTimeout(function () {
     blue.digitalWrite(0);
 }, 6000);
Esempio n. 22
0
var Servo = function(conf){

  this.currentAngle = 0;
  var releaseTimeout = undefined;
  var lastPulseWidth = 0;
  this.sleeping = false;

  var pin = new Gpio(conf.pin, {mode: Gpio.OUTPUT});

  this.moveToAngle = function(angle, cb){
    this.setCurrentAngle(angle, cb);
  }

  this.sleep = function(){
    pin.digitalWrite(0);
    this.sleeping = true;
  }

  this.wake = function(){
    if(this.sleeping){
      this.updateServo();
      this.sleeping = false;
    }
  }

  this.updateServo = function(cb){
    // half a second to move 180 degrees, with 0 as 500ms and 180 as 2400ms
    var newPulseWidth = calculatePulseWidth(this.currentAngle);
    var diff = Math.abs(lastPulseWidth - newPulseWidth);
    lastPulseWidth = newPulseWidth;
    var duration = (diff/1900) * 500
    pin.servoWrite(newPulseWidth);
    if(cb) setTimeout(cb, duration);
  }

  this.setCurrentAngle = function(angle, cb){
    angle = Number(angle);
    if(angle < conf.minAngle){
      this.currentAngle = conf.minAngle;
    }else if(angle > conf.maxAngle){
      this.currentAngle = conf.maxAngle;
    }else{
      this.currentAngle = angle;
    }
    this.updateServo(cb);
    this.emit('change');
  }

  this.moveByDegrees = function(angle, cb){
    this.setCurrentAngle(this.currentAngle + angle, cb);
  }

  this.moveByPercent = function(percent, cb){
    this.setCurrentAngle(this.currentAngle + (((conf.maxAngle - conf.minAngle) / 100 ) * percent), cb);
  }

  var calculatePulseWidth = function(angle){
    return Math.floor(conf.max - (((angle - conf.minAngle) / (conf.maxAngle - conf.minAngle)) * (conf.max - conf.min)));
  }


  this.moveToCentre = function(){
    var centre = Math.floor(conf.minAngle + (conf.maxAngle - conf.minAngle)/2);
    this.moveToAngle(centre);
  }

}
Esempio n. 23
0
 this.sleep = function(){
   pin.digitalWrite(0);
   this.sleeping = true;
 }
Esempio n. 24
0
var Gpio = require('pigpio').Gpio;
var x = new Gpio(17, {mode: Gpio.INPUT});
var y = new Gpio(18, {mode: Gpio.INPUT});
var button = new Gpio(27, {mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.RISING_EDGE});

console.log('Warning: no analog inputs on the Raspberry Pi!\nThis program just reads the button on pin GPIO27.');

button.on('interrupt', function (level) {
  console.log('button pressed.');
});
function executeCmd(cmd) {
    if (cmd.indexOf('=') > -1) {
	// Split a single command into a name-value pair
	var param = cmd.split('=')[0].trim();
        // Note that value is an integer. Range is [0,1000] for servo's, [-255, 255] for reversible motors 
	var value = parseInt(cmd.split('=')[1]); 
        value = parseInt(value, 10); // force radix to 10 cos don't want it trying to parse hex
	switch (param) {
	    case "t":
                value = cropToRange(value,-255,255);
                value = pwmDeadband(value);
                switch (true) {
                    case value < 0:
                        TRACTION_MOTOR_A.digitalWrite(1);
                        TRACTION_MOTOR_B.digitalWrite(0);
                        break;
                    case value > 0:
                        TRACTION_MOTOR_A.digitalWrite(0);
                        TRACTION_MOTOR_B.digitalWrite(1);
                        break;
                    case value = 0:
                    default:
                        TRACTION_MOTOR_A.digitalWrite(1);
                        TRACTION_MOTOR_B.digitalWrite(1);
                        break;
                }
                var pwm = Math.round(Math.abs(value));
                TRACTION_MOTOR_PWM.pwmWrite(pwm);
                break;
            case "a":
                value = cropToRange(value,-255,255);
                value = pwmDeadband(value);
                switch (true) {
                    case value < 0:
                        ARM_MOTOR_A.digitalWrite(1);
                        ARM_MOTOR_B.digitalWrite(0);
                        break;
                    case value > 0:
                        ARM_MOTOR_A.digitalWrite(0);
                        ARM_MOTOR_B.digitalWrite(1);
                        break;
                    case value = 0:
                    default:
                        ARM_MOTOR_A.digitalWrite(1);
                        ARM_MOTOR_B.digitalWrite(1);
                        break;
                }
                ARM_MOTOR_PWM.digitalWrite(1);      // Always run at full speed
		break;
	    case "s":
                value = cropToRange(value,0,1000);
                var pw = Math.round(STEERING_SERVO_MIN_PULSE + ((value / 1000) * (STEERING_SERVO_MAX_PULSE - STEERING_SERVO_MIN_PULSE)));
		STEERING_SERVO.servoWrite(pw);
		break;
            case "b":
                value = cropToRange(value,0,1000);
                var pw = Math.round(BUCKET_SERVO_MIN_PULSE + ((value / 1000) * (BUCKET_SERVO_MAX_PULSE - BUCKET_SERVO_MIN_PULSE)));
                BUCKET_SERVO.servoWrite(pw);
		break;
            case "c":
                value = cropToRange(value,0,1000);
                var pw = Math.round(CAMERA_SERVO_MIN_PULSE + ((value / 1000) * (CAMERA_SERVO_MAX_PULSE - CAMERA_SERVO_MIN_PULSE)));
                CAMERA_SERVO.servoWrite(pw);
		break;
	}
	    
    }
}
Esempio n. 26
0
/* jshint esversion:6 */

// Pin setup
const LEFT_SENSOR_TRIGGER_PIN = 23;
const LEFT_SENSOR_ECHO_PIN = 24;
const RIGHT_SENSOR_TRIGGER_PIN = 17;
const RIGHT_SENSOR_ECHO_PIN = 27;
const MEASUREMENT_FREQUENCY = 400; // in milliseconds (ms)
const MEASUREMENT_TIMEOUT = 1000; // in microseconds (us)

// The number of microseconds it takes sound to travel 1cm at 20 degrees celcius 
const MICROSECONDS_PER_CM = 1e6 / 34321;


var Gpio = require('pigpio').Gpio,
    triggerLeft = new Gpio(LEFT_SENSOR_TRIGGER_PIN, {mode: Gpio.OUTPUT}),
    echoLeft = new Gpio(LEFT_SENSOR_ECHO_PIN, {mode: Gpio.INPUT, alert: true}),
    triggerRight = new Gpio(RIGHT_SENSOR_TRIGGER_PIN, {mode: Gpio.OUTPUT}),
    echoRight = new Gpio(RIGHT_SENSOR_ECHO_PIN, {mode: Gpio.INPUT, alert: true});
 
triggerLeft.digitalWrite(0); // Make sure trigger is low 
triggerRight.digitalWrite(0);
 
(function () {
  var startTickRight;
 
  echoRight.on('alert', function (level, tick) {
    var endTick,
      diff, dist;
 
    if (level == 1) {
Esempio n. 27
0
button.on('interrupt', function (level) {
	ledOn = level; 
	led.digitalWrite(level);
	io.sockets.emit('led', {value: ledOn});
});
Esempio n. 28
0
var Gpio = require('pigpio').Gpio,
  url = require("url"),
  RaspiCam = require("raspicam"),
  fs = require('fs'),
  path = require('path'),
  tilt = new Gpio(23, {mode: Gpio.OUTPUT}),
  pan  = new Gpio(18, {mode: Gpio.OUTPUT}),
  pulseWidth = 1000,
  increment = 50,
  index = fs.readFileSync(__dirname + '/www/pan-tilt.htm'),
  image = null,
  http = require('http'),
  panPos =  1300, panMin = 750,  panMax = 2500, // adjust this to your needs
  tiltPos = 1700, tiltMin = 750, tiltMax = 2500, // adjust this to your needs
  captureWidth = 320,
  captureHeight = 320,
  //Canvas = require('canvas'), 
  //Image = Canvas.Image, 
  //canvas = new Canvas(captureWidth , captureHeight), 
  //ctx = canvas.getContext('2d'), 
  //img = new Image, 
  //face_detect = require('face-detect'), 
  is_processing_detection = false
;

var sockets = {};


var camera = new RaspiCam({ 
  mode:'timelapse', 
  output:'./temp/shot.jpg', 
Esempio n. 29
0
setInterval(function () {
  triggerRight.trigger(10, 1); // Set trigger high for 10 microseconds 
  triggerLeft.trigger(10, 1); // Set trigger high for 10 microseconds 
}, MEASUREMENT_FREQUENCY);
socket.on('led', function(data){
	led.digitalWrite(data.value); 
});