串口不工作?

2023-12-28

我编写了一个程序,将数据发送到我的arduino,它检测发送的内容,然后根据按下的键打开正确的引脚。

当在我的 Windows 计算机上使用 arduino 软件时,arduino 草图工作正常,我可以通过发送 W A S 或 D 来打开和关闭每个引脚。

当通过节点发送时,arduino 上的 RX 灯闪烁,但没有其他反应。

有人可以帮忙吗?

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());
});

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);
}

我最近涉足这个领域。当 Arduino 收到来自 Arduino IDE 以外的大多数设备的串行通信时,它会自动重置。这就是为什么您可以从 IDE 发送但不能从 Node.js 发送。

我有一个 Uno,并在复位和接地之间放置了一个电容器。这里有一个页面,其中包含有关该主题的一些有用信息。
祝你好运。http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection http://arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

串口不工作? 的相关文章

随机推荐

  • 如何在 Ruby 中通过 HTTP 进行基本身份验证?

    经过大量查找后 我发现了一些似乎有效的解决方案 但不适合我 例如 我有这个脚本 require net http require net https http Net HTTP new www xxxxxxx net 443 http us
  • 连接两个 NSDate 字符串值 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我只是感到困惑的是 是否有任何默认功
  • 什么时候应该使用对象而不是 json 对象?

    我正在用java设计一个程序 其中 许多对象只是数据包 并不真正需要任何非静态方法 我想轻松地从硬盘驱动器保存和加载对象 某些对象实例将需要一个附加属性 我可能会随着时间的推移添加或删除该属性 如果某些对象确实具有附加属性 那么大多数时候我
  • Windows NDIS 驱动程序分析

    我正在研究 Windows 10 上的 NDIS 筛选器驱动程序的性能分析 为此 我使用 Windows 性能记录器 WPR 和 Windows 性能分析器 WPA 我可以看到进程的 CPU 使用情况图 但我对驱动程序代码中的负载点感兴趣
  • 当系统中安装了多个php版本时,如何使用pecl为特定php版本安装php扩展?

    我已经根据本手册在 Ubuntu 上从 PPA 安装了 php5 6 和 php7 0 http lornajane net posts 2016 php 7 0 and 5 6 on ubuntu http lornajane net p
  • 将参数传递给powershell脚本

    我正在尝试从运行对话框运行 powershell 脚本 将用作计划任务 但在传递参数时遇到问题 该脚本将采用两个参数 名为 title 和 msg 该脚本位于 D Tasks Scripts Powershell script ps1 这就
  • 在 pandas 中删除 nan 行的更好方法

    我自己找到了一种从 pandas 数据框中删除 nan 行的方法 给定一个数据框dat带柱x其中包含 nan 值 是否有更优雅的方法来删除每一行dat其中有一个 nan 值x column dat dat np logical not np
  • XE6 如何检查 UnicodeString 是否为 null?

    我在用着C Builder XE6 我得到了一个UnicodeString作为参数 我希望检查字符串是否设置为 NULL 而不是空字符串 我尝试做一些简单的比较来查看参数是否为空 但似乎失败了 我正在使用 运算符似乎不起作用 这让我认为它超
  • Enter 事件不会在使用 Angular 的 Android 设备上触发该功能

    有多个问题的答案与我的问题相关 但不幸的是 没有一个对我有用 我必须检测 Android 键盘上按下的 Enter 并将焦点从当前 matInput 更改为下一个 matInput 我努力了keyup enter keydown and k
  • 如何在 AWS CDK 中使用 CloudFrontWebDistribution 启用 SecurityHeaders 的托管响应标头策略?

    我有一个CloudFrontWebDistribution在我的打字稿中的 AWS CDK 基础设施代码中 const cloudFrontDistribution new cloudfront CloudFrontWebDistribut
  • (404 Not Found)加载http://localhost:4200/angular2-datatable/datatable

    我正在尝试使用以下方法制作一个可排序的表this https www npmjs com package angular2 datatable 我已按照说明进行操作 看来我已经安装了angular2 datatable datatable正
  • 智能卡读卡器命名

    我的系统中有两个读卡器 HID OMNIKEY 5321 每个读卡器执行不同的功能 读卡器 1 智能卡读卡器0 读卡器 2 智能卡读卡器1 在我的程序中设置了 智能卡读卡器0 动作 1 智能卡读卡器1 动作 2 但有时 无需重新启动 可能失
  • 如何将流 (FILE *) 与 stdout 关联?

    现在每个模块都在写入 stderr 因此我无法关闭单个模块的输出 有谁知道如何将流与标准输出关联起来 这样每个模块都会写入独立的流 这样我就可以将其关闭 例如 fprintf newStdout hello newStdout正在向屏幕写入
  • 如何修复 Vim 中的 Home 和 End?

    我在 gnome terminal 2 26 0 中使用 vim 虽然我 95 的时间使用 导航到 EOL 使用 0 导航到相反的位置 但时不时地我会点击 Home 或 结尾 当我使用 Home 时 当前行中的文本会向下移动 使当前行处于插
  • Vim 中的合成视图和分割视图处理

    最近 我开始使用 syntastic 因为它大大简化了开发 唯一真正困扰我的是它如何处理分裂视图 我也使用 NERDtree 插件 每当我在 vsplit 视图中打开另一个文件时 就会发生以下情况 NERDTree file file
  • Webpack:如何在客户端(浏览器)端注入 process.env 运行时,使构建独立于环境

    简短问题 我正在寻找某种方式告诉 Webpack 不要做任何事情process变量 就像任何其他全局变量一样对待 因此它引用客户端捆绑包中的 window process 如果不可能 那么有一种方法可以注入变量process env在客户端
  • 用户和团队之间的关联和迁移(rails)

    我有这个用户和团队模型 它具有以下关联 user rb class User lt ActiveRecord Base belongs to team team rb class Team lt ActiveRecord Base has
  • 如何在其内部使用 lambda 函数?

    我有这段代码 不知道我想要实现的目标是否可能 acceptor async accept connections back gt socket this const boost system error code ec connection
  • \xdef\@fontenc@load@list{\@fontenc@load@list Rmarkdown 中未定义的控制序列

    我尝试编写一个非常简单的 Rmarkdown 文件来呈现为 pdf 但出现错误未定义的控制序列 文件 title Untitled author author date 3 2 2020 output pdf document whatev
  • 串口不工作?

    我编写了一个程序 将数据发送到我的arduino 它检测发送的内容 然后根据按下的键打开正确的引脚 当在我的 Windows 计算机上使用 arduino 软件时 arduino 草图工作正常 我可以通过发送 W A S 或 D 来打开和关