首先设置在setup函数中设置该引脚的接口为输出格式,即:
pinMode(pin,OUTPUT)然后在loop循环中使用digitalWrite命令赋予该引脚高电平,即:
digitalWrite(pin,HIGH)如果是模拟接口,将digital换为analog即可。引脚电压一般不单独使用,实际使用要根据程序实例变化。
使用pinMode(pin, mode)来设置GPIO口工作模式,mode可选比较多INPUT、OUTPUT、INPUT_PULLUP、INPUT_PULLDOWN模式(输入、输出、上拉输入、下拉输入,另外还有开漏等模式),具体是否能设置对应模式还得参考技术规格书(一般的GPIO0 ~ 33可以设置为输出,基本上都可以设置为输入,GPIO6 ~ 11一般不推荐使用,因为这几个口接了存储程序用的Flash,不当使用可能引起程序崩溃);使用digitalWrite(pin, value)来设置输出状态,value可选值为HIGH或LOW,即1和0;
使用digitalRead(pin)来读取GPIO口电平,返回值为HIGH或LOW,即1和0;
题外话:请注意ESP32的IO12,这个IO口上上电时的电平会决定外部flash(存放程序的那颗)的工作电压,上电时该脚为高则认为flash工作于1.8V,为低则认为flash工作于3.3V。常用的像是Wroom-32系列模块该脚内部已下拉,即flash是工作于3.3V的,若外部电路接强上拉则可能导致模块工作异常。
外部中断
外部中断使用方式如下:
使用attachInterrupt(uint8_t pin, void (*)(void), int mode)或attachInterruptArg(uint8_t pin, void (*)(void*), void * arg, int mode)来设置外部中断,输入参数有gpio号、中断触发时的回调函数、回调函数输入参数、外部中断触发模式(RISING、FALLING、CHANGE……上升沿、下降沿、改变时、低电平、高电平等);
使用detachInterrupt(uint8_t pin)来关闭外部中断;
使用示例
使用下面代码进行测试:
// IO14 输出
// IO12 下拉输入模式 电平改变触发中断
// 使用导线连接 IO14 和 IO12
void callBack(void)
{
int lv = digitalRead(12)//读取加载到IO12上的电平
Serial.printf("触发了中断,当前电平是: %d\n", lv)
}
void setup()
{
Serial.begin(115200)
Serial.pr
本文仅为入门实验,甚至谈不上研究的程度。目的是:记录如何烧录程序到 Arduino 主板,以及通过一些简单例程,找到 Arduino 开发的感觉。开发环境:Ardunio IDE(用于编译、上传运行代码)、VS Code 这种实时的文本编辑器(方便查看、编写代码,编写后再将代码复制到 Arduino IDE 中保存)。
Arduino 驱动:在 Win10 环境,应该会自动安装。插上 Arduino 稍后一会,就能直接上传代码。
1、Hello World例程:
打开 Arduino IDE,另存临时工程。用 VS Code 编辑 .ino 源文件:
int ledpin = 13 //定义数字接口13,对应 Arduino 数字 I/O 13口,库中的 LED_BUILTIN 常量
void setup()
{
// 通过串口收发数据
Serial.begin(9600)//设置串口的波特率
pinMode(ledpin, OUTPUT) //设置13口为输出模式。使用 Arduino 上面的 I/O 口,都需要类似设置
}
void loop()
{
// int val = Serial.read() //读取 pc 发送给 Arduino 的数据
digitalWrite(ledpin, HIGH)//13口输出高电平
delay(500)//延迟0.5秒
digitalWrite(ledpin, LOW) //13口输出低电平
delay(500)
Serial.println("Hello World")
}
编写好保存后,用 Arduino IDE 上传代码后,只要 Arduino 通电,代码就会在主板上运行了。
最后打开 Arduino IDE 的串口工具,即可看到 Arduino 不断发送的数据;随便用个小灯泡,阴极接地,阳极接13口,可以看到小灯泡正在 Blink。
2、使用模拟接口,读取模拟值:
Arduino 有 A0-A5,共6个模拟口,模拟口也可以复用为数字接口14-19。至于是当作模拟口,还是用作数字接口,取决于使用 digital 还是 analog 函数。
例程:
int potpin = 0
int val = 0
void setup()
{
// 通过串口收发数据
Serial.begin(9600)//设置串口的波特率
}
void loop()
{
val = analogRead(potpin)
Serial.println(val)
delay(2000)
}
电路图如下(其中 R2 为可变电阻)。通过可调电阻改变电流大小,从而改变 A0 的模拟值,读取并输出串口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)