当前位置: 首页 > 工具软件 > OpenCR > 使用案例 >

openCR控制DYNAMXEL-Sheld电机 替代解决方案

穆嘉
2023-12-01

openCR控制DYNAMXEL-Sheld电机 替代解决方案

写在前面:穷,买不起OPENCR来控制DYNAMXEL电机,只有用DYNAMXEL-Sheld+ardunio 来实现,两者之间差了5倍的价格。
DYNAMXEL-Sheld 有一个缺陷:会占用Arduino的串口。由此需要采用软串口来扩展串口。
故本文只记录一下,python 与 DYNAMXEL-Sheld 扩展板之间的软串口通信。

实现原理

利用Python实现串口通信本质上是利用python给出一个信号(只能是ASCII码),通过串口(COM)传送给硬件设备,例如:Arduino、STM32等。硬件设备接收到该信号,通过已经烧录好的程序自行处理。因此,在实现过程中,主要关注点便是:①Arduino如何发出信号到串口、python如何从串口读取信息;②python如何发送信号到串口、Arduino如何从串口读取信号。
链接:https://blog.csdn.net/qq_45362415/article/details/107893410

此处是ardunio端的代码详细原理参考链接
采用串口线实现电脑与Arduino之间的通信

#include<SoftwareSerial.h>
//新建一个softSerial对象,rx:14(黄),tx:15(白)
SoftwareSerial softSerial1(14,15);

void setup() {
  // 初始化串口通信:
  Serial.begin(9600);
  //初始化软串口通信;
  softSerial1.begin(9600);
  //监听软串口通信
  softSerial1.listen();
  pinMode(13, OUTPUT);//设置13号端口作为输出端口
  digitalWrite(13,LOW);//让灯开始时亮
}

char var;

void loop(){
  while( softSerial1.available()>0)//当有信号的时候
  {
    var= softSerial1.read();
    if(var=='0')//传过来的是0
      digitalWrite(13,LOW);
    if(var=='1')//传过来的是1
      digitalWrite(13,HIGH);//让灯开始时亮
  }
}

python 端的代码

# -*- coding: utf-8 -*-
import serial

serialPort = "COM5"  # 串口
baudRate = 9600  # 波特率
ser = serial.Serial(serialPort, baudRate, timeout=0.5)
print("参数设置:串口=%s ,波特率=%d" % (serialPort, baudRate))

demo1=b"0"#将0转换为ASCII码方便发送
demo2=b"1"#同理
while 1:
    c=input('请输入指令:')
    c=ord(c)#将c转换为UTF-8标准数字
    if(c==48):
        ser.write(demo1)#ser.write在于向串口中写入数据
    if(c==49):
        ser.write(demo2)
 类似资料: