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灯接的引脚配置,我这里是26脚
try:
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 # 这里什么都不做,函数体还没有实现