树莓派超声波测距python程序详解(树莓派摄像头测距)

http://www.itjxue.com  2023-03-29 18:15  来源:未知  点击次数: 

超声波测距的代码

连接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 的时候要传参数啊,错误提示说的比较清楚了。

(责任编辑:IT教学网)

更多

相关照片处理文章

推荐照片处理文章