树莓派开关控制c语言 | 您所在的位置:网站首页 › 树莓派运行c程序 › 树莓派开关控制c语言 |
这篇博文是我Coursera学习笔记整理所得,入门操作基本都在这里了。闲话不多说,直接进入正题。 1.树莓派的GPIO## GPIO是General Purpose Input Output (通用输入/输出)的缩写,一般译为总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。摘自百度百科 除了Raspberry Zero之外,其他版本的树莓派GPIO都带标准的GPIO,而且都是公头(与Arduino Uno正好相反)。Raspberry Zero比较奇葩。它是专门为制作嵌入式系统设计的,为了减小体积和成本(主要是体积),它的GPIO不带头。对于需要使用GPIO的研发人员,需要自己动手焊上去。 因为各个版本的树莓派GPIO的数量不一样,所以,可想而知,各个版本树莓派的GPIO布局也是不一样的。这在开发的时候有些小麻烦。本文以树莓派3代为例,不过,先给出各版本树莓派GPIO的布局以供参考: 树莓派A型和B型### Raspberry Pi A & B,按GPIO号显示 Raspberry Pi A & B,按物理位置显示 树莓派A+型、B+型和2代### Raspberry A+, B+, 2,按GPIO号显示 Raspberry A+, B+, 2,按物理位置显示 树莓派3代### Raspberry Pi 3 以上我们可以看到一个GPIO针头既有GPIO号标识,也可以用物理物质标识,编程时你需要说明你用何种方式标识,后文还会提到。 2.树莓派编程基础## 树莓派基本都预装好了Python的GPIO库,通常在文件开头使用import RPi.GPIO as GPIO导入。 设置模式——GPIO.setmode### GPIO.setmode(mode),mode参数有两个值,GPIO.BOARD和GPIO.BCM,注意全是大写。前者是告诉程序按物理位置找GPIO头(或者叫channel),后者按GPIO号。两种模式各有各的好处,前者方便找,后者方便程序在不同的树莓派版本上跑,具体区别大家自己体会。 设置GPIO头的输入和输出——GPIO.setup### GPIO.setup(channel,mode),channel就是你要用的GPIO头,mode分为输入GPIO.IN和输出GPIO.OUT。 GPIO.output(channel, GPIO.HIGH) #输出高电平,就是输出信号1 GPIO.output(channel, GPIO.LOW) #输出低电平,就是输出信号0 - ###调制脉宽,输出模拟信号——GPIO.PWM### 树莓派本身既不能接受模拟信号,也不能输出模拟信号,要么输出1,要么输出0。不过可以通过改变数字信号的输出占空比(就是一个周期内,GPIO打开时间占总时间的比例),使输出效果近似的模拟信号。例如,我们牵绊周期打开GPIO输出1,后半周期关闭GPIO,接受的设备(例如一个舵机或者一盏LED灯)没方法反应过来,就会输出0.5。树莓派3代一般使用pin12和pin24调制脉宽。 p = GPIO.PWM(channel,frequency) #channel是GPIO头,frequency是频率 p.start(dc) #dc 是占空比 (0.0 |
CopyRight 2018-2019 实验室设备网 版权所有 |