问题描述
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,};
byte word_to_display[] = {
B0000000,B0101110,B0101010,B0111010,B0100010,B0111110,B0000010,B0010110,B0101000,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,1);
delay(2000);
}
Arduino IDE首先解释setup
函数,然后像游戏引擎(例如Phaser)那样连续运行loop
函数。 Serial.write
通过串行端口将二进制数据向外发送到我的活动显示器,活动点解释该消息并做出相应的反应。
上面的循环显示在活动板上:
给我的印象是pyserial
包可能允许我通过相同的引脚发送相同的字节。这是我所得到的:
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,0xFF])
data_suffix = bytearray([0x8F])
all_dark = bytearray([
0B0000000,0B0000000,])
word_to_display = bytearray([
0B0000000,0B0101110,0B0101010,0B0111010,0B0100010,0B0111110,0B0000010,0B0010110,0B0101000,])
我需要弄清楚如何在OUTPUT模式下从Python打开Arduino上的8号针。排序后,我还需要弄清楚现在如何复制setup
和loop
函数及其组成调用,包括Serial.write()
方法,该方法将二进制数据写入串行端口以用于活动装置进行解释。任何指针都将非常有帮助。
解决方法
我对pyserial软件包可能允许我发送 通过相同的引脚输入相同的字节。
pyserial使您可以通过串行接口发送数据。它与Arduino无关。如果您只需要将此串行数据显示在显示器上,则完全不需要Arduino。只需将串行线连接到显示器,然后直接从PC发送串行数据即可。
我还需要弄清楚如何复制设置和循环 功能
那很简单。首先编写要运行一次的代码,然后将要在无限循环中运行的代码放入无限循环中。 while(1)可以很好地创建无限循环。 Arduino上的设置或循环功能没有什么特别的。它们只是从主函数调用的常规函数。安装程序被调用一次,然后循环被无限循环调用。
现在还不清楚为什么您认为需要在这里使用Arduino。如果仅仅是因为您不知道如何将事物连接到PC,那么Raspberry Pi可能是一个更好的选择,因为它既可以运行python,又具有可以将事物连接到的GPIO引脚。第二种选择是在Arduino上加载firmata并使用python中的pyFirmata来控制它。您可以用谷歌搜索这两个词,有很多关于如何做到这一点的教程。
我认为您对Arduino的功能有一些基本的误解。花费一些时间从该项目中学习一些基础知识,然后在您对所有这些东西意味着什么有了一点了解和一点了解之后,再回到这一点,也许对您会有所帮助。
更大的问题是,为什么要涉及python?是否有需要通过PC控制的原因?还是只是不想学习一种新语言?这是两个截然不同的问题,它们会促使我给您不同的答复。如果您需要能够从PC控制显示,则只需执行此操作,稍后再将Arduino用于其他用途即可。