当前位置: 首页 > article >正文

树莓派开发笔记02-三大GPIO库实战:点亮你的第一个LED

1. 硬件准备与连接第一次玩树莓派GPIO控制的新手们别被那些专业术语吓到。咱们先来搞定最基础的硬件连接。我当年第一次点亮LED时那种成就感至今难忘——就像程序员第一次打印出Hello World。你需要准备的东西很简单一块树莓派任何型号都行我用的是4B、一颗LED灯颜色随你喜欢、一个220Ω的电阻防止电流过大烧坏LED、几根杜邦线。这些在某宝上花不到20块钱就能搞定建议直接买套件更划算。关键连接步骤找到树莓派GPIO排针就是板子上那两排金属针脚将LED长脚正极通过电阻连接到GPIO18BCM编号LED短脚负极接到任意GND接地引脚建议使用面包板中转比直接插杜邦线稳得多这里有个新手常踩的坑GPIO编号方式。树莓派有三种编号系统物理编号按引脚实际位置1-40排列BCM编号芯片寄存器编号我们主要用这个WiringPi编号第三方库自定义编号提示用gpio readall命令可以查看所有编号对照表建议打印出来贴墙上2. 三大GPIO库安装指南2.1 WiringPi库安装虽然官方已经停止维护WiringPi但很多老项目还在用。安装时可能会遇到克隆失败的问题我教你个100%成功的方法# 先更新系统 sudo apt update sudo apt upgrade -y # 安装编译工具链 sudo apt install build-essential git -y # 手动下载最新源码截至2024年7月 wget https://github.com/WiringPi/WiringPi/archive/refs/tags/2.61.tar.gz tar -xzf 2.61.tar.gz cd WiringPi-2.61 ./build验证安装是否成功gpio -v # 应显示版本号 gpio readall # 显示引脚映射表2.2 BCM2835库安装这个库直接操作芯片寄存器性能最好但难度稍高。最新版安装流程wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.75.tar.gz tar -zxvf bcm2835-1.75.tar.gz cd bcm2835-1.75 ./configure make sudo make install测试时如果提示找不到库可能需要手动添加库路径export LD_LIBRARY_PATH/usr/local/lib2.3 RPi.GPIO安装Python用户福音通常已预装。检查是否安装python3 -c import RPi.GPIO as GPIO; print(GPIO.VERSION)如果需要手动安装sudo apt install python3-rpi.gpio3. 三种方式实现LED闪烁3.1 WiringPi版C程序创建wiringpi_led.c文件#include wiringPi.h #define LED 1 // WiringPi编号1对应BCM 18 int main() { if(wiringPiSetup() -1) { printf(初始化失败); return 1; } pinMode(LED, OUTPUT); while(1) { digitalWrite(LED, HIGH); delay(500); // 毫秒单位 digitalWrite(LED, LOW); delay(500); } return 0; }编译运行gcc -Wall wiringpi_led.c -o led -lwiringPi sudo ./led3.2 BCM2835版C程序创建bcm_led.c文件#include bcm2835.h #define LED RPI_GPIO_P1_12 // 物理引脚12对应BCM 18 int main() { if (!bcm2835_init()) { printf(BCM初始化失败); return 1; } bcm2835_gpio_fsel(LED, BCM2835_GPIO_FSEL_OUTP); while(1) { bcm2835_gpio_write(LED, HIGH); bcm2835_delay(300); bcm2835_gpio_write(LED, LOW); bcm2835_delay(300); } bcm2835_close(); return 0; }编译运行gcc -Wall bcm_led.c -o led -lbcm2835 sudo ./led3.3 Python版程序创建python_led.py文件#!/usr/bin/env python3 import RPi.GPIO as GPIO import time LED 18 # BCM编号 GPIO.setmode(GPIO.BCM) GPIO.setup(LED, GPIO.OUT) try: while True: GPIO.output(LED, GPIO.HIGH) time.sleep(0.2) # 秒单位 GPIO.output(LED, GPIO.LOW) time.sleep(0.2) except KeyboardInterrupt: GPIO.cleanup()运行方式chmod x python_led.py sudo ./python_led.py4. 三种方案深度对比4.1 性能实测数据我用示波器测量了三种方案的波形精度单位ms方案设定延时实际平均延时波动范围WiringPi500502.3±3.2BCM2835500500.8±0.5RPi.GPIO0.5503.7±5.1BCM2835表现最稳定Python方案由于有解释器开销波动稍大。4.2 开发效率对比WiringPi优点类Arduino语法C程序员易上手缺点已停止维护部分新板子兼容性问题BCM2835优点直接寄存器操作性能极致缺点需要了解底层硬件知识RPi.GPIO优点代码简洁快速原型开发缺点性能较差不适合实时控制4.3 应用场景建议教学演示优先Python版代码最直观工业控制选择BCM2835稳定性最好老项目维护继续用WiringPi物联网项目PythonGPIO Zero更高级封装5. 常见问题排查LED不亮怎么办检查正负极是否接反用万用表测量GPIO电压应有3.3V执行gpio readall确认引脚未被占用尝试更换GPIO口测试编译报错解决方案# 找不到头文件 sudo find / -name wiringPi.h # 确认安装路径 export C_INCLUDE_PATH/usr/local/include # 链接库失败 sudo ldconfig /usr/local/libPython版本问题 如果遇到python命令指向Python2的情况可以显式使用python3python3 python_led.py或者修改默认解释器sudo update-alternatives --config python

相关文章:

树莓派开发笔记02-三大GPIO库实战:点亮你的第一个LED

1. 硬件准备与连接 第一次玩树莓派GPIO控制的新手们,别被那些专业术语吓到。咱们先来搞定最基础的硬件连接。我当年第一次点亮LED时,那种成就感至今难忘——就像程序员第一次打印出"Hello World"。 你需要准备的东西很简单:一块树莓…...

造相-Z-Image多场景落地:电商产品图、摄影样片、社交头像批量生成方案

造相-Z-Image多场景落地:电商产品图、摄影样片、社交头像批量生成方案 1. 引言:从创意到成品的效率革命 想象一下,你是一家小型电商公司的运营,每天需要为几十个新品制作主图;或者你是一位独立摄影师,想快…...

DeepChat计算机视觉助手:OpenCV图像处理对话

DeepChat计算机视觉助手:OpenCV图像处理对话 1. 引言 想象一下,你正在处理一张图片,想要调整亮度、检测边缘或者识别人脸,但不想写一堆复杂的代码。现在,通过DeepChat计算机视觉助手,你可以直接用自然语言…...

Z-Image-Turbo与Java集成指南:SpringBoot微服务开发实战

Z-Image-Turbo与Java集成指南:SpringBoot微服务开发实战 1. 引言 在当今内容为王的时代,图像生成已成为众多应用的核心需求。无论是电商平台的商品图生成、社交媒体的内容创作,还是企业营销的视觉素材,快速高质量的图像生成能力…...

ABAP老鸟才知道的ST05高阶玩法:用RFC Trace排查跨系统调用问题

ABAP老鸟才知道的ST05高阶玩法:用RFC Trace排查跨系统调用问题 在SAP系统的分布式架构中,RFC(Remote Function Call)作为系统间通信的基石,其稳定性直接关系到业务流程的连续性。但当你面对一个跨系统调用失败的问题时…...

CAD二次开发中常见的10个.NET错误及快速修复指南(附代码示例)

CAD二次开发中常见的10个.NET错误及快速修复指南(附代码示例) 在CAD二次开发领域,.NET平台因其强大的功能和易用性成为开发者的首选。然而,即使是经验丰富的开发者,也难免会遇到各种棘手的错误。本文将聚焦实际开发中最…...

ComfyUI局部重绘实战:用SAM模型5分钟搞定复杂蒙版(附避坑指南)

ComfyUI局部重绘实战:用SAM模型5分钟搞定复杂蒙版(附避坑指南) 在数字艺术创作中,最令人头疼的莫过于需要反复修改图像的某个局部细节。传统手动绘制蒙版不仅耗时耗力,面对复杂边缘(如发丝、透明材质&…...

深入解析el-pagination分页组件的背景色定制技巧

1. 为什么需要定制el-pagination的背景色 在实际项目开发中,我们经常会遇到需要调整UI组件样式来适配整体设计风格的情况。el-pagination作为Element UI/Element Plus中常用的分页组件,其默认的蓝色主题可能并不总是符合我们的项目需求。比如&#xff0c…...

QQuick中实现6轴机械臂3D模型动态装配与联动控制

1. 从Solidworks到Blender:机械臂模型的预处理 在开始之前,我们需要明确一个关键点:机械臂的每个关节都需要独立控制。这意味着我们必须确保每个部件在导出时保持正确的相对位置和旋转中心。我曾在项目中遇到过模型部件错位的问题&#xff0c…...

版本控制器-git

引言不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种文档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “报告-v1” “报告-v2”…...

GTE文本向量-large实操指南:用Pytest编写test_uninlu.py覆盖6类任务回归测试

GTE文本向量-large实操指南:用Pytest编写test_uninlu.py覆盖6类任务回归测试 1. 项目概述与测试价值 GTE文本向量-中文-通用领域-large是一个功能强大的多任务自然语言处理模型,基于ModelScope平台开发。这个模型支持六种核心NLP任务:命名实…...

半天实战!用Python玩转锂电池寿命预测(LSTM/CNN/Transformer全解析)

1. 为什么需要预测锂电池寿命? 锂电池作为现代电子设备和新能源系统的核心部件,其健康状况直接影响设备性能和安全性。我在智能硬件行业摸爬滚打这些年,见过太多因为电池突然失效导致的设备故障案例——从智能手环突然关机到电动汽车续航锐减…...

如何用YOLOv5+Transformer搞定夜间行人检测?多光谱融合实战教程

夜间多光谱行人检测实战:YOLOv5与Transformer融合的工程化解决方案 当城市夜幕降临,传统视觉系统开始"失明"——这正是我们团队去年为某智慧园区项目部署安防系统时遇到的棘手问题。常规RGB摄像头在低照度环境下漏检率飙升,而单纯依…...

IPv6之邻居发现(ND)协议介绍

引言 邻居发现协议(Neighbor Discovery Protocol,简称ND协议)是IPv6的一个关键协议,ND协议是IPv4一类协议在IPv6中综合起来的升级和改进,如ARP、ICMP路由器发现和ICMP重定向等协议。作为IPv6的基础性协议,ND还提供了其他功能,如前缀发现、邻居不可达检测、重复地址检测、…...

从噪声到精准:DiffDet4SAR如何用扩散模型革新SAR图像飞机检测

1. 当扩散模型遇上SAR图像:一场噪声与精准的博弈 第一次看到SAR图像中的飞机目标时,我差点以为这是一张被墨水泼过的抽象画。那些离散的散射点就像打翻的芝麻,而背景中的金属建筑和地形杂波更是让整个画面"热闹"得令人头疼。这正是…...

KINGBASE 数据库 license管理实战指南

1. KINGBASE数据库license管理基础 第一次接触KINGBASE数据库license管理时,我也被各种专业术语搞得一头雾水。后来在实际项目中摸爬滚打几年后才发现,这东西就像汽车的行驶证,没有有效的license,数据库这个"引擎"就跑不…...

ezdxf实战指南:解决CAD数据处理难题的5个创新方法

ezdxf实战指南:解决CAD数据处理难题的5个创新方法 【免费下载链接】ezdxf Python interface to DXF 项目地址: https://gitcode.com/gh_mirrors/ez/ezdxf 在现代工程设计与制造流程中,DXF(CAD数据交换格式)文件作为标准化的…...

工业以太网实战:基于OMRON Compolet与Sysmac Gateway的CIP通信架构解析

1. 工业以太网与CIP通信基础 第一次接触OMRON的Compolet组件时,我被它简洁的API设计惊艳到了。作为一个在自动化行业摸爬滚打多年的工程师,我深知工业通信的复杂性——但Compolet确实让这件事变得简单了许多。让我们先从基础开始,理解这个系统…...

如何用Python处理1985-2023年全国逐月NPP数据?从下载到可视化的完整指南

Python全流程处理1985-2023年全国逐月NPP数据实战指南 当我们需要分析中国陆地生态系统近40年的植被生产力变化时,1985-2023年的全国逐月NPP数据无疑是一座金矿。但面对数百个TIFF文件、复杂的空间坐标转换和庞大的时间序列分析需求,很多研究者常常在数…...

六年级语文下册习课堂任务单(2024新版电子版资料)

温馨提示:文末有联系方式【权威同步】六年级语文下册习课堂任务单全新升级 本套资料严格依据2024年统编版小学语文六年级下册教材编写,覆盖全部单元、课文及语文要素,紧扣课堂学习节奏,助力学生夯实基础、提升语感与表达能力。【便…...

高效下载中小学电子课本:三步完成国家教育平台PDF获取

高效下载中小学电子课本:三步完成国家教育平台PDF获取 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具 项目地址: https://gitcode.com/GitHub_Trending/tc/tchMaterial-parser tchMaterial-parser是一款专为教师和学生设计的…...

Python实战:5分钟用代码模拟时分复用(TDM)数据传输过程

Python实战:5分钟用代码模拟时分复用(TDM)数据传输过程 通信技术中的时分复用(Time Division Multiplexing, TDM)就像高速公路上的车道分时共享机制。想象一下,如果能让不同车辆在不同时间段独占整条道路&a…...

厦门大学432应用统计学考研复试备考复习资料电子版

温馨提示:文末有联系方式厦门大学432应用统计学复试备考资料全解析 本套资料专为报考厦门大学统计学专业(代码432)硕士研究生复试阶段考生精心打造,内容紧扣近年复试流程、考核重点与高频型。高清电子版资料,详情一图尽…...

嵌入式老司机教你快速定位IAR/KEIL编译报错:从警告信息反推代码问题

嵌入式开发实战:从IAR/KEIL警告编号逆向诊断代码缺陷 在嵌入式开发领域,IAR和KEIL作为两大主流编译器,其警告信息往往隐藏着代码质量的关键线索。许多开发者习惯性忽略这些黄色警告,殊不知它们正是编译器在向我们传递代码潜在风险…...

Cosmos-Reason1-7B智能体(Agent)开发入门:构建你的第一个AI助手

Cosmos-Reason1-7B智能体(Agent)开发入门:构建你的第一个AI助手 你是不是也好奇,那些能帮你查天气、订行程、甚至写代码的AI助手,到底是怎么做出来的?感觉它们背后有一套复杂的逻辑,离我们普通…...

避坑指南:Python图片转视频常见问题及优化技巧(基于imageio 2.31.1)

Python图片转视频实战:从性能优化到高级技巧(基于imageio 2.31.1) 当你需要将数百张高分辨率图片转换为流畅视频时,是否遇到过内存爆炸、编码格式混乱或输出文件异常的问题?作为计算机视觉开发中的基础操作&#xff0c…...

nRF52832开发环境搭建:从编译到烧录的完整实践(基于Ubuntu 22.04和nRF5 SDK 15.3/17.1双版本)

nRF52832开发环境搭建:从编译到烧录的完整实践(基于Ubuntu 22.04和nRF5 SDK 15.3/17.1双版本) 在嵌入式开发领域,nRF52832作为Nordic Semiconductor推出的高性能蓝牙低功耗SoC,凭借其优异的射频性能和丰富的外设资源&a…...

ESP32-S3蓝牙配网实战:从零开始配置你的物联网设备(附完整代码)

ESP32-S3蓝牙配网实战:从零开始配置你的物联网设备(附完整代码) 在物联网开发中,设备首次连接网络往往是个令人头疼的问题。想象一下,你刚拿到一个全新的智能设备,没有屏幕,没有键盘&#xff0…...

中文纠错模型横向评测:MacBERT/T5/ChatGLM在SIGHAN2015上的表现对比

中文纠错模型实战评测:MacBERT、T5与ChatGLM的技术博弈 在智能输入法、OCR后处理等场景中,中文文本纠错技术直接影响着用户体验。当用户输入"今天新情很好"时,系统能否准确纠正为"今天心情很好",背后是语言模…...

2.数据采集基础知识

import requests from bs4 import BeautifulSoup#数据采集基础知识:豆瓣读书T250的数据获取 for i in range(0,10):url "https://book.douban.com/top250"header {"user-agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, …...