[Day14] Esp32s用STA mode + LED - (程序码讲解)

1.前言

今天会介绍到一个满重要的功能,就是函式库,在『Day5 函式(数)介绍』中就有稍微提到函式的部分,其实有些函式在Arduino或Esp32中必没有预设就在,可能特别需要去导入,而这个导入就是include,所以大家应该就了解第一行include的功能了。

2.汇入函数库

汇入函数库可能大家都会觉得我是要讲刚刚讲的include,可是不是,我要讲的是Arduino内建有小部分的函式库,像是AP跟STA模式界都需要用到WiFi这个函式库,但各位应该以为只有开发板有函式库,没想过有些感测器或是一些服务也会需要安装函式库吧,所以今天要交各为如何去找函式库,那其实有两种。

  1. Arduino IDE
  2. Internet

第一种函式库有些没有,但会定期更新
第二种函式库较多,但要自己去看有没有更新

3.Arduino IDE汇入函式库

首先先打开Arduino IDE -> 草稿码 -> 汇入程序库 -> 管理程序库

图片取自:使用者拍摄

打开後会像当初找开发板那样,去找自己所需要的函式库

图片取自:使用者拍摄

这边就都不多先这样介绍了,因为後续才会用到,所以这边就稍微浅谈一下,那接下来介绍第二个罗

4.(.ZIP档)函式库汇入

先到网路上找到要用的函式库,在GitHub上有许多人会放函式库,如何搜寻呢,可以在网页上打arduino libraryname(函数库名称) github,通常这样就可以找到拉,下面为举例。

点击Code -> Download ZIP下载zip档

图片取自:网路

後续一样打开Arduino IDE -> 草稿码 -> 汇入程序库 -> 加入ZIP程序库...,後续找到下载下来档案就可以罗

图片取自:使用者拍摄

那这边就都稍微介绍,也会有应用,那时後会在介绍详细一点,那就开始介绍程序码拉~

5.STA 与 AP 的setup找不同

5-1.STA mode的setup()

void setup(){
  Serial.begin(115200);
  // Initialize the output variables as outputs
  pinMode(output22, OUTPUT);
  pinMode(output23, OUTPUT);
  // Set outputs to LOW
  digitalWrite(output22, LOW);
  digitalWrite(output23, LOW);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // Print local IP address and start web server
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

前几段在前几个篇章都有讲解到,设定鲍率,定义脚位,数位输出状态,那後续比较关键的就是37~41、46及47行,那35、36行只是输出文字给使用者观看而已,那接下来开始讲解。

WiFi.begin(ssid, password);

透过ssid及password,对该基地台做连结,如没连结到会持续连接

while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

查看连结况状,如为连结到进入回圈,并且在监控视窗中输出"."

Serial.println(WiFi.localIP());

等到WiFi成功连到後,会跑到这行,当执行到这行时Esp32s会去抓自己的IP位址在哪里,并且输出在监控视窗中

server.begin();

Esp32s开启网页服务

5-2.AP mode的setup()

接下来就是看下面AP mode的程序码啦

void setup() {
  Serial.begin(115200);
  // Initialize the output variables as outputs
  pinMode(output0, OUTPUT);
  pinMode(output2, OUTPUT);
  // Set outputs to LOW
  digitalWrite(output0, LOW);
  digitalWrite(output2, LOW);

  // Connect to Wi-Fi network with SSID and password
  Serial.print("Setting AP (Access Point)…");
  // Remove the password parameter, if you want the AP (Access Point) to be open
  WiFi.softAP(ssidAP, passwordAP);
  delay(500);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);
  
  server.begin();
}

你们会发现前几行又是跟STA mode相同,都是设置鲍率、定义脚位及设定脚位状态的部分,那我们就跳到第33行。

WiFi.softAP(ssidAP, passwordAP);

WiFi建立连结,可使使用者连结到Esp32s,但这边只做通道的部分,需要注意的是,当passwordAP没设置时,密码不用输入就可连结

IPAddress IP = WiFi.softAPIP();

softAPIP会将得到softAP的IP位址,就是192.168.4.1这IP,最後由Serial.println把IP显示在监控视窗中,其实这边可以省略直接Serial.println(WiFi.softAPIP());直接把IP位址显示出来

欢迎交流

好了,今天这篇不知道大家有没有对STA跟AP mode的差别更加了解,如果没有後面几篇也会看到很多次,那下一篇会是讲解Esp32s用AP mode结合Relay(继电器),并控制Relay的开启与关闭,然後也不用很担心函式库汇入不会,因为後续有几篇会讲解到,今天只是稍微提起,那今天就这样罗~明天实作见。


<<:  Day10:例外处理,留下来或我跟你走

>>:  回归初心;重新出发 IOS基础

[重构倒数第06天] - 前端除了要做预览图还要把图片变模糊 !

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...

Day 05:是说,这个选项可以接什麽东西?autocomplete 与 auto-pair

更新 我把从第一天到现在每天的 Home 目录都放上 GitHub 了,README.md 里面有...

[版本更新] 重点速记 ubuntu 21.10 (含呒虾米安装建议)

前言 ※本篇早先已於 110 年 10 月 15 日发布在我的部落格:[版本更新] 重点速记 ubu...

【Day30】最後一天的回顾笔记:我们没做到,但也做到了!

仔细回想一下,大概是在许多年前,就曾陆续看过 iT 邦帮忙相关广告或分享。但从没想过,这个品牌有一天...

[面试]做好自我检核,面试就是上战场!

千万不要在毫无准备的状态下奔赴战场! 面试已经是充满未知数的战场,如果你到了战场才发现自己把装备忘...