Ich habe ein Programm erstellt, das Daten an mein Arduino sendet, das erkennt, was gesendet wurde, und dann den richtigen Pin entsprechend der gedrückten Taste einschaltet.Serielle Schnittstelle funktioniert nicht?
Wenn die Arduino Software von meinem Windows-Computer mit der Arduino Skizze gut funktioniert, kann ich jeden Stift wiederum machen und Ausschalten durch das Senden entweder war, oder D.
Wenn über den Knoten des RX Licht auf die Arduino blinkt Senden aber nichts anderes passiert.
Kann jemand helfen?
Node.js Programm:
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());
});
Arduino Programm:
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);
}
Update, Durch das Aussehen des Arduino erkennt die serielle Schnittstelle nicht als verfügbar. Ich weiß nicht, ob das hilft. –
Mein erster Gedanke ist, dass die serielle Schnittstelle erkannt und funktioniert (aufgrund der blinkenden LED). Meine Vermutung ist auf der Sendungsseite. Versuchen Sie, "ComEmulDrv3" zu googeln. Damit können Sie einen virtuellen Comport einrichten, mit dem Sie überprüfen können, was Sie gesendet haben. Zu den Dingen, nach denen gesucht werden muss, gehören Zeichenkodierung und Leerzeichen. – cstrutton