在IOT Kit开发板上提供了一些基础的外设及传感器,本篇通过驱动按键、LED灯、继电器、光敏电阻和电机来学习ESP8266的IO口功能,即数字输入、数字输出、模拟输入和PWM模拟输出功能。
Arduino for ESP8266可以使用Arduino操作IO口的方式,即使用pinMode、digitalRead和digitalWrite函数进行操作:
在IOT Kit开发板上,按键一端连接GPIO16引脚,另一端通过电阻连接到3.3V电源,配置按键下拉输入模式,则按键按下输入高,按键抬起输入低。
char keyCheck(void)
{
static char key_up=1;//按键松开
if(key_up&&(digitalRead(Key_Pin)==HIGH))
{
delay(10);//去抖动
key_up=0;
if(digitalRead(Key_Pin)==HIGH)return 1;
}else if(digitalRead(Key_Pin)==LOW)key_up=1;
return 0;// 无按键按下
}
继电器连接GPIO15,通过下图可知,输出高电平继电器开,输出低电平继电器关。ESP8266模块上的LED灯连接GPIO2,输出高电平关闭,输出低电平打开。
继电器电路图
if(keyCheck()==1)
{
key_sta = !key_sta;
digitalWrite(Relay_Pin, key_sta);
digitalWrite(Led_Pin, !key_sta);
}
ESP8266 有一个可供用户使用的 ADC 通道。它可用于读取 ADC 引脚上的电压,或读取模块电源电压 (VCC)。要读取施加到 ADC 引脚的外部电压,使用analogRead(A0),电压量程为0 ~ 1.0V,ADC值范围为0 ~ 1023。
在IOT Kit开发板上,光敏电阻通过分压电阻连接到ADC引脚。当光线亮时,光敏电阻阻值减小,分压电压小,ADC值小,反之ADC值变大。
oled.print("ADC:");
oled.print(analogRead(A0)); //A0引脚ADC值 范围0~1023
GPIO0 ~ 16支持PWM输出,具体说明如下:
IOT Kit开发板上的电机驱动芯片为L9110S,当两个控制引脚INA和INB同时高电平或低电平时,电机停止,当两个引脚一高一低时可对电机进行正反转控制。
电机驱动电路
//加速正转
analogWrite(MotorB_Pin, 0);
for(int i=10;i<30;i++)
{
analogWrite(MotorA_Pin, i);
delay(10);
}
//减速反转
analogWrite(MotorA_Pin, 0);
for(int i=30;i>10;i--)
{
analogWrite(MotorB_Pin, i);
delay(10);
}
将开发板连接电脑进行程序下载,上传完成后,OLED显示ADC值,通过遮挡光敏电阻可看到数字改变。通过按键可控制继电器及LED指示灯,电机以不同速度正反转。
实现现象
全部0条评论
快来发表一下你的评论吧 !