WAVEGO-GPIO控制

来自Waveshare Wiki
跳转至: 导航搜索

GPIO控制

简介

  • GPIO全称:通用型输入输出端口(General-purpose input/output)
  • 通过本章的学习,您可以了解到WAVEGO下位机ESP32上基础的GPIO控制。

WAVEGO驱动板基本参数

  • 主控:ESP32
    IO高电平电压 3.3V
    IO输出电流 12mA
    处理器 Xtensa LX6
    双核处理器 @240MHzSRAM520KB+8MB
    闪存 448KB+4MB

板载设备和接口

IO接口用途

  • 可以用作简单的高低电平控制,也可以用来读取高低电平,PWM输出,模拟信号输入,UART通信,IIC通信等等。

多功能扩展接口

  • 由于ESP32具有更高的算力并且集成了WIFI蓝牙等通信方式,并且支持使用ArduinoIDE进行开发,我们选择ESP32作为WAVEGO的主控芯片,我们将ESP32上空余的IO以及其它常用的IO引出,组成了如下图所示的多功能扩展接口。
    多功能接口.png
  • LED:驱动板上面有两颗RGB LED,程序上的编号分别为0、1,如果需要连接更多的RGB-LED(WS2812),可以由此接口扩展,相应的,编号从2开始。
  • 控制函数如下:
  • LED_NUM: 灯珠的编号,例如控制板子上的两颗,那LED_NUM就为0或1,如果控制LED-OUT口上扩展的第一颗灯珠,LED_NUM=2。
    setSingleLED(LED_NUM, matrix.Color(R, G, B));
    
    LED-OUT(G26) 驱动板上有两颗板载 RGB LED,由G26引脚控制,串联两个WS2812 LED 后由此 LED-OUT引出,如果需要连接更多的RGB LED,可以在此接口扩展
    G15 此IO口用于扩展其它模块
    G12 默认设置组装模式,用杜邦线连接G12和3V3后设备进入到组装模式。
    RX,TX 对应ESP32的UART_0,可用于与其它设备通信,例如可以将其与树莓派的TX,RX连接,供地后即可互相通信。
    TX,RX,GND,5V,5V 可用于连接树莓派,5V和GND可用于给树莓派供电,TX,RX可用于与树莓派进行通信。

    注意:RX,TX与树莓派TX,RX相连时,自动下载功能不能启动,如果需要给给ESP32上传新程序时,需要断开RX和TX与树莓派的连接。

IIC接口

  • IIC是由Philips公司开发的一种简单,双向二线制同步串行总线,只需要两根线就可以在连接于总线上的器件之间传送信息。
  • WAVEGO驱动板集成了多种设备,其中大部分使用IIC控制,用于与其它设备通信,包括:ICM20948姿态传感器(0x68)、PCA9685舵机控制芯片(0x42)、INA219电压检测(0x40)和OLED屏幕(0x3C)。
  • ESP32的很多GPIO都可以设置为IIC接口,在WAVEGO驱动板上的IIC接口如下:
    G33 SCL
    G32 SDA
  • 如果你想在使用线库时使用其他管脚,你只需要调用:
    Wire.begin(SDA, SCL);

其它注意事项

  • 这里的信息只有当你进行基于ESP32的项目开发时才需要了解,如果只学习基于WAVEGO的功能不需要了解这些内容。
  • 并不是所有IO接口都是全功能的,还有具有特定功能的引脚,这些引脚不适用于特定项目。
    引脚图用途.jpg

对蜂鸣器的控制

原理

  • 由图中可知蜂鸣器连接21号引脚。
  • 当BUZ输入为高电平时,Buzzer.Q1不导通,蜂鸣器无电流,不发声音;
  • 当BUZ输入为低电平时,Buzzer.Q1导通,蜂鸣器有电流通过,发出声音。
    蜂鸣器原理图.png

新建项目

  1. 打开Arduino IDE,将蜂鸣器的程序复制进去,按住键盘的Ctrl+Shift+S保存
    Arduino2.0-保存程序.jpg
  2. 以文件名BUZZER保存新建的项目(可以新建一个文件夹来存放Arduino IDE的项目文件)
    Arduino2.0-保存程序1.jpg
  3. 保存成功后就可以在路径文件夹找到你的项目,保存项目时会自动新建一个项目名称的文件夹,项目同名的 .ino 文件则放在此文件夹里面。

完整代码

  • 完整代码如下:
    #define BUZZER_PIN 21
    
    void setup()
    {
      pinMode(BUZZER_PIN,OUTPUT);
    }
    
    void loop()
    {
      digitalWrite(BUZZER_PIN,LOW);
      delay(500);
      digitalWrite(BUZZER_PIN,HIGH);
      delay(1000);
    }

代码解析

  • 定义使用GPIO21控制蜂鸣器,GPIO21同时也是控制板载蜂鸣器的引脚。
  • #define是C语言中的一个宏定义命令,用于将一个标识符定义为一个字符串,标识符被称为宏名,字符串为替换文本。
  • 用法:#define <宏名/标识符> <字符串>
    #define BUZZER_PIN 21
  • Arduino IDE程序的基础框架为:
    void setup()
    {
        
    }
    
    void loop()
    {
        
    }
    运行程序后,先运行setup函数一次,然后不停循环运行loop函数。
  • 初始化引脚,将引脚设置为输出。
    pinMonde(BUZZER_PIN,OUTPUT);
  • digitalWrite(),用来控制引脚的高低电平状态,用GPIO21控制蜂鸣器时,输入低电平时蜂鸣器响起,输入高电平时蜂鸣器停止 。
    digitalWrite(BUZZER_PIN,LOW);
    digitalWrite(BUZZER_PIN,HIGH);

上传程序

  • 用Arduino IDE打开BUZZER.ino文件,将代码复制粘贴到项目里,用USB连接设备和计算机,选择开发板和端口,并点击上传程序。
    Arduino2.0-buzzer上传.jpg

程序运行效果

  • 上电后蜂鸣器响0.5秒后停止1秒,此后不断循环。
    BUZZER.gif

全部章节