![1c3fc9460a4755fa291db31de4671ae7.png](https://i-blog.csdnimg.cn/blog_migrate/ac2e76519bbbece7d8689aef82ed8b37.jpeg)
1 Arduino 接线图
![cca7774d16fb67bfb470bad2d72e8923.png](https://i-blog.csdnimg.cn/blog_migrate/b11d7335cdd0f2c739e137407e8a40b0.jpeg)
2 arduino的程序
int
3 Python 显示数据
import
4 显示效果
![0f6f23aba2fd085d724ee8140b09ccea.png](https://i-blog.csdnimg.cn/blog_migrate/171d80f5f74978e25f585c91d99e6b25.jpeg)
5 扩展 添加另外一个box
如果需要将添加一个目标 target , 就需要建立一个 box 原点与圆柱一样y=-0.5, 长度窄点 length =0.2,width,height=3颜色设置为绿色
target = box(pos = vector(0,-0.5,0),length=0.2,width = 3,height=3,color=color.green)
#最终需要将其放在圆柱的尾端
target.pox.x = -3+pos #其中-3为初始的长度 需要减去
完整代码如下:
import serial #导入串口库
from vpython import * #导入vpython 进行数据绘图库
arduino = serial.Serial("com20",9600) #连接串口
rod = cylinder(radius=0.5,length=6,pos=vector(-3,0,0)) #绘制一个半径0.5 长6 像素的圆柱 坐标点在 x=-3,y=0,z=0
lab = label(pos=vector(0,1,0),text='distance is : ',height=10,box = False) #绘制一个标签,存放数字,左边x=0,z=0.y=1,高度10 没有外框线
target=box(pos=vector(0,-.5,0), length=0.2, width=3, height=3, color=color.green)
while 1:
try:
if(arduino.inWaiting()>0): #如果有串口数据
data = float(arduino.readline().strip()) #读取数据 去除 其他换行符合 转换为小数
rod.length= data #将圆柱的长度设置为读取的数值
print(data+-3)
lab.text = 'distance is : ' + str(data) #文字显示
target.pos.x = -3 + data
except: #跳过异常
pass
![098688877f39fbba2d166cf4682928c1.png](https://i-blog.csdnimg.cn/blog_migrate/971073d9177f7c1ac5970d3ffd1708b1.jpeg)