Refer to Arduino API of Arduino
M5STACK 引脚排列:
引脚号 | Name | allocation |
---|---|---|
0 | G0 | downloader |
1 | T1 | UART |
2 | G2 | Side terminal (except M5FIRE),M5-BUS |
3 | R1 | UART |
4 | G4 | TF |
5 | G5 | Side terminal (except M5FIRE),M5-BUS |
6 | G6 | SDIO |
7 | G7 | SDIO |
8 | G8 | SDIO |
9 | G9 | SDIO |
10 | G10 | SDIO |
11 | G11 | SDIO |
12 | G12 | IIS_SCLK |
13 | G13 | IIS_WS |
14 | G14 | LCD |
15 | G15 | IIS_OUT |
16 | R2 | UART |
17 | T2 | UART |
18 | G18 | TF,Top terminal(SCK),M5-BUS |
19 | G19 | TF,Top terminal(MISO),M5-BUS |
21 | G21 | GROVE-A(SDA) |
22 | G22 | GROVE-A(SCL) |
23 | G23 | TF,Top terminal(MOSI) |
25 | G25 | Speaker,Side terminal (except M5FIRE),M5-BUS |
26 | G26 | Side terminal (except M5FIRE),M5-BUS |
27 | G27 | LCD |
32 | G32 | LCD BackLight |
33 | G33 | LCD |
34 | G34 | None |
35 | G35 | Side terminal (except M5FIRE) |
36 | G36 | Side terminal (except M5FIRE) |
37 | G37 | Button C |
38 | G38 | Button B |
39 | G39 | Button A |
功能:
设置引脚输入/输出模式
函数原型:
void pinMode(uint8_t pin, uint8_t mode);
参数 | 类型 | 描述 |
---|---|---|
pin | uint8 | 引脚号 |
mode | uint8 | INPUT,OUTPUT,INPUT_PULLUP 的任何一个 |
使用示例:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
pinMode(16, OUTPUT);
}
void loop() {
}
功能:
读取引脚的状态
函数原型:
int digitalRead(uint8_t pin);
返回值:
引脚输入状态(0/1)
使用示例:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
M5.Lcd.setTextSize(2);
}
void loop() {
M5.Lcd.printf("Read value:%d\n", digitalRead(39));
delay(500);
}
功能:
向引脚写入值
函数原型:
void digitalWrite(uint8_t pin, uint8_t val);
参数 | 类型 | 描述 |
---|---|---|
pin | uint8 | 引脚号 |
val | uint8 | 输出状态(0/1) |
使用示例:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
M5.Lcd.setTextSize(2);
pinMode(16, OUTPUT);
}
void loop() {
M5.update();
M5.Lcd.printf("Read value:%d\n", digitalRead(16));
delay(500);
}
功能:
读取模拟引脚的值
函数原型:
uint16_t analogRead(uint8_t pin);
参数 | 类型 | 描述 |
---|---|---|
pin | uint8 | 引脚号 |
返回值:
阅读结果响应的最大值由analogSetWidth()确定
使用示例:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
M5.Lcd.setTextSize(2);
}
void loop() {
M5.Lcd.printf("Read value:%d\n", analogRead(35));
delay(500);
}
功能:
dac输出到指定引脚
函数原型:
void dacWrite(uint8_t pin, uint8_t value);
参数 | 类型 | 描述 |
---|---|---|
pin | uint8 | 引脚号 |
value | uint8 | 设定输出电压 |
使用示例:
#include <M5Stack.h>
void setup() {
M5.begin();
M5.Power.begin();
M5.Lcd.setTextSize(2);
pinMode(25, OUTPUT);
}
void loop() {
dacWrite(25,0x40);
delay(500);
}
功能:
设置占空比输出
函数原型:
double ledcSetup(uint8_t channel, double freq, uint8_t resolution_bits);
参数 | 类型 | 描述 |
---|---|---|
channel | uint8 | channel (0~15) |
freq | double | frequency (Hz) |
resolution_bits | uint8_t | 占空比指示的满量程位数 |
返回值:
实际输出频率
功能:
绑定引脚至指定 ledc 通道
函数原型:
void ledcAttachPin(uint8_t pin, uint8_t chan);
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 引脚号) |
chan | uint8_t | 渠道(0~15) |
功能:
输出具有指定的占空比值
函数原型:
void ledcWrite(uint8_t chan, uint32_t duty);
参数 | 类型 | 描述 |
---|---|---|
chan | uint8_t | 渠道(0~15) |
duty | uint32_t | 比 |
使用示例:
#include <M5Stack.h>
uint8_t pin = 25; // Set output pin number.设置输出引脚号
void setup() {
M5.begin();
M5.Power.begin();
double f = ledcSetup(1, 1000, 10); // Use ledc channel 1, set the frequency to 1kHz and the resolution to 10 bits.使用ledc通道1,设置频率为1kHz,分辨率为10位
Serial.printf("F=%.0f\n",f); // print the actual setting. 打印实际设置的频率
ledcAttachPin(pin,1); // Bind the pin to ledc channel 1.将引脚绑定到ledc通道1
ledcWrite(1, 511); // Set the duty cycle of ledc channel to 512/1024=50%.设置ledc通道占空比为512/1024=50%
}
void loop() {
delay(100);
}
功能:
释放指定的端口并停止输出
函数原型:
void ledcDetachPin(uint8_t pin);
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 引脚号 |
使用示例:
#include <M5Stack.h>
uint8_t pin = 25; // Set output pin number. 设置输出引脚号
void setup() {
M5.begin();
M5.Power.begin();
double f = ledcSetup(1, 1000, 10); // Use ledc channel 1, set the frequency to 1kHz and the resolution to 10 bits.使用ledc通道1,设置频率为1kHz,分辨率为10位
Serial.printf("F=%.0f\n",f); // print the actual setting. 打印实际设置的频率
ledcAttachPin(pin,1); // Bind the pin to ledc channel 1.将引脚绑定到ledc通道1
ledcWrite(1, 511); // Set the duty cycle of ledc channel to 512/1024=50%.设置ledc通道占空比为512/1024=50%
ledcDetachPin(pin); // Stop the pin output. 停止引脚输出
}
void loop() {
delay(100);
}
功能:
返回指定通道的占空比.
函数原型:
uint32_t ledcRead(uint8_t channel)
参数 | 类型 | 描述 |
---|---|---|
channel | uint8_t | 指定通道 |
返回值:
占空比
使用示例:
#include <M5Stack.h>
uint8_t pin = 25; // Set output pin number.设置输出引脚号
void setup() {
M5.begin();
M5.Power.begin();
double f = ledcSetup(1, 1000, 10); // Use ledc channel 1, set the frequency to 1kHz and the resolution to 10 bits.使用ledc通道1,设置频率为1kHz,分辨率为10位
Serial.printf("F=%.0f\n",f); // print the actual setting. 打印实际设置的频率
ledcAttachPin(pin,1); // Bind the pin to ledc channel 1.将引脚绑定到ledc通道1
ledcWrite(1, 511); // Set the duty cycle of ledc channel to 512/1024=50%.设置ledc通道占空比为512/1024=50%
M5.Lcd.printf("ledcRead:%d\n", ledcRead(1)); // print the actual duty cycle. 打印实际占空比
}
void loop() {
delay(100);
}
功能:
返回当前通道频率.
函数原型:
double ledcReadFreq(uint8_t channel)
参数 | 类型 | 描述 |
---|---|---|
channel | uint8_t | 指定通道 |
返回值:
通道频率
使用示例:
#include <M5Stack.h>
uint8_t pin = 25; // Set output pin number.设置输出引脚号
void setup() {
M5.begin();
M5.Power.begin();
double f = ledcSetup(1, 1000, 10); // Use ledc channel 1, set the frequency to 1kHz and the resolution to 10 bits.使用ledc通道1,设置频率为1kHz,分辨率为10位
Serial.printf("F=%.0f\n",f); // print the actual setting. 打印实际设置的频率
ledcAttachPin(pin,1); // Bind the pin to ledc channel 1.将引脚绑定到ledc通道1
ledcWrite(1, 511); // Set the duty cycle of ledc channel to 512/1024=50%.设置ledc通道占空比为512/1024=50%
M5.Lcd.printf("ledcRead:%d\n", ledcRead(1)); // print the actual duty cycle. 打印实际占空比
}
void loop() {
delay(1000);
M5.Lcd.printf("ledcReadFreq:%.3f\n",ledcReadFreq(1)); // print the actual duty cycle. 打印实际占空比
}
功能:
非阻塞模式,连接设定引脚到ADC
函数原型:
bool adcAttachPin(uint8_t pin)
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 指定引脚 |
使用示例:
#include <M5Stack.h>
uint8_t pin = 25; // Set output pin number. 设置输出引脚号
void setup() {
M5.begin();
M5.Power.begin();
if (adcAttachPin(pin)) { // Attach the pin to ADC. 将引脚绑定到ADC
M5.Lcd.printf("Pin %d attached to ADC", pin);
};
}
void loop() {}
功能:
非阻塞模式,开启adc转换.
函数原型:
bool adcStart(uint8_t pin)
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 指定引脚 |
返回值:
若成功开启返回1,否则返回0
功能:
非阻塞模式,检查adc转换是否进行中.
函数原型:
bool adcBusy(uint8_t pin)
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 指定引脚 |
功能:
非阻塞模式,返回转换结果,如果未转换完成等待完成.
函数原型:
uint16_t adcEnd(uint8_t pin)
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 指定引脚 |
返回值:
返回转换结果
功能:
设置模拟数据读取分辨率,取值1~16,默认为12如果介于9和12之间,它将等于设置的硬件分辨率,否则值将被移动.
函数原型:
void analogReadResolution(uint8_t bits)
参数 | 类型 | 描述 |
---|---|---|
bits | uint8_t | 采样分辨率 |
功能:
设置ADC全局输入衰减,取值ADC_0db, ADC_2_5db, ADC_6db, ADC_11db,默认为11db
函数原型:
void analogSetAttenuation(adc_attenuation_t attenuation)
参数 | 类型 | 描述 |
---|---|---|
attenuation | adc_attenuation_t | 衰减值 |
功能:
设置采样周期1-255,默认为8.
函数原型:
void analogSetCycles(uint8_t cycles)
参数 | 类型 | 描述 |
---|---|---|
cycles | uint8_t | sampling period |
功能:
设置某个单独引脚衰减
函数原型:
void analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation)
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | specified pin |
attenuation | adc_attenuation_t | 衰减值 |
功能:
设置单次采样的实际采样倍数,取值1-255,默认为1,实际效果为提高adc灵敏度,采样次数扩大N倍;
函数原型:
void analogSetSamples(uint8_t samples)
参数 | 类型 | 描述 |
---|---|---|
samples | uint8_t | 采样倍数 |
功能:
设置adc采样分辨率9-12,默认为12.
函数原型:
void analogSetWidth(uint8_t bits)
参数 | 类型 | 描述 |
---|---|---|
bits | uint8_t | 采样分辨率 |
功能:
设置引脚中断.
函数原型:
void attachInterrupt(pin, ISR(callback function), interrupt type/mode)
参数 | 类型 | 描述 |
---|---|---|
pin | uint8_t | 引脚 |
ISR | callcack function | 回调函数 |
interrupt | mode | 触发类型 |
功能:
禁用指定引脚中断
函数原型:
void detachInterrupt(pin)
参数 | 类型 | 功能 |
---|---|---|
pin | uint8_t | 引脚号. |
功能:
读取霍尔传感器
函数原型:
int hallRead(void));