赞
踩
在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输出,具体说明如下:
使用analogWrite(pin, value)来对pin上输出PWM信号,value表示高电平保持时间,默认下value取值为0 ~ 1023,当value为0时即停止PWM输出;
使用analogWriteRange(new_range)修改PWM value可写范围,默认range为1023;
使用analogWriteFreq(new_frequency)修改PWM频率,new_frequency取值范围100 ~ 40000Hz,默认为1000Hz;
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指示灯,电机以不同速度正反转。
关注公众号「TonyCode」,获取完整代码。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。