我有一个需要:使用arduino将伺服电机移动到某个位置并在该位置停止

让一个由python控制的相机在那个位置获取图像

当图像被采集到时,伺服机构应该移动到一个对称的位置

这个序列重复N次

所以我尝试使用串行通信同步arduino和python代码。在arduino端,当伺服到达某个位置时,它使用串行通信向python代码发送一个字符串。根据到达的位置,字符串可以是“Cross”或“Co”。arduino应该等待python代码通过串行通信发送一个字符串“Ok”(在图像采集之后)。接收到该串后,arduino应启动伺服,使其移动到另一个位置。在

在python代码方面,我读取串行数据,根据接收到的字符串(Cross或Co):定义了字符串名称

使用照相机获取图像

图像将被保存或附加到列表中

字符串“Ok”被发送到arduino。在

代码附在下面。在

问题是我不能正确同步伺服位置和图像采集。串行读写器似乎并没有从两个位置来回读伺服。它永远不会停在某个位置上。然而,arduino代码确实向python代码发送“Cross”和“Co”,python代码确实能够读取它们并获取和保存图像,但通常使用错误的名称。让arduino代码在每个位置等待足够长的时间不是解决方案,因为我需要一个合适的图像采集频率。

所以我想知道什么是最好的方式来同步两个代码,并确保,我的图像的正确名称将对应于正确的位置伺服?在

提前感谢任何链接或想法。在

格雷格

arduino代码

`在#include

//servo

Servo myservo; // create servo object to control a servo

// twelve servo objects can be created on most boards

int pos = 0; // variable to store the servo position

//camera

const int CameraPin = 53; // the number of the camera trigg

int CameraState = LOW; // ledState used to set the LED

const int ledPin = 13; // the number of the LED pin

String Str = "c";

void setup() {

myservo.attach(9); // attaches the servo on pin 9 to the servo object

// set the digital LED pin as output:

pinMode(CameraPin, OUTPUT);

// set the digital camera pin as output:

pinMode(ledPin, OUTPUT);

//serial communication

Serial.begin(9600);

Serial.println("Ready");

}

void loop() {

Serial.flush();

// go to Co position and wait

ServoCo(15); // go to Co position

Serial.println("Co"); //send signal Co to python

while(!Serial.available()) {} // wait for python to send data acquired

while ((Serial.available()<2)) // Test on the length of the serial string

{

delay(1);

String Str = Serial.readStringUntil('\n');

Serial.println(Str);

}

// go to cross position and wait

ServoCross(15); // go to Cross position

Serial.println("Cross");

while(!Serial.available()) {}

while ((Serial.available()<2))

{

delay(1);

String Str = Serial.readStringUntil('\n');

Serial.println(Str);

}

}

delay(100);

}

void ServoCross(int ServoDelay)

{

for (pos = 105; pos >= 75; pos -= 1) { // goes from 0 degrees to 180 degrees

// in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(ServoDelay);

}

}

void ServoCo(int ServoDelay)

{

for (pos = 75; pos <= 105; pos += 1)

{ // goes from 0 degrees to 180 degrees

// in steps of 1 degree

myservo.write(pos); // tell servo to go to position in variable 'pos'

delay(ServoDelay);

}`

Python代码:

^{pr2}$

python和arduino串口通信_利用串行通信实现python与arduino的同步相关推荐

  1. python如何实现找图_利用OpenCV和Python实现查找图片差异

    使用OpenCV和Python查找图片差异 flyfish 方法1 均方误差的算法(Mean Squared Error , MSE) 下面的一些表达与<TensorFlow - 协方差矩阵&g ...

  2. python打代码运行图形_利用aardio给python编写图形界面

    前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了. 于是百度了下python的图形界面库,眼花缭乱的一整页,拣了几件有"特色& ...

  3. python抓取网页电话号码_利用正则表达式编写python 爬虫,抓取网页电话号码!...

    利用正则表达式编写python 爬虫,抓取网页联系我们电话号码!这里以九奥科技(www.jiuaoo.com)为例,抓取'联系我们'里面的电话号码,并输出. #!/usrweilie/bin/pyth ...

  4. python中select模块_基于python select.select模块通信的实例讲解 如何用python写个串口通信的程序...

    python socket怎么利用select实现双工通信 方法: Before : 0000000000000000000000000000000000000000 After pack: 0100 ...

  5. USB to TTL python 本地测试串口通信

    手头上有个 USB to TTL CH340 型号的,想在本地用 python 测试下串口通信. 硬件准备 首先是 USB to TTL 元件,找个跳线帽将 TXD 和 RXD 针脚相连,插到电脑上 ...

  6. 树莓派php minicom,用DHT11实践树莓派与Arduino串口通信 | 树莓派实验室

    Arduino具有丰富的外部接口,与树莓派的IO口最大的不同在于Arduino具有模拟输入接口,可以测量IO口上的模拟值.Arduino与Raspberry通过串口(Serial)通信的方案一般有两种 ...

  7. python实现CH340串口通信(超详细)

    mac python实现CH340串口通信 串口通信介绍 烧录程序 代码实现串口通信 https://www.lanqiao.cn/courses/2947,提供准备好的云主机ros环境,进行实操,课 ...

  8. QT子线程实现串口通信_学习记录

    QT子线程实现串口通信_学习记录 1 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一个表格 设定内容 ...

  9. 如何用python写串口通信软件_如何用python写个串口通信的程序?

    展开全部 打开串口后启动一个线程来监听串口数据的进入,有数据时,就做数据的处理. 用python写串口通信e68a84e8a2ad32313133353236313431303231363533313 ...

最新文章

  1. 他只有2年工作经验,现在却拿着40万年薪,只因他曾做过这件事
  2. php单引号双引号的区别
  3. python做电脑软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版
  4. 问题 1: 区间交集
  5. 斐波那契数列(大数)
  6. 易语言修改虚拟机硬盘id_易语言本地虚拟机源码
  7. java消除整型数组中重复的元素,排序后输出新数组
  8. python 日期减一天_怎么用Python在指定日期上减去7天?
  9. 在边缘计算大热的背景下,为何Akamai敢说自己就是边缘
  10. 【Keil5】关于keli5使用ST-link下载的配置方法
  11. 矩阵迹(trace)与行列式(determinate)的一些性质
  12. qlv视频怎么转换成mp4格式工厂?如何用格式工厂将qlv格式转换成mp4格式?
  13. 阿里云的安全防护措施
  14. 拼图复原_1张废旧纸板,3分钟带娃变成趣味拼图!
  15. php嵌入图片代码,php如何添加图片
  16. 还在熬夜干论文——Python带你一键起飞!【内附演示视频】
  17. 在osgEarth中添加模型的简单示例
  18. 计算机网络--七层协议/五层协议
  19. Android ToggleButton:状态切换的Button
  20. 【Java练习】数字加密(各位数加五对十取余并反转)

热门文章

  1. moment 时间戳_【通知】2020 CATTI 考试准考证打印时间
  2. 视图插入数据_用EXCEL作数据分析--招聘信息
  3. python如何创建一个列表_在python中创建列表的最佳和/或最快方法
  4. python3.5和3.7可以共存吗_centos7下Python和python3共存
  5. C++全局变量和局部变量名称可以相同
  6. python生成和导入pyc文件
  7. Android实现圆形圆角图片
  8. JavaScript 和 typeScript 中的 import、from
  9. JS中实现replaceAll的方法
  10. php通过url传递变量,PHP:如何在模态URL中放置和传递变量