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

手把手教你用树莓派GPIO点个灯:从Python到C语言三种方法全搞定

树莓派GPIO实战Python与C语言点亮LED的三种经典方案第一次拿到树莓派时最让人兴奋的莫过于那些整齐排列的GPIO引脚——它们就像通往物理世界的大门。而点亮一个LED无疑是推开这扇门最经典的Hello World。但你知道吗同样的闪烁效果用Python和C语言实现时从代码风格到执行效率都有显著差异。本文将带你用三种主流方式完成这个标志性项目不仅教你如何让LED闪烁更让你理解不同技术栈背后的设计哲学。1. 硬件准备与基础概念在开始编程之前我们需要确保硬件连接正确。这个环节虽然简单但却是整个项目成功的基础。树莓派的GPIO引脚可以直接驱动LED但必须串联一个限流电阻保护电路。1.1 所需材料清单树莓派任何型号均可推荐4B或5面包板及跳线若干LED灯颜色任选建议红色或绿色220Ω电阻色环红-红-棕可选电阻套装和不同颜色LED用于扩展实验1.2 电路连接原理正确的电路连接应该遵循以下原则树莓派GPIO18 → 电阻 → LED阳极 → LED阴极 → 树莓派GND重要提示LED是极性元件长脚为阳极短脚为阴极。如果接反不会损坏元件但不会发光。1.3 GPIO编号系统详解树莓派引脚有三种常见编号方式物理引脚BCM编号WiringPi编号功能12181GPIO 186--GND注意本文示例统一使用BCM编号18物理引脚12这是Python RPi.GPIO库的默认编号方式。2. Python方案RPi.GPIO快速上手对于初学者来说Python无疑是最友好的选择。RPi.GPIO库已经预装在大多数树莓派系统中让我们可以快速实现GPIO控制。2.1 基础闪烁程序创建一个名为led_blink.py的文件输入以下代码#!/usr/bin/env python3 import RPi.GPIO as GPIO import time LED_PIN 18 # BCM编号18 GPIO.setmode(GPIO.BCM) # 使用BCM编号 GPIO.setup(LED_PIN, GPIO.OUT) try: while True: GPIO.output(LED_PIN, GPIO.HIGH) # 点亮LED time.sleep(1) # 保持1秒 GPIO.output(LED_PIN, GPIO.LOW) # 熄灭LED time.sleep(1) # 保持1秒 except KeyboardInterrupt: GPIO.cleanup() # 清理GPIO设置运行程序python3 led_blink.py2.2 高级技巧PWM调光除了简单的开关控制我们还可以使用PWM脉宽调制实现亮度调节import RPi.GPIO as GPIO LED_PIN 18 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) pwm GPIO.PWM(LED_PIN, 100) # 100Hz频率 pwm.start(0) # 初始占空比0% try: while True: for dc in range(0, 101, 5): # 渐亮 pwm.ChangeDutyCycle(dc) time.sleep(0.1) for dc in range(100, -1, -5): # 渐暗 pwm.ChangeDutyCycle(dc) time.sleep(0.1) except KeyboardInterrupt: pwm.stop() GPIO.cleanup()3. C语言方案一WiringPi库WiringPi是一个模仿Arduino风格的GPIO控制库适合有嵌入式开发背景的用户。3.1 安装与配置首先安装WiringPisudo apt-get update sudo apt-get install wiringpi验证安装gpio -v gpio readall3.2 基础闪烁实现创建wiringpi_led.c文件#include wiringPi.h #define LED_PIN 1 // WiringPi编号1对应BCM18 int main(void) { wiringPiSetup(); // 初始化WiringPi pinMode(LED_PIN, OUTPUT); while(1) { digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); } return 0; }编译与运行gcc -o wiringpi_led wiringpi_led.c -lwiringPi sudo ./wiringpi_led3.3 性能优化技巧WiringPi支持硬件PWM比软件模拟更精确#include wiringPi.h #include softPwm.h #define LED_PIN 1 int main() { wiringPiSetup(); softPwmCreate(LED_PIN, 0, 100); // 范围0-100 while(1) { for(int i0; i100; i) { softPwmWrite(LED_PIN, i); delay(10); } for(int i100; i0; i--) { softPwmWrite(LED_PIN, i); delay(10); } } return 0; }4. C语言方案二BCM2835底层库BCM2835库直接操作树莓派的寄存器提供了最高级别的硬件控制能力。4.1 库安装步骤wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz tar zxvf bcm2835-1.71.tar.gz cd bcm2835-1.71 ./configure make sudo make install4.2 寄存器级控制实现创建bcm2835_led.c文件#include bcm2835.h #define LED_PIN RPI_GPIO_P1_12 // 物理引脚12 int main() { if(!bcm2835_init()) return 1; bcm2835_gpio_fsel(LED_PIN, BCM2835_GPIO_FSEL_OUTP); while(1) { bcm2835_gpio_write(LED_PIN, HIGH); bcm2835_delay(500); bcm2835_gpio_write(LED_PIN, LOW); bcm2835_delay(500); } bcm2835_close(); return 0; }编译与运行gcc -o bcm2835_led bcm2835_led.c -lbcm2835 sudo ./bcm2835_led4.3 精确时序控制BCM2835库提供了纳秒级延时函数bcm2835_delayMicroseconds(100); // 100微秒延时5. 三种方案深度对比了解不同实现方式的优缺点有助于在实际项目中选择合适的技术栈。5.1 性能基准测试我们使用相同的闪烁频率1Hz测试三种方案的CPU占用率方案CPU占用率内存占用响应延迟Python3.2%12MB±5msWiringPi(C)0.8%1.2MB±1msBCM2835(C)0.5%0.9MB±0.1ms5.2 适用场景推荐快速原型开发Python方案最佳开发效率高教育用途WiringPi最接近Arduino风格学习曲线平缓工业控制BCM2835提供最高性能和确定性复杂项目混合使用关键部分用C逻辑控制用Python5.3 调试技巧分享无论使用哪种方案这些调试方法都很有用使用gpio命令检查状态gpio readall逻辑分析仪验证时序sudo apt install sigrok系统资源监控top -p pgrep -f your_program在实际项目中我通常会先用Python验证想法然后在性能关键部分迁移到C语言实现。这种混合开发模式既保证了开发效率又能满足性能需求。

相关文章:

手把手教你用树莓派GPIO点个灯:从Python到C语言三种方法全搞定

树莓派GPIO实战:Python与C语言点亮LED的三种经典方案 第一次拿到树莓派时,最让人兴奋的莫过于那些整齐排列的GPIO引脚——它们就像通往物理世界的大门。而点亮一个LED,无疑是推开这扇门最经典的"Hello World"。但你知道吗&#xff…...

为什么你的GF-6影像校正总出错?避开UTM投影转换的3个常见坑

为什么你的GF-6影像校正总出错?避开UTM投影转换的3个常见坑 GF-6卫星的宽幅相机(WFV)凭借800公里的超宽覆盖和红边波段等独特优势,已成为农业监测、环境评估等领域的重要数据源。但许多用户在影像校正环节频频遭遇失败——拼接错位…...

手把手教你用FireRed-OCR:5步搞定复杂文档精准解析

手把手教你用FireRed-OCR:5步搞定复杂文档精准解析 1. 为什么选择FireRed-OCR? 在日常工作和学习中,我们经常遇到需要从PDF、扫描件或图片中提取文字和表格的情况。传统OCR工具面对复杂排版时往往力不从心,而FireRed-OCR Engine…...

开源项目Windows Subsystem for Android部署与优化解决方案

开源项目Windows Subsystem for Android部署与优化解决方案 【免费下载链接】WSA Developer-related issues and feature requests for Windows Subsystem for Android 项目地址: https://gitcode.com/gh_mirrors/ws/WSA Windows Subsystem for Android(WSA&…...

浏览器超能力开发指南:解锁Greasy Fork用户脚本的实战手册

浏览器超能力开发指南:解锁Greasy Fork用户脚本的实战手册 【免费下载链接】greasyfork An online repository of user scripts. 项目地址: https://gitcode.com/gh_mirrors/gr/greasyfork 在数字化工作流中,我们每天都在重复着大量机械操作——手…...

最强30B模型GLM-4.7-Flash实测:Ollama一键部署,小白也能玩转AI

最强30B模型GLM-4.7-Flash实测:Ollama一键部署,小白也能玩转AI 1. GLM-4.7-Flash模型概述 1.1 模型特点与优势 GLM-4.7-Flash是当前30B参数级别中最具竞争力的混合专家模型(MoE)。这个规模特别适合需要平衡性能与资源消耗的实际…...

突破式百度网盘直链解析工具:革新性高速下载解决方案

突破式百度网盘直链解析工具:革新性高速下载解决方案 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 在数字化资源爆炸的时代,百度网盘作为国内领先的云…...

中文文献管理效率提升指南:茉莉花插件的全方位应用

中文文献管理效率提升指南:茉莉花插件的全方位应用 【免费下载链接】jasminum A Zotero add-on to retrive CNKI meta data. 一个简单的Zotero 插件,用于识别中文元数据 项目地址: https://gitcode.com/gh_mirrors/ja/jasminum 在学术研究与文献管…...

OpenClaw商业应用边界:Qwen3-14B在个人网店中的合规使用

OpenClaw商业应用边界:Qwen3-14B在个人网店中的合规使用 1. 为什么个人网店需要AI助手? 去年夏天,我的淘宝小店突然迎来一波流量高峰。每天上百条咨询消息让我应接不暇,经常凌晨还在回复"什么时候发货"这类重复问题。…...

WarcraftHelper:面向魔兽争霸III玩家的全方位优化解决方案

WarcraftHelper:面向魔兽争霸III玩家的全方位优化解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专为魔兽争…...

网络资源获取困境如何通过猫抓实现高效解决方案?

网络资源获取困境如何通过猫抓实现高效解决方案? 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字时代,网络资源获取已…...

每日 AI 研究简报 · 2026-04-06

(本文借助 AI 大模型及工具辅助整理) 一句话总结:今日AI领域亮点纷呈——Nvidia发布企业级AI Agent平台获17家巨头支持,Claude Code泄露事件引发安全担忧,开源AI Agent生态持续升温。 🌊 AI 动态与趋势 …...

像素幻梦·创意工坊实操手册:批量生成任务队列管理与异步导出机制

像素幻梦创意工坊实操手册:批量生成任务队列管理与异步导出机制 1. 认识像素幻梦创意工坊 Pixel Dream Workshop(像素幻梦创意工坊)是一款基于FLUX.1-dev扩散模型的像素艺术生成工具。它采用16-bit像素风格的现代化界面设计,为创…...

比迪丽模型在Python入门教学可视化中的应用

比迪丽模型在Python入门教学可视化中的应用 让编程初学者通过可视化方式快速理解Python核心概念 1. 教学痛点与解决方案 很多Python初学者在学习过程中会遇到这样的困境:看着密密麻麻的代码,却不知道程序到底是怎么运行的;遇到错误时&#x…...

告别黑盒:手把手教你用Field II和USTB工具箱搭建CPWC超声仿真环境(附完整代码)

从零构建CPWC超声仿真环境:Field II与USTB工具箱实战指南 引言:为什么需要可复现的超声仿真环境? 在医学超声成像研究中,仿真技术扮演着越来越重要的角色。无论是算法验证、系统设计还是教育培训,一个稳定可靠的仿真环…...

Skyvern云服务实战:每月5美元,如何搭建一个自动化的竞品价格追踪机器人

Skyvern云服务实战:每月5美元,如何搭建一个自动化的竞品价格追踪机器人 在当今快节奏的商业环境中,竞品价格监控已成为企业保持市场竞争力的关键。传统的人工监控方式不仅耗时耗力,还容易错过重要的价格变动时机。而市面上的专业竞…...

智能家居中枢:OpenClaw+Qwen3-14B镜像控制HomeAssistant

智能家居中枢:OpenClawQwen3-14B镜像控制HomeAssistant 1. 为什么需要AI驱动的智能家居中枢? 去年装修新房时,我安装了近30个智能设备——从窗帘电机到温湿度传感器,全部接入了HomeAssistant系统。但很快发现一个问题&#xff1…...

3步完成B站视频转文字:免费开源工具bili2text完整指南

3步完成B站视频转文字:免费开源工具bili2text完整指南 【免费下载链接】bili2text Bilibili视频转文字,一步到位,输入链接即可使用 项目地址: https://gitcode.com/gh_mirrors/bi/bili2text 还在为手动记录B站视频内容而烦恼吗&#x…...

如何用League Director制作电影级英雄联盟视频?6个专业技巧让你的录像脱颖而出

如何用League Director制作电影级英雄联盟视频?6个专业技巧让你的录像脱颖而出 【免费下载链接】leaguedirector League Director is a tool for staging and recording videos from League of Legends replays 项目地址: https://gitcode.com/gh_mirrors/le/leag…...

JetBrains IDE试用期到期怎么办?ide-eval-resetter终极指南帮你无缝重置

JetBrains IDE试用期到期怎么办?ide-eval-resetter终极指南帮你无缝重置 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 当你正在进行关键代码调试时,JetBrains IDE突然弹出试用期结束的提…...

华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优

华硕笔记本散热难题:3步用G-Helper解决风扇失控与性能调优 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix…...

C#的LINQ查询表达式编译原理与性能优化

C#的LINQ查询表达式编译原理与性能优化 LINQ(Language Integrated Query)是C#中强大的数据查询工具,它将查询能力直接集成到语言中,使开发者能够以声明式方式操作数据。理解其编译原理与性能优化技巧,对于编写高效代码…...

Emotion2Vec+ Large语音情感识别:开箱即用,9种情绪精准分析

Emotion2Vec Large语音情感识别:开箱即用,9种情绪精准分析 1. 语音情感识别技术概述 语音情感识别技术正在改变我们与机器交互的方式。这项技术通过分析语音中的声学特征,能够准确识别说话者的情绪状态。Emotion2Vec Large作为当前领先的语…...

论文阅读:AIED 2025 Understanding University Students‘ Use of Generative AI: The Roles of Demographics an

总目录 大模型相关研究 2025版:https://blog.csdn.net/WhiffeYF/article/details/142132328 Understanding University Students’ Use of Generative AI: The Roles of Demographics and Personality Traits https://arxiv.org/abs/2505.02863 该论文题为《Und…...

CC324条提示词意外泄露——第31条让我出了一身冷汗

324条提示词意外泄露——第31条让我出了一身冷汗 原创 硅谷Alan Walker 硅谷Alan Walker 嘉妍Kea 2026年4月2日 02:47 美国 22人 在小说阅读器中沉浸阅读 当 AI 可以代替你发 Slack、fork 自己,人与 AI 的边界在哪里? src/constants/prompts.ts 57…...

论文阅读:AIED 2024 RuffleRiley: Insights from Designing and Evaluating a Large Language Model-Based Con

总目录 大模型相关研究:https://blog.csdn.net/WhiffeYF/article/details/142132328 https://arxiv.org/abs/2404.17460 Ruffle&Riley: Insights from Designing and Evaluating a Large Language Model-Based Conversational Tutoring System 📄 …...

GPT-6,曝光了,当 AGI 只剩最后一公里,我们为何仍把 GPU 当燃料?

“土豆”熟了,代号 GPT-6。过去两周,OpenAI 的保密墙像被筛子砸过,4 月 14 日这个日期在内部聊天频道被反复 全员。知情人士说,那天的发布按钮其实已经提前写好,只等 Brockman 一声令下。为什么如此急迫?因…...

网络原理视角下的CasRel模型分布式部署与通信优化

网络原理视角下的CasRel模型分布式部署与通信优化 最近在帮一个团队落地一个关系抽取项目,他们用的就是CasRel模型。模型本身效果不错,但一到线上高并发场景,单实例就扛不住了,响应延迟飙升,还时不时挂掉。这让我意识…...

内存对齐,凭空多出来的空间?

今天学习了一下 C 的结构体(struct)内存,发现这里面的水挺深。如果不了解“内存对齐”,代码很容易就在不知不觉中多占了一堆空间。整理成笔记分享给大家:1. 为什么结构体的大小“不按套路出牌”?先看这个结…...

Zotero文献去重终极解决方案:从混乱到有序的智能管理指南

Zotero文献去重终极解决方案:从混乱到有序的智能管理指南 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 如何解决文献库重复危机&…...