Arduino和ESP8266引脚图

Arduino的引脚图

https://www.geek-workshop.com/thread-11826-1-1.html

 

 

ESP8266

 https://item.taobao.com/item.htm?_u=n1qf7bf57e4b&id=562045987553

 

 

 

 

模拟输入 Analog input
ESP8266只有一个ADC通道提供给用户。它可以使用于读取ADC引脚电压,也可使用于读取模块电源电压(VCC)。
读取ADC引脚值电压,使用analogRead(A0)。输入电压范围:0~1.0V。
读取模块电源电压,使用ESP.getVcc() 且ADC引脚不能连接。另外,下面的代码必须添加至程序中:
ADC_MODE(ADC_VCC);
这条代码不能包含在任何函数中,放在程序中 #include 之后即可。
模拟输出 Analog output
analogWrite(pin, value) 在已有的引脚上使能软件PWM功能。PWM可以用在引脚0~16。调用analogWrite(pin, 0) 可以关闭引脚PWM。取值范围:0~ PWMRANGE,默认为1023。 PWM 范围可以使用analogWriteRange(new_range)语句来更改。
PWM 默认频率:1KHz。使用analogWriteFreq(new_frequency) 可以更改频率。

时间与延时  Timing and delays
millis() 和 micros() 分别返回单位为毫秒和微秒的值,复位后值重置。
delay(ms) 暂时程序给定毫秒时间并允许WiFi和TCP/IP任务的运行。delayMicroseconds(us) 暂时程序给定微秒时间。
记住wifi连接后除了素描程序外还有许多代码需要再芯片上运行。每次loop()函数完成时或当delay被调用时,Wifi和TCP/IP库都有机会处理任何等待事件。如果你程序中某处有循环,消耗事件大于50ms且没有调用delay,你可以考虑添加一个调用延时函数以保持Wifi堆栈的平稳运行。
有个 yield()函数和delay(0)功能相同。delayMicroseconds函数,在另一方面,不会为其他任务让步,所以当延时超过20ms时不推荐使用它。

串行 Serial
Serial 功能几乎和普通arduino一样,除了硬件FIFO (128 bytes for TX and RX)有额外256byte TX and RX缓冲区。传输和接收都是中断驱动。当FIFO和缓冲区分别为满和空时,读写功能将阻止程序的运行。
Serial 使用UART0,即引脚映射GPIO1(TX)和GPIO3(RX)。Serial.begin 之后调用Serial.swap()时,Serial引脚将映射到GPIO15(TX)和GPIO13(RX)。再次调用 swap时 引脚映射将回到GPIO1(TX)和GPIO3(RX)。
Serial1 使用UART1,TX引脚为GPIO2。UART1不能用来接收数据因为通常情况RX引脚被用到flash芯片连接了。使用Serail1,调用 Serial1.begin(baudrate)。
如果Serial1没有使用且Serial没有被调换 - 通过在Serial.begin之后调用Serial.set_tx(2)或者直接调用Serial.begin(baud,config,mode,2) 可以将UART0的TX映射到GPIO2。
默认情况下当你调用Serial.begin,Wifi库诊断输出是禁用的。再次启动调试输出,调用Serial.setDebugOutput(true)。调用Serial1.setDebugOutput(true),Serial1重定向调试输出。
你也需要使用Serial.setDebugOutput(true)去使能printf()函数的输出。
Serial和Serial1都支持 5,6,7,8数据位;奇 (O), 偶 (E),无(N) 校验位;1或2停止位。设置所需模式,调用Serial.begin(baudrate,SRIAL_8N1),Serial.begin(baudrate, SERIAL_6E2), etc.

Progmem

程序内存工作特性和arduino页非常相似,在只读存储器中的存放只读数据和字符串,为你的应用释放堆。最重要的区别是在ESP8266上字符串不合并。这意味着在代码中定义在F("")和PSTR("")中的相同字符串在每个实例中都将占用空间。所以你需要自行管理重复的字符串。

有个附加辅助宏,让它更容易通过 const PROGMEM 字符串去使用 FPSTR()(__FlashStringHelper)方法。这样使用将有助于使合并字符串更简便。

ArduinoESP8266之间可以通过串口通讯进行数据交互。需要将Arduino的TX引脚连接到ESP8266的RX引脚,将Arduino的RX引脚连接到ESP8266的TX引脚,同时将两个设备的地线连接在一起。 具体连接方式如下: - 将Arduino的TX引脚连接到ESP8266的RX引脚 - 将Arduino的RX引脚连接到ESP8266的TX引脚 - 将Arduino的地线(GND)连接到ESP8266的地线(GND) 接线图如下: ``` Arduino ESP8266 TX RX RX TX GND GND ``` 在代码方面,需要使用Arduino的Serial库进行串口通讯。Arduino将通过串口向ESP8266发送命令,并接收ESP8266的回复。下面是ArduinoESP8266上的具体代码示例: Arduino代码示例: ```c++ #include <SoftwareSerial.h> SoftwareSerial espSerial(2, 3); // RX, TX void setup() { Serial.begin(9600); // 使用电脑串口监视器进行调试 espSerial.begin(115200); // 与ESP8266建立串口连接 } void loop() { if (espSerial.available()) { // 检测ESP8266是否有数据传输 Serial.write(espSerial.read()); // 将ESP8266传输的数据输出到电脑串口监视器上 } if (Serial.available()) { // 检测电脑串口监视器是否有数据传输 espSerial.write(Serial.read()); // 将电脑串口监视器传输的数据发送给ESP8266 } } ``` ESP8266代码示例: ```c++ #include <SoftwareSerial.h> SoftwareSerial arduinoSerial(2, 3); // RX, TX void setup() { Serial.begin(115200); // 使用串口监视器进行调试 arduinoSerial.begin(9600); // 与Arduino建立串口连接 } void loop() { if (arduinoSerial.available()) { // 检测Arduino是否有数据传输 Serial.write(arduinoSerial.read()); // 将Arduino传输的数据输出到串口监视器上 } if (Serial.available()) { // 检测串口监视器是否有数据传输 arduinoSerial.write(Serial.read()); // 将串口监视器传输的数据发送给Arduino } } ``` 需要注意的是,ESP8266的波特率需要设置为115200,而Arduino的波特率需要根据需要进行设置。同时,使用SoftwareSerial库需要在代码开头进行引用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值