树莓派教程 - 1.0 树莓派GPIO库wiringPi 点亮LED

2023-11-07

Git例程源码仓库https://github.com/ZhiliangMa/raspberry.git

电脑需要提前安装的工具:

SSH、串口 - 终端神器 MobaXterm,官网下载链接:https://mobaxterm.mobatek.net/download.html

windows端 代码编辑工具: VScode、Source Insight、Sublime, 都是不错的选择。选其一安装即可。

使用到的硬件:

led,200Ω左右的电阻、杜邦线。

 

在树莓派上控制GPIO,最简单的方式莫过于使用 wiringPi函数库了。

wiringPi简介

-- wiringPi是一个用c语言编写的GPIO函数库。起初只是作为芯片的GPIO库,而发展到今天,wiringPi提供了非常丰富的功能:GPIO、UART、I2C、SPI、PWM等,同时也提供了中断、多线程等操作,功能非常强大。

-- wiringPi的函数类似于 Arduino,十分容易上手。使用c/c++进行开发,并且可以被其他语言转换,例如python。

 

一、获取wiringPi

终端输入 gpio -vgpio readall,来查看本机是否安装了 wiringpi.

如果指令相应错误,则是没有安装。使用下面命令进行安装。

sudo apt-get inatall wiringpi

 

二、GPIO管脚编码

wiringPi函数库的管脚编码,大致分为几种:1.wiringPi编码  2.BCM编码  3.物理引脚编码

int wiringPiSetup (void) ;             //设置使用 wiringPi编码。

int wiringPiSetupGpio (void) ;     // 设置使用 BCM编码。

int wiringPiSetupPhys (void) ;     // 设置使用 物理引脚编码,不常用。

 

三、硬件连接

我们使用 wiringPi编码的 7脚,输出0/3.3V电平,来控制LED的亮灭。

LED的压降为 2V左右,限制单个GPIO的输出电流在5mA左右,电阻的取值为 200~680Ω较为合适。

led的阳极串联200Ω电阻,连接到树莓派wiringPi编码的7脚。(一定要区分wiringPi编码 、BCM编码 、和物理引脚编码

 

四、编写c代码

Git例程源码仓库https://github.com/ZhiliangMa/raspberry.git

使用到的函数有

函数语句 函数功能
wiringPiSetup(); 使用wiring编码去初始化GPIO序号
pinMode(int pin, int mode); 设置GPIO电气属性
digitalWrite(int pin, int value); 设置一个数字引脚,输出指定电平
delay(unsigned int howLong); 延时 xx ms
#include <wiringPi.h>

int led = 7;                    // 定义使用wiringPi编码的7引脚
int main(void)
{
    wiringPiSetup();            // 使用wiring编码去初始化GPIO序号
    pinMode(led, OUTPUT);       // 设置GPIO电气属性为推挽输出
    while(1)
    {
        digitalWrite(led, 1);   // led亮
        delay(500);             // 延时500ms
        digitalWrite(led, 0);   // led灭
        delay(500);             // 延时500ms
    }
    return 0;
}

通过MobaXterm,使用FTP,将led.c传输到树莓派文件夹内。

如何使用 FTP,见准备篇https://blog.csdn.net/Mark_md/article/details/107113372

 

五、编译运行

使用下列指令编译。-o led表示指定生成文件的名字为led,-lwiringPi表示链接wiringPi库。

gcc led.c -o led -lwiringPi

使用如下命令运行

./led

使用如下组合键,结束运行

Ctrl + c

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派教程 - 1.0 树莓派GPIO库wiringPi 点亮LED 的相关文章

  • 如何阅读shell命令的源代码?

    我想阅读编写linux命令的实际源代码 我已经获得了一些使用它们的经验 现在我认为是时候与我的机器进行更深层次的交互了 我在这里找到了一些命令http directory fsf org wiki GNU http directory fs
  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • 如何在 Linux 中使用单行命令获取 Java 版本

    我想通过单个命令获取 Linux 中的 Java 版本 我是 awk 的新手 所以我正在尝试类似的事情 java version awk print 3 但这不会返回版本 我将如何获取1 6 0 21从下面的Java版本输出 java ve
  • gdb 错误 - 文件不是可执行格式:无法识别文件格式

    我正在尝试使用 gdb 调试某个名为 xdf 的程序 但是当我运行 gdb xdf 时 出现以下错误 home nealtitusthomas X ray astronomy heasoft 6 24 x86 64 pc linux gnu
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 使用脚本自动输入 SSH 密码

    我需要创建一个自动向 OpenSSH 输入密码的脚本ssh client 假设我需要通过 SSH 进入myname somehost用密码a1234b 我已经尝试过 bin myssh sh ssh myname somehost a123
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • 是否有可能在linux中找到包含特定文本的文件?

    考虑这种情况 我在文件夹 Example 下有很多文件 如果我需要找到一个包含特定短语 如 Class Example 的文件 我该如何使用 Linux shell 来做到这一点 linux中有类似 定位 的函数可以做到这一点吗 Thank
  • Linux 中的电源管理通知

    在基于 Linux 的系统中 我们可以使用哪些方法 最简单的方法 来获取电源状态更改的通知 例如 当计算机进入睡眠 休眠状态等时 我需要这个主要是为了在睡眠前保留某些状态 当然 在计算机唤醒后恢复该状态 您只需配置即可获得所有这些事件acp
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • touch命令在一个目录下创建多个文件(不同名称)

    我想制作一个在 bash 中创建目录和文件结构的脚本 我尝试过这样的事情 mkdir p 1 2 touch 1 2 a b c a b c 应该是在一个命令或其他命令中创建的文件 但由于某种原因 结构是这样的 current folder
  • gethostbyname() 或 getnameinfo() 如何在后台工作?

    How gethostbyname or getnameinfo 在后台工作 include
  • Linux 中热插拔设备时检测设备是否存在

    我正在运行 SPIcode http lxr free electrons com source drivers spi spi omap2 mcspi c在熊猫板上 我想知道其中的哪个功能code http lxr free electr
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • 每个进程每个线程的时间量

    我有一个关于 Windows 和 Linux 中进程和线程的时间量子的问题 我知道操作系统通常为每个线程提供固定的时间量 我知道时间量根据前台或后台线程而变化 也可能根据进程的优先级而变化 每个进程有固定的时间量吗 例如 如果操作系统为每个
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g

随机推荐

  • Asp.net页面之间传递参数的几种方法

    1 使用QueryString变量 QueryString是一种非常简单的传值方式 他可以将传送的值显示在浏览器的地址栏中 如果是传递一个或多个安全性要求不高或是结构简单的数值时 可以使用这个方法 但是对于传递数组或对象的话 就不能用这个方
  • 【C++】-- 哈希(上万字详细配图配代码从执行一步步讲解)

    目录 哈希 常见哈希函数 除留余数法 哈希冲突 哈希冲突解决 闭散列 a 线性探测 插入 查找 删除 线性探测的实现代码 b 二次探测 二次探测的实现 开散列 开散列实现 插入 查找 删除 析构函数 代码汇总 哈希 常见哈希函数 直接定址法
  • 2017第八届Java A组蓝桥杯省赛真题第九题:分巧克力

    第九题 分巧克力 儿童节那天有K位小朋友到小明家做客 小明拿出了珍藏的巧克力招待小朋友们 小明一共有N块巧克力 其中第i块是Hi x Wi的方格组成的长方形 为了公平起见 小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们 切出的巧克力
  • c++ 数据结构——链表

    1 链表概念 暂略 2 栈的相关题目 2 1 leetcode 237 Delete Node in a Linked List 注意 这个题没有给head Definition for singly linked list struct
  • mysatis中子查询剖析

    mybatis中查询代码是这样写的
  • 为什么要对基带信号进行脉冲成型【转载】

    数字信号在传输过程中受到叠加干扰与噪声 从而出现波形失真 瑞典科学家哈利 奈奎斯特在1928 年为解决电报传输问题提出了数字波形在无噪声线性信道上传输时的无失真条件 称为奈奎斯特准则 其中奈奎斯特第一准则是抽样点无失真准则 或无码间串扰 I
  • Java8 Stream学习笔记

    一 什么是Stream流 WHAT 在Java中 集合和数组是我们经常会用到的数据结构 需要经常对他们做增 删 改 查 聚合 统计 过滤等操作 相比之下 关系型数据库中也同样有这些操作 但是在Java 8之前 集合和数组的处理并不是很便捷
  • php微信公众号code获取不到,微信公众号调取用户信息,遇到invalid code的问题

    使用了php php部分如下 code GET code userinfo getUserInfo code function getUserInfo code appid 1111111111 appsecret 111111111111
  • Redis与数据库一致性问题分析

    缓存已经在项目中被广泛使用 在读取缓存方面 大家没啥疑问 都是按照下图的流程来进行业务操作 但是在更新缓存方面 对于更新完数据库 是更新缓存呢 还是删除缓存 又或者是先删除缓存 再更新数据库 其实大家存在很大的争议 所以参考了网上一些资料对
  • Linux文件I/O编程

    文章目录 一 文件描述符 二 打开文件 三 创建文件 四 关闭文件 五 读取文件 六 向文件写入数据 七 设定文件偏移量 八 获取文件状态 九 创建和删除目录项 十 文件锁定 十一 建立文件和内存映射 十二 mmap 和 共享内存对比 I
  • React中CodeMirror插件的使用及封装

    目录 一 CodeMirror是什么 二 React中CodeMirror的基本使用介绍 一 引入CodeMirror 1 安装CodeMirror插件 2 引入 CodeMirror 插件 二 引入文件配置 三 关键属性解读 1 valu
  • hive 表中常用的 增加/修改/替换列操作

    1 语法 更新列 ALTER TABLE table name CHANGE COLUMN col old name col new name column type COMMENT col comment FIRST AFTER colu
  • C++ 仿函数(二)

    在上一篇里我们讲了仿函数是什么 以及一元谓词 二元谓词的概念 C 仿函数 一 小梁今天敲代码了吗的博客 CSDN博客 这篇是讲 内建函数对象 主要包括 算术仿函数 关系仿函数 逻辑仿函数 目录 一 算术仿函数 示例 二 关系仿函数 示例 举
  • windows 开机启动脚本(亲测可用)

    1 打开计划任务 2 创建任务 3 添加一个启动触发器 4 添加一个脚本操作 5 点击确认 输入登录管理员密码即可 重启试试吧
  • 部署 Exsi 7.0.3

    文章目录 1 下载介质 2 u盘引导安装启动盘 3 硬件连接 4 安装 EXSI 7 0 3 1 下载介质 下载 VMware VMvisor Installer 7 0U3l 21424296 x86 64 iso 安装 EXSI 7 0
  • vue H5页面跳转微信小程序以及生成二维码跳转小程序

    研究了两种H5跳转小程序的方法 同时携带参数 1 手机浏览器打开H5页面 点击按钮拉起微信小程序 2 H5页面上生成小程序二维码 手机微信扫码跳转目标小程序 为了开发方便 以上两种均借助了微信小程序云函数来实现 事前准备 在vue工程的in
  • Oracle数据库的导入&导出

    1 权限配置及导入导出 1 1 配置导入导出目录及设置相应权限 SQL gt select from dba directories dir where dir DIRECTORY NAME in DUMPDIR DATA PUMP DIR
  • 百万youtube高清视频数据集采集

    HD VILA 100M是什么 HD VILA 100M是一个大规模 高分辨率 多样化的视频语言数据集 有助于多模态表示学习 数据统计 该数据集共包含330万个视频 视频质量较高 均衡分布在15个类别中 下载 Download 您可以通过此
  • 详解34家银行对公账号编码规则及其编码分析

    1 工商银行 账号位数19位 地区代码4位 13为安徽 网点号4位 账户性质应用号2位 09基本户 19一般户 29专户 39临时户 账号顺序号7位 校验码2位 编码分析攻略 中国工商银行对公账户共19位 其中1 4位为地区代码 详见代码表
  • 树莓派教程 - 1.0 树莓派GPIO库wiringPi 点亮LED

    Git例程源码仓库 https github com ZhiliangMa raspberry git 电脑需要提前安装的工具 SSH 串口 终端神器 MobaXterm 官网下载链接 https mobaxterm mobatek net