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

我有一个需要:使用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}$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/505405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络中数据链路层编码纠错编码 --- 海明码

1 概述 首先, 海明码是计算机网络中数据链路层的针对帧的位错提出的一种纠错编码方式. 海明码可以发现双比特错, 但纠正单比特错. 工作原理(简单解释): 牵一发动全身 2 工作流程 2.1 确定校验码位数r 海明不等式: 其中为冗余信息位数, 为信息位数 如果给定要发送的数据, …

python在教育领域的应用_浅谈Python的主要应用领域

Python的用途较为广泛&#xff0c;小编也会经常接触到各种与Python有关的项目&#xff0c;也算是一名忠实的开发者。能够遇到关于Python用途的问题&#xff0c;也很乐意回答。Python这个概念非常大&#xff0c;它的定位是“计算机程序设计语言”&#xff0c;从它的特点来看&…

计算机操作系统同步互斥

1 背景 在计算机系统里面, 多道程序设计是现代操作系统的重要特征, 且并行起到了很大的作用, 所以操作系统抽象出来了线程/进程的概念用来支持多道程序设计, 同时, 各个进程之间需要进行交互, CPU也需要进行调度来支持多进程. 多进程会涉及到共享资源访问的问题, 如果操作系统…

leetcode 26 --- removeDuplicates

1 题目 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 2 思路 此题要利…

conda安装tensorflow-gpu简洁版_win10 tensorflow2.2 安装注意事项

学习新技术有两座大山&#xff0c;一座是安装配置环境&#xff0c;另一座是调试bug。对于想学习人工智能开发的人来说&#xff0c;安装配置tensorflow是必不可少的一步&#xff0c;这个过程对于初次接触的人来说&#xff0c;到处都是火坑。下面大家跟我一起&#xff0c;看看都会…

python九九乘法表右对齐_python语法练习题之九九乘法表

九九乘法表 for...in方法实现 #方法一 for i in range(1, 10):for j in range(1, i1):print({}*{}{:<4}.format(j, i, i*j), end )print()#输出 1*11 1*22 2*24 1*33 2*36 3*39 1*44 2*48 3*412 4*416 1*55 2*510 3*515 4*520 5*525 1*66 2*612 3*618 4*624 5*630 6*636 1*7…

操作系统信号量和管程

1 背景 同步互斥回顾: 并发问题: 竞争条件(竞态条件) 多程序并发存在大量问题 同步 多线程共享公共数据的协调执行包括互斥与条件同步互斥: 在同一时间只有一个线程可以执行临界区 确保线程同步 需要高层次的编程抽象(如: 锁)从底层硬件支持编译 2 信号量 信号量是抽象数…

python里元组和列表的共同点和不同点_Python元组与列表的相同点与区别

列表和元组都属于有序序列&#xff0c;支持使用双向索引访问其中的元素、使用内置函数len()统计元素个数、使用运算符in测试是否包含某个元素、使用count()方法统计指定元素的出现次数和index()方法获取指定元素的索引。虽然有着一定的相似之处&#xff0c;但列表和元组在本质上…

操作系统中死锁避免算法 --- 银行家算法

1. 背景 在银行系统中, 客户完成项目需要申请贷款的数量是有限的, 每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量, 在满足所有贷款要求并完成项目时, 客户应及时归还. 银行家在客户申请的贷款数量不超过自己拥有的最大值时, 都应尽量满足客户的需要. 在这样的描…

python字符串对齐_Python - 字符串对齐

字符串对齐 本文地址: http://blog.csdn.net/caroline_wendy/article/details/20463231 Python中, 字符串对齐, 使用ljust(), 左对齐;rjust(), 右对齐; center(), 中间对齐; 也可以修改第三个参数, 修改填充数据, 默认使用空格; 代码如下: # -*- coding: utf-8 -*- # #File: Te…

操作系统中的死锁问题

1 死锁问题概述 一组阻塞的进程持有一种资源等待获取另一个进程所占有的一个资源.例子: 系统有两个磁带驱动器, P1和P2各有一个, 都需要另外一个. 2 系统模型 资源类型: , , ..., 包括CPU cycles, memory space, I/O devices 每个资源类型有实例. 每个进程使用资源过程如下…

chrome控制台如何把vw显示成px_你可能不知道的chrome调试技巧

本文是对常用的chrome调试技巧进行总结整理&#xff0c;如果你没有深入了解过chrome调试工具&#xff0c;此处总有你不知道的惊喜&#xff01;从 Chrome 说起对于大部分人来说&#xff0c;Chrome 可能只是个浏览器&#xff0c;但是对于开发人员来说&#xff0c;它更是一个强大无…

操作系统进程间通信 --- IPC

1. 概述 进程间通信的原因: 进程之间要保持独立, 也需要通信, 保证相对独立性的同时还需要去确保进程间的沟通. 1.1 通信模型 IPC facility提供2个操作: send(message) -- 消息大小固定或者可变receive(message) 如果P和Q想通信, 需要: 在它们之间建立通信链路通过 send/…

gns3中两个路由器分别连接主机然后分析ip数据转发报文arp协议_ARP协议在同网段及跨网段下的工作原理...

前言&#xff1a;ARP协议是在链路层通讯中&#xff0c;已知目标IP地址,但是&#xff0c;仅有IP 地址是不够的&#xff0c;因为IP数据报必须封装成帧才能通过数据链路进行发送&#xff0c;而数据帧必须要有目的MAC地址&#xff0c;每一个网络设备在数据封装前都需要获取下一跳的…

操作系统文件系统

1 基本概念 1.1 文件系统和文件 1.1.1 简述 文件系统: 一种用于持久性存储的系统抽象 在存储器上: 组织, 控制, 导航, 访问和检索数据大多数计算机系统包含文件系统个人电脑, 服务器, 笔记本电脑ipod, Tivo/机顶盒, 手机/掌上电脑google可能是由一个文件系统构成的 文件: 文…

c++代码整洁之道pdf_别再问如何用python提取PDF内容了

作者&#xff1a;陈熹 来源&#xff1a;早起Python大家好&#xff0c;在之前的办公自动化系列文章中我们已经详细介绍了如何使用python批量处理PDF文件&#xff0c;包括合并、拆分、水印、加密等操作。今天我们再次回到PDF&#xff0c;详细讲解如何使用python从PDF提取指定的信…

计算机操作系统学习

1 概述 操作系统职能完成对硬件的管理和控制 1.1 操作系统需要关注的 计算机硬件有CPU, 内存, 磁盘, 声卡, 网卡等等, 所以操作系统关注CPU进程线程的调度, 内存管理(物理内存, 虚拟内存), 文件系统管理, 中断处理, IO设备驱动等等. 1.2 操作系统特征 1.2.1 并发和并行 并…

查看文章影响因子的插件_Scholarscope--在新版PubMed中实现基于影响因子的文献筛选...

小编之前介绍过如何在Pubmed上直接显示杂志影响因子的方法&#xff0c;这个方法主要是依托Scholarscope插件&#xff0c;其实除了显示影响因子&#xff0c;这个插件还可以帮助大家根据影响因子筛选文献哦&#xff0c;操作也很简单&#xff0c;只要生成自定义过滤器即可&#xf…

leetcode32 --- longestValidParentheses

1 题目 给你一个只包含 ( 和 ) 的字符串&#xff0c;找出最长有效&#xff08;格式正确且连续&#xff09;括号子串的长度。 2 解法 2.1 动态规划方法 维护一个字符串长度的数组cur_max_len, 第i个元素代表以当前(或者)结束的最长有效括号的长度. 这样就会利用动态规划递推…

armitage识别不了漏洞_Shiro RememberMe 漏洞检测的探索之路

前言Shiro 是 Apache 旗下的一个用于权限管理的开源框架&#xff0c;提供开箱即用的身份验证、授权、密码套件和会话管理等功能。该框架在 2016 年报出了一个著名的漏洞——Shiro-550&#xff0c;即 RememberMe 反序列化漏洞。4年过去了&#xff0c;该漏洞不但没有沉没在漏洞的…