touche code
haut 38
bas 40
gauche 37
droite 39
espace 32
z 90
s 83
Ce qui donne l'instruction suivante:
document.addEventListener('keydown', function(e) {
if(e.keyCode==38) socket.emit('avance','Avancer');
if(e.keyCode==40) socket.emit('recule','Reculer');
if(e.keyCode==37) socket.emit('gauche','A gauche');
if(e.keyCode==39) socket.emit('droite','A droite');
if(e.keyCode==32) socket.emit('arrete','Arreter');
if(e.keyCode==90) socket.emit('haut','En haut');
if(e.keyCode==83) socket.emit('bas', 'En bas');
}, false);
Dans le fichier app.js peu de changements sauf que l'on gère maintenant le placement de la caméra vers le haut ou le bas, l'angle fourni au servomoteur numéro 2 est dans la variable cam qui est incrémentée ou décrémentée de 10.
Ce qui donne les deux fonctions suivantes appelées suite à l'appuie sur les touches z ou s:
socket.on('haut', function (message) {
console.log('En haut');
cam-=10;
pwm.setPWM(2, 0, cam);
});
socket.on('bas', function (message) {
console.log('En bas');
cam+=10;
pwm.setPWM(2, 0, cam);
});
Les programmes complets:
App.js:
var http = require('http');
var fs = require('fs');
var PwmDriver = require('adafruit-i2c-pwm-driver');
var pwm = new PwmDriver(0x40);
var servoMin = 150;
var servoMax = 600;
var cam=400;
var setServoPulse = function(channel, pulse) {
var pulseLength;
pulseLength = 1000000;
pulseLength /= 60;
print("%d us per period" % pulseLength);
pulseLength /= 4096;
print("%d us per bit" % pulseLength);
pulse *= 1000;
pulse /= pulseLength;
return pwm.setPWM(channel, 0, pulse);
};
pwm.setPWMFreq(60);
var server = http.createServer(function(req, res) {
fs.readFile('./index.html', 'utf-8', function(error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
});
var io = require('socket.io').listen(server, { log: false});
io.sockets.on('connection', function (socket) {
socket.emit('message', 'Vous êtes bien connecté !');
socket.on('avance', function (message) {
console.log('Avance');
pwm.setPWM(0, 0, servoMin);
pwm.setPWM(1, 0, servoMax);
});
socket.on('arrete', function (message) {
console.log('Arrete');
pwm.setPWM(0, 0, 410);
pwm.setPWM(1, 0, 410);
});
socket.on('recule', function (message) {
console.log('Recule');
pwm.setPWM(0, 0, servoMax);
pwm.setPWM(1, 0, servoMin);
});
socket.on('gauche', function (message) {
console.log('A gauche');
pwm.setPWM(0, 0, servoMax);
pwm.setPWM(1, 0, servoMax);
});
socket.on('droite', function (message) {
console.log('A droite');
pwm.setPWM(0, 0, servoMin);
pwm.setPWM(1, 0, servoMin);
});
socket.on('haut', function (message) {
console.log('En haut');
cam-=10;
pwm.setPWM(2, 0, cam);
});
socket.on('bas', function (message) {
console.log('En bas');
cam+=10;
pwm.setPWM(2, 0, cam);
});
});
server.listen(8080);
Index.html:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>CamBot</title>
</head>
<body>
<h1>Commande du robot</h1>
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://192.168.1.10:8080');
socket.on('message', function(message) {
alert('Le serveur a un message pour vous: ' + message);
})
document.addEventListener('keydown', function(e) {
if(e.keyCode==38) socket.emit('avance','Avancer');
if(e.keyCode==40) socket.emit('recule','Reculer');
if(e.keyCode==37) socket.emit('gauche','A gauche');
if(e.keyCode==39) socket.emit('droite','A droite');
if(e.keyCode==32) socket.emit('arrete','Arreter');
if(e.keyCode==90) socket.emit('haut','En haut');
if(e.keyCode==83) socket.emit('bas', 'En bas');
}, false);
</script>
</body>
</html>