【发布时间】:2019-02-13 04:09:27
【问题描述】:
我是 Python 和 Raspberry Pi 的新手,希望将它们用于带有 Arduino 的项目。基本上,我想按下连接到 Arduino 的按钮,然后让该输入在树莓派上播放视频文件。
我在通过串行数据这样做时遇到了一些困难。我可以在 Arduino 和 Pi 之间连接串行消息,即:“Hello World”,但不太清楚如何打开视频文件。现在,当我运行 Python 代码时,什么都没有出现,并且按钮按下没有响应。我有正确的 USB 端口,因为它可以与仅打印串行数据的其他程序一起使用。我该如何解决这个问题?
简而言之,最终目标是“按下按钮-->播放视频”。
Arduino 代码:
int pushButton=2;
int buttonState=0;
void setup()
{
serial.Begin(9600);
pinMode(pushButton, INPUT);
}
void loop()
{
int buttonState=digitalRead(pushButton);
if (buttonState==HIGH)
{
Serial.println("a");
delay(100);
}
if (buttonState==LOW)
{
//do nothing
}
}
Python 代码:
import sys
import os
from subprocess import Popen
import serial
movie1=("/home/pi/Videos/test.mp4")
ser = serial.Serial('/dev/ttyUSB0',9600)
while True:
data = ser.read()
if data=="a":
os.system('killall omxplayer.bin')
print("a")
omxc = Popen(['omxplayer','-b', movie1])
【问题讨论】:
-
尝试记录来自
ser.read()的内容。可能是b"a"二进制“a”(对 python 2.x 无关)删除subprocess.Popen()直到您确信串行 I/O 正常。 -
你有下拉电阻吗?你知道如果你按住按钮,播放器每秒会被触发 10 次吗?
标签: python arduino raspberry-pi serial-port popen