1、2、两只LED不同是亮/灭的情况。这时需要考虑将两只LED同向串联,将单片机的GPIO口接在两只LED的公共端。其典型的示意电路图如扮弯下图所示。两只LED同向串联后串在电源电路中,单片机的GPIO控制两个LED的公共端。当单片机输出高电平1时LED1熄灭,而LED2被点亮(拉电流的方式)。当单片机输出低电平0时LED1
系统软硬件说明:树莓派4B,安装系统为适用树莓派的ubuntu18.04,64位系统。用户可以通过GPIO口和硬件进行数据交互(如UART),控制硬件禅昌碧工作(如LED、蜂鸣器等),读取硬件的工作状态信号(如中断信号)等。
1.使用c语言编程时
wiringPi,使用时需要安装库。
因为本树莓派使用的是ubuntu64位系统,而wiringpi是在32位上使用的,所以安装步骤不同于网上大多数的教程,使用以下方法可以将其安装到64位系统。
Install 安装过程
1.Download from the last Releases. 从Releases下载最新的构建文件。
https://gitee.com/guation/WiringPi-arm64/releases
2.Enable 32-bit support. 开启32位迅春支持。
If you are using Rspberry PI OS, please skip this step.如果你使用Raspberry Pi OS请跳过此步骤。
sudo dpkg --add-architecture armhf
sudo apt update
3.Install the DEB file.安装deb文件。
sudo apt install -f ./wiringpi-*-g.deb(或者直接双击deb文件即可安装)
登录后复制
安装后贺举,查看版本
gpio -v
登录后复制
查看引脚图
gpio readall
登录后复制
wiringPi 适合那些具有C语言基础,在接触树莓派之前已经接触过单片机或者嵌入式开发的人群。wiringPi 的 API函数和arduino非常相似,这也使得它广受欢迎。作者给出了大量的说明和示例代码,这些示例代码也包括 UART 设备,I2C 设备和 SPI 设备等。
示例代码:led.c
#include <stdio.h>
#include <wiringPi.h>
#define LED0 1 // 设置GPIO1为控制LED的引脚,11pin
int main()
{
printf("Hello world\n")
wiringPiSetup() // 初始化gpio
pinMode(LED0, OUTPUT) // 设置gpio0为输出模式
while (1) {
// 设置GPIO0为高电平
printf("Set GPIO0 : H\n")
digitalWrite(LED0, HIGH)
delay(4000)
// 设置GPIO0为低电平
printf("Set GPIO0 : L\n")
digitalWrite(LED0, LOW)
delay(4000)
return 0
}
登录后复制
2.使用Python编程时
使用RPi.GPIO模块,需要安装,安装过程简单,自行百度。
在RPi.GPIO中,同时支持树莓派上的两种GPIO引脚编号。第一种编号是BOARD编号,这和树莓派电路板上的物理引脚编号相对应。使用这种编号的好处是,你的硬件将是一直可以使用的,不用担心树莓派的版本问题。因此,在电路板升级后,你不需要重写连接器或代码。
第二种编号是BCM规则,是更底层的工作方式,它和Broadcom的片上系统中信道编号相对应。在使用一个引脚时,你需要查找信道号和物理引脚编号之间的对应规则。对于不同的树莓派版本,编写的脚本文件也可能是无法通用的。
但是 python GPIO 库还没有支持 SPI、I2C 或者 1-wire 等总线接口。
示例:led.py
#python
#*coding:utf-8*
#GPIO控制LED灯程序
import RPi.GPIO as GPIO#引入函数库
import time
pin = 12
GPIO.setmode(GPIO.BOARD)#设置引脚编号规则
GPIO.setup(pin, GPIO.OUT)#将11号引脚设置成输出模式
#while True:
GPIO.output(pin, GPIO.HIGH)
time.sleep(5)
GPIO.output(pin, GPIO.LOW)
time.sleep(2)
GPIO.cleanup()
登录后复制
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)