玩转树莓派系列 —— 点亮第一个led灯(python版本)

先看效果图:

基础知识

玩转树莓派系列 —— 系统烧录
树莓派-3B GPIO针脚示意图
python3基础知识

配件准备

  • 树莓派开发板 (以3B为例)
    29027E26-6D38-4F63-AFA3-D5AA60CE95FB

  • 杜邦线(公母线)
    571221D4-D433-4800-B42C-26E576321EA3

  • 面包板
    F94CB27C-0879-4251-9600-EEA4DBA82833

  • LED灯
    4D5AD12F-8AA6-4650-AF17-7B46B809FF28

  • 电阻(不是必须的)

GPIO介绍

GPIO就是今天的主角了,树莓派上有40根排针,这就是树莓派控制外部传感器的接口,称之为GPIO

40根引脚的编号可以根据其位置排序

现在只学习物理引脚的编号(左上角:1,右上角:2.......以此类推)
3.3v和5v接口就是分别输出3.3v和5v

GND就是接地

其中的GPIO可以输入也可以输出,设置为输出的话,可以控制输出高电压和低电压,高电压为3.3v,低电压为0v。可以通过程序来控制GPIO的输出。如果需要恒定的电压输出,则可以选择3.3v或者5v接口,如果需要控制输入以及输出,就可以选择GPIO接口了。

再开始编程之前,需要先懂得led的原理,学过物理的应该可以理解。
C11E8BA2-18CC-4465-9F4D-19F07AE4308D

简单来说,就是给led正极输入一个正的电压,负极接地,就可以亮了。

今天我们选择6号口当作负极,11号口当作正极。

通过树莓派控制11号口向led输出一个3.3v电压,led就可以亮起来了。

硬件连接

在开始连接硬件之前,要给树莓派断电 要给树莓派断电 要给树莓派断电
重要的事情说三遍

否则可能就会烧毁树莓派的电路,你的200大洋就废了。

首先拿出你的面包板,led和杜邦线
47E1CF9B-CA39-4AE1-8512-66C4613B2996
然后将杜邦线母口链接到树莓派的6,11口,再将其分别插入面包板,将led长脚插入11号口同一纵列,将短脚插入6号口同一纵列。
7266AF69-ACDF-4B8E-AE18-891FF5E6
最后自行检查一下,没有问题就可以通电了。

程序开发

两种方式开发

一. 将树莓派链接显示器,使用树莓派自带的python开发工具。

- 优点:
    可以直接运行程序,所见即所得。

- 缺点:
    无法格式化代码,python表示非常尴尬~!
    自带编辑器没有代码提示,真的很难用~!

二. SSH链接树莓派,在本地写好程序,上传到树莓派。

- 优点
    多种IDE工具可供选择。
    代码格式化和语法提示非常齐全。

- 缺点
    无法本地调试。

在这里,我选择使用SSH方式,将本地写好的代码,通过rz命令上传到树莓派。


import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.output(11, True)
time.sleep(8)
GPIO.output(11, False)
GPIO.cleanup()

如果灯没有亮,请检查代码有没有问题,或者杜邦线有没有插好,实在不行换一个led试试。

代码解释:


##引入了了RPI.GPIO模块,简写成了GPIO。
##引入time模块

##声明使用GPIO物理编号模式,声明了11号口是物理编码中的11号口。
##声明11号口为输出模式
##6号口是接地,不会变化,不用声明。
##设置11号口输出高电压,led就亮了
##使程序暂停3秒钟,就是使led亮三秒
##设置11号口为低电压,led灯灭
##使所有GPIO口恢复为初始化。

总结

由于涉及到python,建议大家自学一下,几个基本的语句,例如if判断,while循环等,小编在后期文章会介绍。

大家可以用更多的led来试验,GND是可以公用的。

LED灯的其他玩法

  • 闪烁11下,然后关闭

import RPi.GPIO as GPIO

import time

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)

i = 0
try:
    while True:

        if i > 10:

            break
        GPIO.output(11, True)
        time.sleep(0.5)
        GPIO.output(11, False)
        time.sleep(0.5)
        i += 1

finally:
    GPIO.cleanup()
  • 控制亮度

import RPi.GPIO as GPIO

led_pin = 11
GPIO.setmode(GPIO.BOARD)
GPIO.setup(led_pin, GPIO.OUT)

pwm_led = GPIO.PWM(led_pin, 500)
pwm_led.start(100)

try:
    while True:
        duty_s = input("请输入你要的亮度(0-100):")
        duty = int(duty_s)
        pwm_led.ChangeDutyCycle(duty)
finally:
    GPIO.cleanup()

转载于:https://my.oschina.net/qnloft/blog/1819817

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值