JavaScript - Enviar datos desde JavaScript a Arduino por el puerto serial

 
Vista:
sin imagen de perfil

Enviar datos desde JavaScript a Arduino por el puerto serial

Publicado por Brandon Benitez (3 intervenciones) el 21/03/2024 22:45:01
Buena tarde
Quiero poder enviar datos de tipo string a arduino desde javascript, tengo el siguinete codigo pero al ejecutarlo no envia ningun dato, espero alguien me puda apoyar soy nuevo en este tema, comparto mi codigo js

const SerialPort = require('serialport').SerialPort;
const Readline = require('@serialport/parser-readline').ReadlineParser;;

const port = new SerialPort( { path:'COM3', baudRate: 9600 });
const parser = port.pipe(new Readline({ delimiter: '\n' }));
port.on('open', () => {
console.log('Conexión establecida');
});
parser.on('data', data => {
console.log('Dato recibido:', data);
});

const enviarCaracter = (caracter) => {
port.write(caracter);

};
enviarCaracter('1');






Esto es lo que me arroja en consola

Conexión establecida
Dato recibido: �
Dato recibido: sin mensaje recibido
Dato recibido: �
Dato recibido: sin mensaje recibido
Dato recibido: �
Dato recibido: sin mensaje recibido
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 40
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Enviar datos desde JavaScript a Arduino por el puerto serial

Publicado por Marlon (90 intervenciones) el 22/03/2024 02:50:50
Prueba cambiar la siguiente linea:

1
const port = new SerialPort({'COM3', baudRate: 9600 });

retira path y solo deja COM3
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Enviar datos desde JavaScript a Arduino por el puerto serial

Publicado por Brandon Benitez (3 intervenciones) el 22/03/2024 17:35:29
Al cambiar la línea de código como me comentas me arroja el siguiente error
' : ' expected.ts(1005)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 40
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Enviar datos desde JavaScript a Arduino por el puerto serial

Publicado por Marlon (90 intervenciones) el 22/03/2024 22:28:29
Me parecce que la linea de codigo, esta mal deberia ser esta:
1
const port = new SerialPort('COM3', { baudRate: 9600 });

preubala y me cuentas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Enviar datos desde JavaScript a Arduino por el puerto serial

Publicado por Brandon Benitez (3 intervenciones) el 22/03/2024 23:06:49
Ya lo intenté de esa forma y aun así me manda el error de "path" is not defined: undefined. Tambien agregue
1
const path = require('path');
y nada. ¿Qué me está faltando?

Te comparto mi código en Arduino, este me funciona perfectamente, si coloco 1 o 0 en el SerialMonitor me enciende los leds
Espero me puedas apoyar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// CONECTAR LED VERDE EN PUERTO 13 Y A TIERRA
// CONECTAR LED ROJO EN PUERTO 12 Y A TIERRA
void setup() {
  // initialize serial communication  at 9600 bits per second:
  Serial.begin(9600);   // inicializa PUERTO SERIAL A 9600
  pinMode(13, OUTPUT);  // inicializa puerto 13 como salida
  pinMode(12, OUTPUT);  // inicializa puerto 12 como salida
 
}
 
// the loop routine  runs over and over again forever:
void loop() {
  char sensorValue = Serial.read();  //LECTURA SERIAL DE CARACTER
  Serial.println(sensorValue);
  delay(1000);  // delay in between reads for  stability
  switch (sensorValue) {
    case '1':                      //LECTURA DE VALOR EN FORMA DE CARACTER
      Serial.println("aprovado");  //IMPRESION SERIAL APROVADO
      digitalWrite(13, HIGH);      //ENCIENDE LED VERDE DURANTE 3 SEGUNDOS
      delay(2000);
      digitalWrite(13, LOW);       //APAGA LED VERDE
      break;                       //SALE DEL CICLO
    case '0':                      //CASO DE CARACTER 0
      Serial.println("denegado");  //IMPRESION SERIAL DENEGADO
      digitalWrite(12, HIGH);      //ENCIENDE LED ROJO POR 3 SEGUNDOS
      delay(2000);
      digitalWrite(12, LOW);  //APAGA LED ROJO
      break;                  // SALE DEL CICLO
    default:                  //EN CASO DE NO RECIBIR NADA
      Serial.println("sin mensaje recibido");
      delay(300);
      break;
  }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar