为啥 Arduino IDE 中的相同代码在不同的笔记本电脑上给出不同的输出?

Posted

技术标签:

【中文标题】为啥 Arduino IDE 中的相同代码在不同的笔记本电脑上给出不同的输出?【英文标题】:Why does the same code from Arduino IDE give different outputs on different laptops?为什么 Arduino IDE 中的相同代码在不同的笔记本电脑上给出不同的输出? 【发布时间】:2017-08-08 18:10:55 【问题描述】:

我试图通过 I2C (PCF8574AT) 转换器模块将键盘(4*4 薄膜类型)与 Arduino Uno 连接。

A1、A2、A3 引脚接地。所以 I2CADDR 是 0x38。

在我的联想 T440 上编译并运行了这段代码,它显示:

Press anykey:
B

然后,无论我在键盘上按多少次,串行监视器上都不会出现任何信息。另一方面,当我在 T430s 上运行相同的代码时,它运行成功。

显示

Press any key:
and then on pressing key it was showing 1,2 ,3 etc

Arduino 版本都使用 1.8.2。 完全相同的代码和库仍然不同的输出。 谁能解释一下为什么?

这是我的代码:

/* @file CustomKeypad.pde
  || @version 1.0
  || @author Alexander Brevig
  || @contact alexanderbrevig@gmail.com
  ||
  || @description
  || | Demonstrates changing the keypad size and key values.
  || #
    Use with I2C i/o G. D. (Joe) Young Feb 28/12
*/

#include <Keypad_I2C.h>
#include <Keypad.h> // GDY120705
#include <Wire.h>

#define I2CADDR 0x38
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the symbols on the buttons of the keypads
char hexaKeys[ROWS][COLS] = 
  '1', '2', '3', 'A',
  '4', '5', '6', 'B',
  '7', '8', '9', 'C',
  '*', '0', '#', 'D'
;
byte rowPins[ROWS] = 0, 1, 2, 3; //connect to the row pinouts of the keypad
byte colPins[COLS] = 4, 5, 6, 7; //connect to the column pinouts of the keypad
//initialize an instance of class NewKeypad
Keypad_I2C customKeypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS, I2CADDR);

void setup() 
  // Wire.begin();
  customKeypad.begin(); // GDY120705
  Serial.begin(9600);
  Serial.println("Press Keys");


void loop() 
  char customKey = customKeypad.getKey();
  if (customKey != NO_KEY) 
    Serial.println(customKey);
  

【问题讨论】:

Please read this. 请分享您的代码 是的,我添加了我的代码 - @Piglet @TomServo 现在还好吗? 【参考方案1】:

首先验证您的硬件。 我很久以前在开发一个 8*8 键矩阵的项目时尝试过这个问题。可能是端口变化太快而没有放电从而导致误触发的地方。

【讨论】:

欢迎来到 SO。这篇文章可能更适合作为评论,因为它更多的是建议而不是答案。在回答问题时,您应该确信您的回答可以解决 OP 的问题。 嗯,我认为硬件还不错。它在 T430 上运行顺利吧?因此,如果有任何缺陷,那么它不应该运行。我猜?我在这里太菜鸟了。所以,对不起,如果我说错了。 逐步排除故障会更好吗?由于现在的连接是: 4*4keypad I2C 芯片 计算机 让我们找出哪个部分有问题...例如,拿一个 DMM 并检查 4*4 keypad 在逻辑上是否正常工作,或者重新插入 USB 端口,或检查 Vdd 是否处于正常工作电压(3.3V 或 5V?)...希望这些方法确实对您有所帮助。 知道了。但问题不在于。你看我检查了我的串行监视器中的代码它不起作用,那一刻我从我朋友那里拿了另一台笔记本电脑并尝试了他的并且它工作。如果有硬件问题,它不应该在我的笔记本电脑上试用一分钟后立即在他的笔记本电脑上运行。你不觉得吗? 但正如你所说,我使用 Saleae 逻辑分析仪进行检查。并重新检查了连接,但结果相同。

以上是关于为啥 Arduino IDE 中的相同代码在不同的笔记本电脑上给出不同的输出?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 python 串行代码不起作用,而从 arduino 串行监视器发送相同的数据?

为啥arduino uno只能保留两位小数

迄今为止最好的arduino开发平台:vscode+platformio,秒杀arduino ide。及vscode+pio对比arduino ide对比Stduino

通过 Arduino IDE 来自 IFTTT 的 HTTP 响应代码 -1

Ros使用Arduino 1安装Arduino IDE

arduino中为啥要给烟雾传感器连一个电阻