esp8266引脚图及功能
ESP8266特性
*802.11 b/g/n
*内置低功耗32位CPU:可以兼作应用处理器
*内置10 bit高精度ADC
*内置TCP/IP协议栈
*内置TR开关、balun、LNA、功率放大器和匹配网络
*内置PLL、稳压器和电源管理组件
*支持天线分集
*STBC、1x1 MIMO、2x1 MIMO
*A-MPDU、A-MSDU的聚合和0.4 s的保护间隔
*WiFi @ 2.4 GHz,支持 WPA/WPA2 安全模式
*支持STA/AP/STA+AP工作模式
*支持Smart Config功能(包括Android和iOS设备)
*SDIO 2.0、(H) SPI、UART、I2C、I2S、IR Remote Control、PWM、GPIO
*深度睡眠保持电流为10 uA,关断电流小于5 uA
*2 ms之内唤醒、连接并传递数据包
*802.11b模式下+20 dBm的输出功率
*待机状态消耗功率小于1.0 mW (DTIM3)
*工作温度范围:-40°C - 125°C
*通过 FCC, CE, TELEC, WiFi Alliance 及 SRRC 认证
WeMos中定义的arduino引擎编号其实是与ESP8266上的GPIO引擎编号对应.即:
16=D2;
14 = D5/D13;
12 = D6/D12;
13 = D7/D11;
15 = D10;
2 = D9;
4 = D4;
5 = D3;
0 = D8;
这算第一个坑,不过好在 经过测试,这些引脚都可以作为数字引脚输入与输出。难道以后 都要先查表,再通过数字 控制IO口?太不方便了,上网继续找答案,发现原来可以这样操纵 直接用 D0~D13。这样就是与板子上的资源对应了。
继续测试板子,从网上下载了超声波的程序,控制我的超声波模块,一次成功。再测试控制舵机,也是一次搞定。真心话,Arduino控制真的简单,简简单单几句话,超声波模块就能够用了,无论51、STM32都没能这么简单。Arduino不用管时间寄存器,打开串口也是拿来就用。
本以为这样就要一帆风顺了,慢着,还有坑在等我。心理想着 这个板子既然功能这么强大,那么用来控制电机,应该也很好吧!所以我要用他的pwm功能。网上一查,PWM很简单啊,用 用analogWrite(pin, val) pin引脚的编号,传说中只能用 3,5,6,9,10,11 这几条;val 是 0~255 的整数值,对应电压从 0 到+5V。这样对应我这个板子,那就应该是 0~3.3v的电压变化,至于那几个管脚,试试就知道了。
写代码,烧程序,一切都那么简单,PWM吗,从0慢慢变化到255就是个呼吸灯了。上led灯,咦,效果不太对,LED灯亮度有变化,但是没有到灭?为啥?上外用表,电压有变化,从0~到了1v多点,就跳回0了,为啥?串口输出,发现 val在0时,输出0 没错,但是在255时,却不是3.3v,郁闷!为什么?检查电路,没毛病。检查代码,没毛病。上网,没看到什么有价值的。重新控制IO口,0是0v,1是3.3v没问题啊!整个人都奔溃了。仔细想想,analogWrite(pin,val) 这个函数,没看见原型,所以不知道 入口参数应该是什么样的,尝试加大val的值,果然,有反应,电压慢慢的上去了。经测试 val的值,应该在0~1000之间。