从Python向Arduino LCD发送一个字符串

2024-09-27 00:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python在arduinolcd16x2上显示一个字符串,但是我遇到了串行通信的问题。在

以下是Arduino中运行的代码:

Arduino代码

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
String stringa;
const unsigned long TimeOut = 10; // timeout 10 ms
String stringa1;
String stringa2;

void setup() {
  lcd.begin(16, 2);
  Serial.begin(9600);
}

void loop() {
  stringa = "";
  unsigned long T = 0; // timer
  T = millis(); // timer running
  while (millis() - T < TimeOut) {
    // waiting timeout
    while (Serial.available() > 0) {
      // receiving Serial
      stringa += char(Serial.read()); // add char
      T = millis(); // reset timer
    }
  }
  if (stringa.length() > 32) {
    lcd.setCursor(0, 1);
    lcd.print("stringa length: " + stringa.length());
    delay(2000);
    lcd.print("                ");
  } else {
    stringa1 = stringa.substring(0 , 16);
    stringa2 = stringa.substring(16);
    lcd.setCursor(0, 0);
    lcd.print(stringa1);
    lcd.setCursor(0, 1);
    lcd.print(stringa2);
    delay(5000);
  }
}

它与Arduino IDE中提供的键盘串行通信完美结合。但当我尝试使用下面的Python脚本发送字符串时,它不起作用:

Python代码

^{pr2}$

问题出在哪里?我找不到解决办法!谢谢。在


Tags: 字符串代码stringlcdseriallengtharduinoprint
1条回答
网友
1楼 · 发布于 2024-09-27 00:15:42

看看上面的C文件中的超时与下面的python脚本之间的差异。在

在您的C文件中,超时是10毫秒,而在Python脚本中则是0。同时检查arduino写()以确保成功。在

可能实现如下内容:

import serial
import sys
import time
arduino = serial.Serial('COM3', 9600, timeout=10)
stringa = 'hello'
try:
    arduino.write(stringa.encode())
except OsError:
    print "Write failed!"
arduino.close()

如果这不起作用,那么尝试检查C文件和Python脚本之间的串行端口。确保它们是一样的。希望这有帮助!在

相关问题 更多 >

    热门问题