目录

工欲善其事

实践出真知

活跃标签: linux java mysql 待分类 js springboot win10 电路 vue macOS nginx esp32 windows git docker idea maven esp8266 python Arduino

存档:

C++开发ESP8266

开发ESP是有很多种方式的,比如使用Arduino IDE,还可以用Lua,还有MicorePython等,烧录Lua多次失败后果断放弃,不折腾选择C++,下面是在Arduino IDE下安装和开发ESP8266的总结

  1. 下载IDE Software | Arduino
  2. 配置IDE 将 arduino.esp8266.com/stable/package_esp8266com_index.json这段地址放入 首选项》设置》附加开发板管理器地址 即可。这步只是加的库并没有实际down下来。
  3. 接着在:工具->开发板->开发板管理器,点击开发板管理器 搜esp8266 安装即可,有很多情况是安装失败的比如我在win10上安装成功了,在mac上失败了 可以使用离线sdk Arduino IDE离线安装esp8266 SDK(Windows)2022.2.15更新-Arduino爱好者 - Powered by Discuz!
  4. 至此就配置完了,可以改个自带的 栗子看一下配置有没有成功。依次点击 文件》示例》ESP8266Wifi>WifiManualWebServer 即可
    image.png

接下来就是自己发挥啦!最后附上一副引脚对应图:
查看源图像
查看源图像

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


**模拟输入 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)方法。这样使用将有助于使合并字符串更简便。Not pooling strings...(这尼玛什么鬼,不懂)


标题:C++开发ESP8266
作者:llilei
地址:http://solo.llilei.work/articles/2022/11/23/1669206740206.html