Hice un programa que envía datos a mi Arduino que detecta lo que se envió y luego enciende el pin correcto de acuerdo con la tecla que se presiona.¿El puerto serie no funciona?
Cuando se utiliza el software de Arduino de mi equipo con Windows el boceto Arduino funciona bien, puedo hacer que cada vez pasador de encendido y apagado, ya sea mediante el envío fue o D.
Cuando se envía a través del nodo de la luz RX en el Arduino parpadea pero nada más sucede.
¿Alguien puede ayudar? programa
Node.js:
var httpServer = require('http').createServer(function(req, response){ /* Serve your static files */ })
httpServer.listen(8080);
var nowjs = require("now");
var everyone = nowjs.initialize(httpServer);
everyone.now.logStuff = function(msg){
console.log(msg);
}
var SerialPort = require('serialport2').SerialPort;
var assert = require('assert');
var portName;
if (process.platform == 'win32') {
portName = 'COM4';
} else if (process.platform == 'darwin') {
portName = '/dev/cu.usbserial-A800eFN5';
} else {
portName = '/dev/ttyUSB0';
}
var readData = '';
var sp = new SerialPort();
sp.on('close', function (err) {
console.log('port closed');
});
sp.on('error', function (err) {
console.error("error", err);
});
sp.on('open', function() {
console.log('port opened... Press reset on the Arduino.');
});
sp.open(portName, {
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
flowControl: false
});
everyone.now.forward = function() {
sp.write("w");
}
everyone.now.back = function() {
sp.write("s");
}
everyone.now.left = function() {
sp.write("a");
}
everyone.now.right = function() {
sp.write("d");
}
sp.on('data', function(data) {
console.log(data.toString());
});
Programa Arduino:
void setup(){
Serial.begin(9600);
Serial.write("READY");
//Set all the pins we need to output pins
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}
void loop(){
if (Serial.available() > 0) {
//read serial as a character
char ser = Serial.read();
Serial.write(ser);
//NOTE because the serial is read as "char" and not "int", the read value must be compared to character numbers
//hence the quotes around the numbers in the case statement
switch (ser) {
case 'w':
move(8);
break;
case 's':
move(9);
break;
case 'a':
move(10);
break;
case 'q':
move(10);
move(8);
break;
case 'd':
move(11);
break;
case 'e':
move(11);
move(8);
break;
}
}
}
void move(int pin){
Serial.print(pin);
digitalWrite(pin, HIGH);
delay(1);
digitalWrite(pin, LOW);
}
Actualización, por lo que parece, el arduino no está detectando el puerto en serie como está disponible. No sé si eso ayuda. –
Mi primer pensamiento es que el puerto en serie se detecta y funciona (debido al led parpadeante). Mi conjetura está en el extremo enviado. Intenta buscar en Google "ComEmulDrv3". Debe permitirle configurar un dispositivo virtual que le permita verificar su envío. Lo que debe buscar es la codificación de caracteres y el espacio en blanco. – cstrutton