玩转树莓派(一)led、pwm、超声波、常见命令

1、树莓派常见命令

sudo cat /etc/passwd #查看树莓派用户、密码

2、玩转树莓派

2.1 led,py 点亮led

cd Desktop   #文件路径,桌面
nano led.py # 新建文件夹,后面文件名

led.py源文件:

#!/usr/bin/python                             
#-*- coding:utf-8 -*-               
import RPi.GPIO as GPIO             #导入RPi.GPIO库
import time                         #导入time库                   
GPIO.setwarnings(False)               #禁用警告(可以不用)
GPIO.setmode(GPIO.BCM)                #使用BCM编码的引脚号
GPIO.setup(26,GPIO.OUT)               #根据自己LED灯接的引脚配置,我这里是26try:
    while True:                       #wile循环
        GPIO.output(26,GPIO.HIGH)     #引脚拉高
        time.sleep(1)                 #延时1s
        GPIO.output(26,GPIO.LOW)      #引脚拉低
        time.sleep(1)                 #延时1s
except:
    print("except")
GPIO.cleanup()
#然后在python编译器里面运行就行

2.2 RGB彩色灯

``RGB三色灯有24位数据

前8位是绿色,接着是红色亮度,接着控制蓝色亮度的数据

安装RGB相关库

#安装 neopixel 库,不需要对RGB进行解码等操作
#安装  sudo pip3 install rpi_ws281x
# sudo python3 rgb.py 运行程序
#!/usr/bin/env python
# encoding: utf-8
 
import RPi.GPIO
import time
 
R,G,B=15,18,14
 
RPi.GPIO.setmode(RPi.GPIO.BCM)
 
RPi.GPIO.setup(R, RPi.GPIO.OUT)
RPi.GPIO.setup(G, RPi.GPIO.OUT)
RPi.GPIO.setup(B, RPi.GPIO.OUT)
 
pwmR = RPi.GPIO.PWM(R, 70)
pwmG = RPi.GPIO.PWM(G, 70)
pwmB = RPi.GPIO.PWM(B, 70)
 
pwmR.start(0)
pwmG.start(0)
pwmB.start(0)
 
try:
 
    t = 0.4
    while True:
        # 红色灯全亮,蓝灯,绿灯全暗(红色)
        pwmR.ChangeDutyCycle(0)
        pwmG.ChangeDutyCycle(100)
        pwmB.ChangeDutyCycle(100)
        time.sleep(t)
         
        # 绿色灯全亮,红灯,蓝灯全暗(绿色)
        pwmR.ChangeDutyCycle(100)
        pwmG.ChangeDutyCycle(0)
        pwmB.ChangeDutyCycle(100)
        time.sleep(t)
         
        # 蓝色灯全亮,红灯,绿灯全暗(蓝色)
        pwmR.ChangeDutyCycle(100)
        pwmG.ChangeDutyCycle(100)
        pwmB.ChangeDutyCycle(0)
        time.sleep(t)
         
        # 红灯,绿灯全亮,蓝灯全暗(黄色)
        pwmR.ChangeDutyCycle(0)
        pwmG.ChangeDutyCycle(0)
        pwmB.ChangeDutyCycle(100)
        time.sleep(t)
         
        # 红灯,蓝灯全亮,绿灯全暗(洋红色)
        pwmR.ChangeDutyCycle(0)
        pwmG.ChangeDutyCycle(100)
        pwmB.ChangeDutyCycle(0)
        time.sleep(t)
         
        # 绿灯,蓝灯全亮,红灯全暗(青色)
        pwmR.ChangeDutyCycle(100)
        pwmG.ChangeDutyCycle(0)
        pwmB.ChangeDutyCycle(0)
        time.sleep(t)
         
        # 红灯,绿灯,蓝灯全亮(白色)
        pwmR.ChangeDutyCycle(0)
        pwmG.ChangeDutyCycle(0)
        pwmB.ChangeDutyCycle(0)
        time.sleep(t)
         
        # 调整红绿蓝LED的各个颜色的亮度组合出各种颜色
        for r in xrange (0, 101, 20):
            pwmR.ChangeDutyCycle(r)
            for g in xrange (0, 101, 20):
                pwmG.ChangeDutyCycle(g)
                for b in xrange (0, 101, 20):
                    pwmB.ChangeDutyCycle(b)
                    time.sleep(0.01)
 
except KeyboardInterrupt:
    pass

pwmR.stop()
pwmG.stop()
pwmB.stop()
 
RPi.GPIO.cleanup()

2、3 驱动直流电机

这里注意,需要稳压模块连接,不然容易烧掉

在这里插入图片描述

  • 创建pwm实例

    pwm = GPIO.PWM(channel, frequency)  
    
  • 启用pwm

    pwm.start(dc)  #dc是给定占空比
    
  • 更改pwm频率

    pwm.ChangeDutyCycle(dc)  
    
  • 停止pwm

    pwm.stop()  
    
  • 呼吸灯原码:

import time
import RPi.GPIO as GPIO   //引入库
GPIO.setmode(GPIO.BOARD)  //设置编号方式
GPIO.setup(12, GPIO.OUT)  //设置12号引脚为输出模式

p = GPIO.PWM(12, 50)  //将12号引脚初始化为PWM实例 ,频率为50Hz
p.start(0)    //开始脉宽调制,参数范围为: (0.0 <= dc <= 100.0)
try:
    while 1:
        for dc in range(0, 101, 5):
            p.ChangeDutyCycle(dc)   //修改占空比 参数范围为: (0.0 <= dc <= 100.0)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            p.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass
p.stop()    //停止输出PWM波
GPIO.cleanup()    //清除

使用命令行的话,需要详细的目录

pi@raspberrypi:~/Desktop $ python3 pwm.py

2、4 超声波案例

控制源码

 #! /usr/bin/python

2. # -*- coding:utf-8 -*-

3. import RPi.GPIO as GPIO

4. import time

5. def checkdist():

6. #发出触发信号

7. GPIO.output(2,GPIO.HIGH)

8. #保持15us的超声波发射,避免能量太低无法返回

9. time.sleep(0.000015)

10. #然后置位2号管脚低电平,即停止发射超声波

11. GPIO.output(2,GPIO.LOW)

12. while not GPIO.input(3):

13. pass

14. #发现高电平时开时计时

15. t1 = time.time()

16. #如果有检测到反射返回的超声波,那么就持续计时,否则就跳出循环,计时结束

17. while GPIO.input(3):

18. pass

19. #高电平结束停止计时

20. t2 = time.time()

21. #返回距离,单位为米

22. return (t2-t1)*340/2

23. GPIO.setmode(GPIO.BCM)

24. #第3号针,GPIO2

25. GPIO.setup(2,GPIO.OUT,initial=GPIO.LOW)

26. #第5号针,GPIO3

27. GPIO.setup(3,GPIO.IN)

28. time.sleep(2)

29. try:

30. while True:

31. print 'Distance: %0.2f m' %checkdist()

32. time.sleep(0.5)

33. except KeyboardInterrupt:

34. GPIO.cleanup()

pass语句

  • 在Python中,是一个空语句,用于表示什么都不做。它通常用作占位符,因为Python中的语法需要至少有一条语句,但有时候在语法上需要一些语句却不需要执行任何操作时,就可以使用。

  • 例如,当你定义一个函数或类但是还没有实现其中的功能时,可以使用来占位:pass

    def my_function():
        pass  # 这里什么都不做,函数体还没有实现
    

    在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

week_泽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值