0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基本GPIO输出控制简述

CHANBAEK 来源:鱼香ROS 作者:小鱼 2023-07-03 10:52 次阅读

你好,我是爱吃鱼香ROS的小鱼。上一节了解了MicroROS学习板的LED电路原理,最后得到结论是通过控制ESP_IO2的电平就可以控制电压,接下来我们就尝试利用Arduino的ESP_IO2对IO进行控制。

教程所使用硬件平台为MicroROS学习板V1.0.0,可点击阅读原文购买及查看详情

图片

一、GPIO控制介绍

1.1 什么是GPIO

首先我们了解下GPIO(General-purpose input/output),中文名通用型之输入输出的简称。

  • 输出模式,指GPIO是可以通过程序 控制其电压高低 ,普通的GPIO只能输出(低电平0V)和高电平(3.3V,有的单片机是5V)。
  • 输入模式,指GPIO可以 读取其上的电压 ,普通的GPIO只能读取低电平和高电平两种。比如当我们想测试一个按键是否被按下,就可以GPIO的输入功能。

1.2 GPIO控制API

Arduino提供了简单易用的API来控制IO的输入和输出。

1.2.1 引脚模式设置-pinMode

该函数用于定义特定引脚的 GPIO 操作模式。

void pinMode(uint8_t pin, uint8_t mode);
  • pin定义 GPIO 引脚编号。
  • mode设置操作模式。

基本输入和输出支持以下模式:

  • INPUT将 GPIO 设置为不带上拉或下拉(高阻抗)的输入。
  • OUTPUT将 GPIO 设置为输出/读取模式。
  • INPUT_PULLDOWN 将 GPIO 设置为具有内部下拉列表的输入。
  • INPUT_PULLUP 将 GPIO 设置为带有内部上拉的输入。

1.2.2 数字输出-digitalWrite

digitalWrite用于设置被配置为OUTPUT模式的引脚电平为HIGHLOW

void digitalWrite(uint8_t pin, uint8_t val);
  • pin所设置的GPIO编号。
  • val将输出数字状态设置为HIGHLOW

1.2.3 数字输入-digitalRead

digitalRead用于读取配置为INPUT模式的给定引脚的状态。

int digitalRead(uint8_t pin);
  • pin 所设置的GPIO编号。

此函数将返回所选引脚的逻辑状态为 HIGHLOW。

有了上面三个函数,我们就可以编写代码了。

二、编写LED闪烁代码

新建example02_led工程,接着输入下面的代码。

/**
 * @file main.cpp
 * @author fishros@foxmail.com
 * @brief 使LED灯亮1s关闭1s,持续闪烁
 * @version 0.1
 * @date 2022-12-19
 *
 * @copyright Copyright (c) 2022
 *
 */
#include < Arduino.h >

void setup()
{
  // put your setup code here, to run once:
  pinMode(2, OUTPUT); // 设置2号引脚模式为OUTPUT模式
}

void loop()
{
  // put your main code here, to run repeatedly:
  digitalWrite(2, LOW);  // 低电平,打开LED灯
  delay(1000);           // 休眠1000ms
  digitalWrite(2, HIGH); // 高电平,关闭LED灯
  delay(1000);           // 休眠1000ms
}

这里我们让LED亮1s关闭1s,持续闪烁,代码很简单,不再讲解。

编译下载代码到开发板,接着观察现象,你会发现蓝色LED灯在不断闪烁。

三、通过串口控制LED

我们继续更新下工程代码,实现通过串口指令来控制LED的亮灭。

#include < Arduino.h >

void setup()
{
  Serial.begin(115200);
  pinMode(2, OUTPUT); // 设置2号引脚模式为OUTPUT模式
}

void loop()
{
  // LED串口控制代码
  if (Serial.available())
  {
    String command = Serial.readString();
    if (command == "on")
    {
      digitalWrite(2, LOW); // 低电平,打开LED灯
    }
    else if (command == "off")
    {

      digitalWrite(2, HIGH); // 高电平,关闭LED灯
    }
  }

  /* // LED闪烁代码
    digitalWrite(2, LOW);  // 低电平,打开LED灯
    delay(1000);           // 休眠1000ms
    digitalWrite(2, HIGH); // 高电平,关闭LED灯
    delay(1000);           // 休眠1000ms
  */
}

通过串口读取指令,收到on则打开LED,收到off关闭LED。

将代码下载到开发板,接着打开串口监视器,输入指令进行测试。

图片

四、总结

至此,我们成功完成了点灯,掌握了基本的GPIO输出控制,下一节我们尝试使用按键输入来控制LED灯。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    237

    文章

    22450

    浏览量

    645891
  • 输入输出
    +关注

    关注

    0

    文章

    42

    浏览量

    10691
  • GPIO
    +关注

    关注

    16

    文章

    1135

    浏览量

    50580
  • Arduino
    +关注

    关注

    184

    文章

    6428

    浏览量

    184847
收藏 人收藏

    评论

    相关推荐

    GPIO输出--蜂鸣器

    程序简介 -工程名称:GPIO输出--蜂鸣器 -实验平台: 秉火STM32 F429 开发板 -MDK版本:5.16 -ST固件库版本:1.5.1 【 !】功能简介: 控制开发板上的蜂鸣器(有源
    发表于 12-12 19:02 4次下载

    STM32的GPIO输出编程实例之点亮三色LED

    本实验通过STM32的三个GPIO口驱动三色LED的三个通道,将GPIO设置为推挽输出模式,采用灌电流的方式与LED连接,GPIO输出高电平
    的头像 发表于 02-07 11:14 2.7w次阅读
    STM32的<b class='flag-5'>GPIO</b><b class='flag-5'>输出</b>编程实例之点亮三色LED

    CC2530 GPIO输出控制-控制Led亮灭实验资料下载

    CC2530 GPIO输出控制-控制Led亮灭实验资料下载
    发表于 05-03 09:47 1次下载

    使用 RPi.GPIO 模块的输出(Output)功能

    , GPIO.OUT)2、设置某个输出针脚状态为高电平:12345GPIO.output(12, GPIO.HIGH) # 或者GPIO.o
    发表于 04-02 14:42 778次阅读

    GPIO输出还能作外部中断输入吗?

    我们这里要谈的是基于硬件模式的外部中断话题。当STM32的GPIO作为输出时,可能是通用GPIO输出也可能是基于其它外设复用情况下的输出,即
    的头像 发表于 07-05 10:42 4370次阅读
    <b class='flag-5'>GPIO</b>做<b class='flag-5'>输出</b>还能作外部中断输入吗?

    二.GPIO输入输出及延迟函数

    一. GPIO八种模式,四种输入,四种输出1.GPIO输入初始化void GPIO_Config(void){ GPIO_InitTypeD
    发表于 11-24 20:06 1次下载
    二.<b class='flag-5'>GPIO</b>输入<b class='flag-5'>输出</b>及延迟函数

    04、STM8通用输入输出口(GPIO)

    04、STM8通用输入输出口(GPIO)文章目录04、STM8通用输入输出口(GPIO)1、概述2、GPIO主要功能3、I/O 的配置和使用
    发表于 11-26 15:21 9次下载
    04、STM8通用输入<b class='flag-5'>输出</b>口(<b class='flag-5'>GPIO</b>)

    STM32的8种GPIO输入输出模式

    STM32的8种GPIO输入输出模式参考文章“STM32的8种GPIO输入输出模式深入详解”和“STM32中GPIO的8种工作模式!”输入模
    发表于 11-26 17:06 16次下载
    STM32的8种<b class='flag-5'>GPIO</b>输入<b class='flag-5'>输出</b>模式

    2. 汇编实现GPIO输出实验(LED)

    基于I.MX6U通过汇编实现点亮LED的实验,分析GPIO控制方法和配置。一、原理图分析LED0 接到了 GPIO_3 上, GPIO_3 就是
    发表于 12-01 19:06 10次下载
    2. 汇编实现<b class='flag-5'>GPIO</b><b class='flag-5'>输出</b>实验(LED)

    ZYNQ学习笔记_GPIO之输入输出

    通过MIO(Multiuse I/O)模块对器件的引脚做观测(input)和控制(output)。ZYNQ的PS端上的GPIO也可以通过EMIO(Extra MIO)模块对PL端的IP以及引脚实现上述操作。GPIO可以独立且动态
    发表于 12-04 19:36 10次下载
    ZYNQ学习笔记_<b class='flag-5'>GPIO</b>之输入<b class='flag-5'>输出</b>

    USB音频输入/输出控制器DP108简述和特征

    USB音频输入/输出控制器DP108 简述和特征
    发表于 10-26 18:01 1148次阅读

    瑞萨e2studio(2)----GPIO输出

    本篇文章主要介绍如何使用e2studio对瑞萨单片机进行GPIO输出,并以LED显示。
    的头像 发表于 11-14 17:11 954次阅读
    瑞萨e2studio(2)----<b class='flag-5'>GPIO</b><b class='flag-5'>输出</b>

    通用输入输出GPIO是什么

    GPIO代表通用输入/输出。它是集成电路上的一种引脚,没有特定功能。虽然大多数引脚都有专用用途,例如向特定组件发送信号,但 GPIO 引脚的功能是可定制的,并且可以由软件控制。 引脚模
    发表于 03-23 14:04 968次阅读
    通用输入<b class='flag-5'>输出</b><b class='flag-5'>GPIO</b>是什么

    瑞萨e2studio----GPIO输出

    概述本篇文章主要介绍如何使用e2studio对瑞萨单片机进行GPIO输出,并以LED显示。
    的头像 发表于 11-03 17:01 997次阅读
    瑞萨e2studio----<b class='flag-5'>GPIO</b><b class='flag-5'>输出</b>

    GPIO配置不同输出速度会有什么影响

    单片机GPIO配置不同输出速度有何区别?
    的头像 发表于 09-18 15:43 1392次阅读
    <b class='flag-5'>GPIO</b>配置不同<b class='flag-5'>输出</b>速度会有什么影响