[Day12] Esp32s用AP mode + LED - (认识序列埠监控视窗&程序码讲解)

1.前言

看完上一篇的利用Esp32s的AP mode控制LED灯了吧,是不是觉得很神奇阿,那本篇会稍微在说明程序码的流程,这边说明一下本篇的内容会是,重点介绍上篇实作程序码核心的部分,後面的系列篇章也会以这样的下去写,一篇实作,下一篇就会是介绍,直到结束(耍废功能开启),那就开始本篇内容。

2.序列埠监控视窗

序列埠监控视窗位於Arduino IDE中右上方的放大镜icon ,该地方後面会看见空白视窗(要插开发版才可以开启),这个地方是可以观察程序运作到哪行,而这视窗也是要特别去写程序码才会有资讯跑出来的,不然像是第一次教的呼吸灯就不会显示资讯,所以会教如何让序列埠监控视窗跑出讯息。
那我们先讲解鲍率(Baud rate),鲍率就像频道一样,我可以自由切换许多不同频道,但是每个频道都有属於自己的传输大小,像是上一篇程序码中有一段是说

Serial.begin(115200);

这就是在说我要设置序列埠监控视窗的鲍率为115200,也就是说开发板(Esp32s)会跟电脑建立连结,而每秒资料传输115200 bit/s;现在大家都会设定鲍率了对吧,那设定完之後就是要输出文字,在上次的『Day7 函式(数)介绍-Part2-1』有介绍到String这个资料型态,那String主要目的是显示文字给使用者看,要透过什麽显示?

  • Serial.print()
  • Serial.println()

这两种区别是,後不会在最後你输出文字後自动换行,而Serial.print()不会自动帮你换行,所以当你下次输出讯息时,会继续接在後方,而Serial.println()就会在输出文字後自动换行。

void setup(){
    Serial.begin(115200);
}
void loop(){
    Serial.print("Hello ");
    Serial.println("World");
    Serial.println("test");
}

那输出结果会是

Hello World
test

各位可以尝试看看,记得要插上开发板,且记得要烧录至晶片,然後要记得点开监控视窗,如果看到字会重复跑出来是正常现象,因为程序写在loop当中,因为loop会重复跑自己区块内的程序码
有些人可能在开启监控视窗後,会发现怎麽是乱码?
那是因为电脑这方的鲍率没设置好

图片取自:使用者绘制

调整成自己设置的鲍率就可以正常显示罗。

图片取自:使用者绘制

如果觉得跑太快可以加个delay(10000),可能每跑完一次就间隔10秒在跑。

3.程序码讲解

接下来开始讲解程序码,这边指挑核心程序码说明,而不会全部说明,因为其他的程序码大多都是固定的输出格式一般我们不太需要去改动到。

#include <WiFi.h>

// Replace with your network credentials
const char* ssidAP     = "xxxx"; //Esp32s基地台名称(随便都可以,要英文且尽量不要跟附近的WiFi撞名)
const char* passwordAP = "xxxxxxxx";//Esp32s基地台密码(至少要8码,例如12345678)

// Set web server port number to 80
WiFiServer server(80);

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String output0State = "off";
String output2State = "off";

// Assign output variables to GPIO pins
const int output0 = 23;
const int output2 = 22;

那此次要讲解的程序码是前面宣告的部分,那第一、四行先跳过,我们这次先不讲,交给後天的我在讲解,那我们就从第四行开始

const char* ssidAP     = "xxxx"; 
const char* passwordAP = "xxxxxxxx";

之前在前面几篇讲解过资料型态,那现在前面又多了个const又是什麽意思?其实const就像是把资料上锁起来一样,只要给变数数值,那这之後就无法更改变数里面的数值,那const就主要就是储存已经固定的值,像是圆周率(3.14),像是这种值就不会有更动的可能,所以就加const防止不小心更动到变数中的值。

// Variable to store the HTTP request
String header;

// Auxiliar variables to store the current output state
String output0State = "off";
String output2State = "off";

// Assign output variables to GPIO pins
const int output0 = 23;
const int output2 = 22;

其实这边都是资料型态跟变数的运用。
第2行、事先定义变数header,且型态是String(字串)
第5、6行,定义两个为String的变数,并放入off的字串
第9、10行,定义两个为int的变数,且里面先放入22、23的整数,那这边这麽做主要是在void setup()时,可以pinMode()直接靠变数名称就定义脚位在哪。

欢迎交流

好了,今天就先介绍这边,因为在进入void setup()前通常会先行定义变数的部分,那这部分都跟先前讲解的资料型态那篇有关,所以对这边还是有点不了解的可以去前几篇回顾一下,那就明天见拉~


<<:  Day 11. Coding style

>>:  更新ruby&cocoapods

#3. Expanding Cards(原生JS版)+ 用tailwindcss玩grid排版

今日专案进度 A. 用grid方式将专案重新排版(透过tailwind css) B. 使用vue-...

Day 11 ROS Cpp Parameter Server

严格来说 Parameter Server 其实不太可以说是一种通讯方式,而是静态储存变数的一种方法...

【在厨房想30天的演算法】Day 27 资讯安全与演算法 : 迪菲-赫尔曼密钥交换

Aloha!我是少女人妻 Uerica!最近在看加密演算法时,觉得这些想出如何加密、如何更安全的传送...

[Day16] 传值、传址 or call by sharing

传值或传址? 前面两篇所讲的,基本型别是传值,物件型别是传址,但同时也存在例外,举下例,如果对 ob...

[Day 02] - Mongo DB环境建置

第二天,首先我打算先把Mongo DB环境建起来 为了方便,就用docker在local部属 Mon...