TLDR:我想用Python驱动硬件,我想我需要Arduino来完成这项工作。事实证明,我完全可以在没有Arduino的情况下完成工作,所以下面的帖子完全是胡说八道
我正在寻找与我的第一个Arduino Uno板的接口,并希望使用Python来完成这项任务。我想知道是否有人能帮我将一点简单的Arduino/C转换成Python来完成这项任务。任何指点都将不胜感激
这是我看到的街区:
#include <Wire.h>
// control pin
int txden = 8;
// data prefix and suffix
byte data_prefix[] = {0x80, 0x83, 0xFF};
byte data_suffix[] = {0x8F};
// 28 bytes
byte all_dark[] = {
B0000000, B0000000, B0000000, B0000000,
B0000000, B0000000, B0000000, B0000000,
B0000000, B0000000, B0000000, B0000000,
B0000000, B0000000, B0000000, B0000000,
B0000000, B0000000, B0000000, B0000000,
B0000000, B0000000, B0000000, B0000000,
B0000000, B0000000, B0000000, B0000000,
};
byte word_to_display[] = {
B0000000, B0000000, B0101110, B0101010,
B0111010, B0000000, B0000000, B0100010,
B0101010, B0111110, B0000000, B0000000,
B0000010, B0000010, B0111110, B0000000,
B0000000, B0111110, B0000010, B0111110,
B0000000, B0000000, B0010110, B0101000,
B0101000, B0111110, B0000000, B0000000
};
void setup() {
Serial.begin(9600);
pinMode(txden, OUTPUT);
digitalWrite(txden, HIGH);
Serial.write(data_prefix, 3);
Serial.write(all_dark, 28);
Serial.write(data_suffix, 1);
delay(3000);
}
void loop() {
Serial.write(data_prefix, 3);
Serial.write(word_to_display, 28);
Serial.write(data_suffix, 1);
delay(2000);
}
Arduino IDE首先解释setup
函数,然后像游戏引擎(如Phaser)那样连续运行loop
函数Serial.write
通过串行端口向外发送二进制数据到我的flipdot显示器,flipdot会解释该消息并做出相应的反应
上面的循环显示在flipdots板上:
我的印象是pyserial
包可能允许我通过相同的pin发送相同的字节。以下是我所了解到的情况:
import serial
# serial: https://pythonhosted.org/pyserial/pyserial.html#overview
# args: device, bauds, timeout -- baud timeout must be exact
arduino = serial.Serial('COM3', 9600, timeout=.1)
data_prefix = bytearray([0x80, 0x83, 0xFF])
data_suffix = bytearray([0x8F])
all_dark = bytearray([
0B0000000, 0B0000000, 0B0000000, 0B0000000,
0B0000000, 0B0000000, 0B0000000, 0B0000000,
0B0000000, 0B0000000, 0B0000000, 0B0000000,
0B0000000, 0B0000000, 0B0000000, 0B0000000,
0B0000000, 0B0000000, 0B0000000, 0B0000000,
0B0000000, 0B0000000, 0B0000000, 0B0000000,
0B0000000, 0B0000000, 0B0000000, 0B0000000,
])
word_to_display = bytearray([
0B0000000, 0B0000000, 0B0101110, 0B0101010,
0B0111010, 0B0000000, 0B0000000, 0B0100010,
0B0101010, 0B0111110, 0B0000000, 0B0000000,
0B0000010, 0B0000010, 0B0111110, 0B0000000,
0B0000000, 0B0111110, 0B0000010, 0B0111110,
0B0000000, 0B0000000, 0B0010110, 0B0101000,
0B0101000, 0B0111110, 0B0000000, 0B0000000,
])
我需要弄清楚如何在Python的输出模式下打开Arduino上的引脚8。排序完成后,我还需要弄清楚如何复制^{
pyserial将允许您通过串行接口发送数据。这与阿杜伊诺无关。如果您只想让这些串行数据进入显示器,那么根本不需要Arduino。只需将串行线连接到显示器,并直接从PC发送串行数据即可
这很简单。首先编写要运行一次的代码,然后将要在无限循环中运行的代码放入无限循环中。而(1)可以很好地创建无限循环。Arduino上的设置或循环函数没有什么特别之处。它们只是从主函数调用的常规函数。安装程序被调用一次,然后在无限循环中调用循环
真的不清楚为什么你认为你需要在这里加入一个Arduino。如果只是因为您不知道如何将东西连接到PC,那么Raspberry Pi可能是一个更好的选择,因为它既可以运行python,又具有可以连接东西的GPIO引脚。第二种选择是在Arduino上加载firmata,并使用python中的pyFirmata来控制它。你可以用谷歌搜索这两个术语,有很多关于如何做到这一点的教程
我想你对Arduino的工作有一些基本的误解。也许花点时间从这个项目中学习一些基础知识会对你有一些好处,一旦你有了一些经验,并且对所有这些东西的意义有了一点了解,你就会回到这个项目中来
更大的问题是为什么要使用python?是否有需要从PC控制的原因?或者只是你不想学一门新语言?这是两个非常不同的问题,这促使我给你们非常不同的回答。如果您需要能够从PC控制显示器,那么只需这样做,并在以后使用Arduino进行其他操作
相关问题 更多 >
编程相关推荐