树莓派超声波测距python程序详解(树莓派摄像头测距)
超声波测距的代码
连接5V和GND,超声波模块的Trig和Echo引脚可以连接至树莓派的任意GPIO引脚,连线方式和我们的不一样也没关系,记住Trig和Echo引脚对应的BCM引脚编码
编译命令:
gcc -Wall -o disMeasure chao.c -lwiringPi
树莓派通过C语言和python操作超声波测距模块
? ? 树莓派利用两个gpio来操作超声波测距模块,一个gpio操作发送超声波,另一个超声波接受返回的超声波,时间差与声音传播速度的积即为距离数值。模块可以测量 3cm – 4m 的距离,模块包括 超声波发射器、超声波接收器和控制电路三部分。 4 个引脚,由 2 个电源引脚(Vcc 、GND)和 2 个控制引脚(Trig、Echo)组成。Trig 引脚用来接收来自树莓派的控制信号,Echo 引脚用来发送测距结果给树莓派。
? ? V端口是5V供电,G是负极,T为板卡端口38(gpio28),E为板卡端口40(gpio29)。
? ? 原理为时间差乘以速率来计算距离。
gcc? distance_sensor.c -o? distance_sensor? -lwiringPi? #编译C语言
./distance_sensor? #运行程序
运行程序? python distance_sensor.py
最后试了试将程序改为labview通过LINX嵌入式部署到树莓派,最后测试有问题。感觉是时间控制方面有问题,夜深了,留待下次解决吧。
树莓派(Linux)开机运行python程序
cd (python所在路径)
python3 (python文件名)
chmod +x test.sh
su
nano /etc/rc/local
在exit 0上面添加
(test.sh所在绝对路径)./test.sh
chmod +x rc.local
6.终端输入systemctl status rc.local可查看运行成功状态,或得到相关错误提示
树莓派怎么运行python程序
树莓派运行Python程序的方法:
一、RaspBerry系统设置
1、首先在开发板没有通电情况下,连接硬件,以及项目中用到传感器。比如当前项目需要将LED灯插在面包板上,然后通过杜邦线将开发板和面包板连接,硬件平台搭建完毕。
2、其次打开树莓派开发板3B,然后用vnc连接上。
3、打开ssh功能。
如下图,Raspberry Pi Configuration
启用SSH连接功能。然后点击OK
更改后需要重新启动才能生效
二、使用ssh连接上开发板Raspberry Pi
1、打开事先安装好的File Zilla,输入IP地址、账户、端口号,连接到树莓派的Linux系统
2、在当前pi目录上创建存放开发项目的文件夹。在项目文件夹上创建具体的项目文件夹存放项目文件。例如在DIYdemo目录上创建LED灯项目
3、在PC端写好的python程序文件放到LED文件夹中。
三、运行python代码
1、打开VNC软件,点击菜单--programming--python3(EDLE)
2、打开写好的的程序,运行python程序
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于树莓派怎么运行python程序的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
python玩转树莓派(五) 用更好的方式写python程序
那上篇文章的 呼吸灯 举例
这个写法下, 如果我们使用ctrl+c打断了脚本的运行, 该如何清理GPIO释放资源呢?
我们如何能把它当做一个模块供其他模块调用呢?
我们不防按如下的方式修改这个程序
是不是很像arduino的写法?
求助树莓派避障小车,遇到 python 了
小白第一次上手 python ,用树莓派,红外和超声波传感器做智障小车。 编译错误:
RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(trip,GPIO.OUT)
Traceback (most recent call last):
File "xiaochetest.py", line 82, in module
fwd()
TypeError: fwd() takes exactly 1 argument (0 given)
下面是小车的代码:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
m1_fwd = 12
m1_rev = 11
m2_fwd = 13
m2_rev = 15
red_left = 07
red_right = 16
trip = 38
echo = 37
def init():
GPIO.setup(m1_fwd,GPIO.OUT)
GPIO.setup(m1_rev,GPIO.OUT)
GPIO.setup(m2_fwd,GPIO.OUT)
GPIO.setup(m2_rev,GPIO.OUT)
def stop(sleep_time):
GPIO.output(m1_fwd,False)
GPIO.output(m1_rev,False)
GPIO.output(m2_fwd,False)
GPIO.output(m2_rev,False)
time.sleep(sleep_time)
GPIO.cleanup()
def fwd(sleep_time):
GPIO.output(m1_fwd,GPIO.HIGH)
GPIO.output(m1_rev,GPIO.LOW)
GPIO.output(m2_fwd,GPIO.HIGH)
GPIO.output(m2_rev,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
def rev(sleep_time):
GPIO.output(m1_fwd,GPIO.LOW)
GPIO.output(m1_rev,GPIO.HIGH)
GPIO.output(m2_fwd,GPIO.LOW)
GPIO.output(m2_rev,GPIO.HIGH)
time.sleep(sleep_time)
GPIO.cleanup()
def right(sleep_time):
GPIO.output(m1_fwd,GPIO.HIGH)
GPIO.output(m1_rev,GPIO.LOW)
GPIO.output(m2_fwd,False)
GPIO.output(m2_rev,False)
time.sleep(sleep_time)
GPIO.cleanup()
def left(sleep_time):
GPIO.output(m1_fwd,False)
GPIO.output(m1_rev,False)
GPIO.output(m2_fwd,GPIO.HIGH)
GPIO.output(m2_rev,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
def get_distance():
GPIO.setup(trip,GPIO.OUT)
GPIO.setup(echo,GPIO.IN)
GPIO.output(trip,GPIO.HIGH)
time.sleep(0.000015)
GPIO.output(trip,GPIO.LOW)
while not GPIO.input(echo):
pass
t1 = time.time()
while GPIO.input(echo):
pass
t2 = time.time()
return (t2-t1)*34300/2
def turnaround():
GPIO.setup(red_left,GPIO.IN)
GPIO.setup(red_right,GPIO.IN)
while GPIO.input(red_left) and GPIO.input(red_right)==0:
rev()
if GPIO.input(red_left)==1:
left(1)
else:
right(1)
GPIO.cleanup()
while True:
distance = get_distance()
time.sleep(0.5)
if distance 20:
fwd()
elif distance == 20:
stop()
else:
stop()
turnaround()
def fwd(sleep_time)
if distance 20:
fwd()
调用 fwd 的时候要传参数啊,错误提示说的比较清楚了。