好,大家好,这节课呢,我们来讲解一下这个 ysp 三二的这个套启功能, 就是说这个触摸按键是如何使用的,就是如如何使用一键是披萨的这个触摸按键呢,这个套件就像 adc 检测一样,可以解决一些 像电子按键的一些问题啊。这个呢我们主要使用的是源于按钮的这个椰子皮三, 这有他有两个,这个就是这个套子点下去和套子点 c 这两个文件啊。 嗯,在使用这个东西的时候呢,我们需要 就把这个触摸按键啊,这接在接到这个脖子皮上的这个触摸眼角上啊,他这个触摸眼角呢,我们这里 来找了一下给大家看一下啊,就是说他这个银角有套起套起九,套起八一直到这个套起零。而我们这节课用的呢,就是这个套起零的一个银角。所以说呢,我们把需要把这个触摸大按键贴在这个套起银角上, 假设我们手边没有这个触摸按键怎么办呢啊?很简单,我们就可以把用一头公一头母的一个对方线啊,这个对方线的母图 接到我们这个套起的套起连在银角上,然后呢我们另一只另一个工头啊,用手捏着他就行。所以说这个呢, 在使用时呢,一般先要找到这一个发质, 需要找到这个出没按这样的一个花枝,所以说呢,我们这里呢就先把这个涛麒麟通道的这个枝啊给它读出来。好,我们呢 先把这个按程序给他下进去,好,下去读一下这个发字,然后接下来呢我们再来编写这个程序。 好,他这个呢主要是用到了一个这个触摸中带的一个按触摸的一个中带,就是掏起爱起爱起这个樱桃万物的啊提铃,这是狗毒套记 我们对应的这个中段出发函数啊,我们在这个流量的第一等一下,我们呢详细的给大家讲解一下。 好,下载完成。我们打开这个创口加湿器, 好,可以看到我们这个没有用手捏住的时候,他是这个七十多六十多啊,我们用手捏住他就变成了九, 好,我们松开就是七十多。好,所以说呢,我们可以把这个房子啊设置为这个七十多七十六啊。好。我们呢接下来呢把这一段程序给他屏蔽了。 来看下面一段,就是说触摸按键使用的这一个程序。 好,我们把最下面那个程序给他解屏蔽。 好,接下来我们就用这个成语。好。首先呢我们就是说用这个出门这样出框啊,这个呢是四十,刚才我们也看到了他是七十,我们就给他改成小于七十啊,这个四十,七十呢是八折 当当这个 t 零通道只小于七十时呢,就是会触发这个中断。好,这个呢就是我们的一个触发中断的发射,这个呢是触发的一个引脚号,然后呢这个就是发质好,这个呢就是我们的一个中弹发射在这个里呢,我们要 这个出门的时候啊,改变这个 led 的一个状态,好用,也比较简单,我们直接用这个套起,套起一个袜子就可以了。好。接下来呢,我们再把这个程序下去,大家看一下这个效果。 好,这个程序下载完成。好,我们可以用手来触发这个按键, 触犯这个案件的可以看到啊,你们把这个一地段他会这个进行一个闪烁啊,我们这个看不清, 我们也可以从就这个串口打印出来,让大家看一下, 弄在下面去,这样方便大家来看一下这个效果。 好,我们来轻松一下,然后我们用手按住啊,可以看到啊, 这个按键,我手捏着他就会进行一个触碰啊, 好松开了,大家不要错过这个天子。 好,这样就说明这个出烂件的功能已经实现了。好 这一块呢,就给大家讲到这里,谢谢大家。
粉丝1486获赞2317

前面几节课介绍的都是 gpio 口输出的使用,本节课我们介绍 io 口作为输入的使用,并通过按键电路实现这个开关灯的效果。 按键他是一种电子开关,使用时轻轻按开关的按钮就可以让开关接通。手松开时,开关断开。按钮呢,他有两组引脚,也就是四个触点,当按下按钮时,他会连接两个触点, 一般来说四角开关相距比较远的是永远相通的,离得比较近的呢,就是一组开关。 我们来看一下这个按钮的内部连接图啊的这四个银角红色的是一二还有三四,即便你不按下按键,这一二和一二是相通的,三四也是相通的,但 你如果想要让一联通三或者四的话,或者让二联通三或者四的话,你就需要按下按键了,我们来看一下啊, 我们来看啊,这是咱们的这个按键,他们两个离得比较远,所以就是同侧,就算你这个按键不按下,他们两个也是相通的,而他们两个呢又是一组开关,这一组开关呢,只有你按下按键的时候他才会连通。 还有呢,就是这两个对角,他们是肯定能形成一组开关的。使用按键的时候,通常情况下我们都需要进行一个消抖,那什么是按键消抖呢? 因为咱们这个实验中用到的这个开关是一个机械弹性开关,咱们这个机械触点断开和闭合时,由于机 触点的弹性作用,一个按键开关呢,在闭合时他不会马上稳定的接通,在断开时呢,也不会一下子断开,因此在闭合还有断开的瞬间,都会伴随着一连串的抖动,为了不产生这个现象而做措施,就叫按键消抖。 按键的抖动呢,对人来说是感觉不到的,但对单片机完全可以感受的到,而且还是一个很漫长的过程,因为单片机的处理速度是在微秒级的,而按键的抖动呢,至少是毫秒级, 这是一次按键动作的电瓶波行,抖动时间呢是在十秒。由于单片机运行速度非常快,咱们刚按下这个按键的时候,检测到一个低电瓶,判断按键按下,但是呢,我们还没有按到底, 而且这个按键存在抖动,单片机在这个时候呢,也会检测到高电瓶,误以为你已经松开按键了,紧接着又检测到这个低电瓶,又是高电瓶,低高低高低高来回往复。 在这个十毫秒内呢,可能会出现很多次的按下动作,而且每次按下判断的次数也都不相同, 这种抖动可能会导致程序误判,造成严重的后果。一般我们采用两种方式对按键进行消抖, 一种就是硬件消走,硬件消走的电型做法呢是采用 rs 触发器和 rc 积分电路。 第二种呢,我们通常会采用一个软件延时来消抖,比如我们按一下按键后,先读取一下引脚状态,然后延时十毫秒,再读取一下引脚状态, 如果前后两次的电瓶一致的话,说明这个按键按下稳定了对不对?而硬件方法一般用在对硬件操作过程比较严格,而且按键数量较少的场合,所以通常情况下我们还是采用软件消抖。 了解完原理后,我们就可以来搭建我们的电路了,首先要用到一个 led, 一个电阻,一个按键,面包板和跳线,按照右边这个图搭建电路, led 用一个电阻连第二引脚和接地按键呢?连一个三点三伏的电源引脚和第十四引脚。 最后我们就可以写代码了,在这个地方我们需要使用到还是 p 模块,对不对?但是我们使用到 p 模块之前用的就是输出模式,现在我们就 就需要用到输入模式,和输出模式不一样的是,设置输入的时候,我们还需要配置一个上拉或者下拉电阻,目的呢是确定电路中的高低电瓶。上下拉电阻的作用呢,是提高电路的稳定性,避免引起误动作。 如果你不认识上拉电阻和下拉电阻,在这个阶段是无所谓的,你只需要了解他们的存在呢,是为了确定高低电瓶 选择上拉电阻啊。 gpl 银角就默认为高电瓶,那我们想要改变他的信号,就需要传入一个低电瓶,就接地 选择下拉电阻呢?这个 io 口默认就是低电瓶,那我们想要改变信号就需要传入一个高电瓶,也就接电源。在我们写代码之前,我们再回头看一下我们搭建的这个电路,那咱们同学们先想一下哈, 这里这个第十四引脚,也就是按键对应的 g p i o 引脚,咱们给它设置应该是上拉电阻还是下拉电阻, 应该是下了,因为另一端我们接的是电源,按默认是低电瓶,也就是零,那我们按下按键,他一连通就会给他一个高电瓶。 如果我这个按键的一角接的是接地的话,那另一端再接它,我们就要选择一个上拉电阻了,因为默认状态下他就是一个高电瓶,联通之后呢会给他一个低电瓶, 因此我们的代码呢,需要这么写,先导入模块 pro 的 time, 再 from machine import p。 然后呢我们要定义这个 g p l 引脚了,一个输入引脚就是个按键引脚,一个输出引脚要他 in 等于一个 pin 十四引角对不对?状态的话就是 pin 点 in 输入模式,再就是给他一个连到三点三伏,所以我们要给他一个这故事的是一个低电瓶,低电瓶的话就是接下拉电阻并点 pro 大, 接着定义这个 led 引角 并调 led, 它就等于一个频。第二定点 alt 输出模式, 接着我们就可以写我们的循环了,就 yo 处我们要判断一下啊,下拉电阻他默认是低电瓶,那如果检测到高电瓶,也就是一的时候,说明按键被按下了,对不对?所以我们第一次判断这个按键有没有被按下的时候,就是衣服 pin 点 等等一个一,接着呢,就是对按键进行一个消抖,按键按下之后呢,我就立刻进入一个十毫秒的一个延时,也就是 tam 点 sleep 毫秒,十毫秒,十毫秒。之后呢,我们再判断一下它的状态, 就 if 拼 button 点 value 等等于一,如果它依然是一的话,那这是不是就说明这个按键按下已经稳定了,对不对? 那是不是就说明我们已经销走完成了?所以这个时候呢,我们就可以改变一下 led 的状态了,之前我们讲过这个 tin 杠 led 点 value, 修改状态的话就是 note in 杠 led 点 value, 然后我们运行一下,咱们按一下这个按键,哎,我们来看一下哈,我们点击的时候,他好像并不是切换状态,对不对?这是为什么呢?我们先把这个时间拉到八十毫秒,重新运行看一下啊, 咱们看他现在一直在闪烁,对不对?这是什么原因呢?我们来盘一下这个逻辑代码,执行到永贞循环之后呢,就开始判断按键的状态了, 那如果按键是刚被按下的时候,就进入了这个消抖,先进行一个延时,然后延时结束呢,再进行一个判断这个按键状态,如果他依然是按下的状态,我们就改变这个 led 当前的一个电瓶,接着我们就进入了下一轮 的循环,就又来到这一行,你们看啊,我这个手是不是还没有松,所以我们依然进入了当前这个函数,然后就是又对按键进行了一次消抖,又延时了八十毫秒。接着我到这里呢,我手还是没有松开,他就再次翻转了这个 led 的一个状态, 也就是说如果我这个手一直按着不松开,那他就会一直不停的切换状态,但是我们想要的是什么结果呢?我们只需要检测到按键稳定的状态,然后切换一次就够了,对不对?所以呢,我们需要用一个变量来记录当前这个状态, 记录 led 是否被修改过的状态,那就叫 states 吧,等于零,零就是没有修改过,一就是修改过,把它写在这个 循环外面, led 的状态还没改变过,所以 status 的值呢是零。当这个按键按下之后呢,我们就是开始进入延时,延时结束之后继续判断按键状态,如果这时候我们依然判断到按键是按下状态的话, 我们不仅要修改一下这个 led 的状态,还要修改一下 status 的这个变量值,把它改成一,所以我们这个条件呢,也需要变一下,不能只判断这个输入音角的状态了, 还需要判断一下咱们这个 status 的状态,就是按的 status 的值,它是等于零,也就是之前 led 的状态并没有修改过,这是第一次修改,所以我们才进入这个状态,那我松手呢?松手的时候,那就是 l e f p 杠 b u t t n but 点 y 六等于零的时候,这说明我松手了对不对?松手的话,我们只需要把这个 state 改回零,等待我们下一次按下即可。我们重新运行下这个代码, 点击这个按键。哎,咱们看啊,现在咱们是不是就实现了这个开关灯的一个效果, 但是对于复杂并且多任务的单片机系统来说,如果简单地采用循环制令来实现软件延时,会非常占用这个 cpu 的资源,大大降低了系统的实时性。 所以呢,更好的做法是利用定时中断的方法来实现软件消走,这个我们后面会讲。

好,大家好,这节课呢我们来讲解一下这个椰子皮三的一个按键的操作。在讲解这个按键操作之前呢,我们需要来看一下这个胎母模的胎母,这个模块。 好,这太阳帽,这个模块呢我们主要是用来延时。好,他主要有这几个方法, 这个碳木呢,一个是史雷普,这个是岩石翼嘛,然后这个史雷普 ms 呢,他是毫秒级的岩石,他后面的参数呢就是两秒时间,还有一个呢史雷普 微秒,这个颜色十微秒,然后呢他这个提这个好秒结呢,就是得到内部计时的某个时间点, 然后呢我们再调上这个胎目 tk, tk 十这个地步可以计算一一段过去的时间段的一个长度,我们就调用这两个函数呢,就可以计算从这个时间时间点开始的一个时间长度 啊,这个探母,探母在按键里面他主要的是用来一个延时,因为我们的按键大家都知道需要一个消抖。 好,我们接着来看一下他这个功能是如何实现。 好,首先呢我们需要就是说来出手画一下这个 led, 他就是这节课实现的功能呢,就是用按键来控制这个 led 的一个状态,当时 在 led 在亮的时候呢,按一下按键,这个 led 会熄灭,当这个按 led 在熄灭的状态下,按一下这个按键的 led 呢他会亮起来。好,首先呢我们就是吊上这个屏 对象,来创建一个 led 对象和一个按键的对象。然后这个按键呢我们设置的是一个上拉输入模式, 这个上拉输入模式这个是引脚铃,然后这个 id 呢是输出模式引脚。按好,接下来呢我们就开始来判断这个按键, 首先呢我们判断这个按键是不是被按下,这个弯腰处呢,就相当于是一个歪咬一,一个循环,一个歪咬一的一个大循环就相当于一个死循环。 好,我们首先来判断这个值呢是不是为零,大家刚开始接触的时候一定要看一下这里,他后面是有一个冒号的,而且这衣服后面是不带括号的啊,这后面带一个冒号。 如果按键被按下呢,我们就消抖,消抖是软件消抖,就延时一下,看他这个按键是不是还是被按下,如果按一下呢,就确定这个按键被按下了,然后我们延时一段时间后,再来判断这个按键有没有被按下。好, 如果被按下呢,我们就把这个奥伊迪的一个状态啊给他取款,大家注意一下使用闹的语句,而不是这个取款。这里一定要注意一下这个门口 拍摄的一个语法,拍摄里面是用 note, 而不是用这个来的方式来取法。 note 返回的呢,这个 note 返回的呢是 cut 和 boss, 其零和一, 这个呢是一个取反的操作,如果我们用取反啊,他会导致出错啊,然后呢就把这个直啊取反之后的这个直啊传递给 led, 如果这个按键松开了,然后这个,然后这个呢就是在判断这个按键是否松开,如果松开了,我们就 pass。 好,这就是 是调用了这个延时模块和这个拼模块呢,实现这个按键来控制 led 的一个操作,还是同样的,我们可以直接点在这个地方,点运行 好再点运行,我们按这个按键啊,这个 led 啊,他就会有反应,好,就会,就是控制 led 的一个亮面。 好,这节课就讲到这里,谢谢大。

大家好,这里是爆改车间上集呢,给大家分享的这个触摸屏电脑快捷键小外设啊,虽然没啥用,但是有不少小伙伴还挺喜欢, 然后要求开园,所以主人就把这个代码做了一下小小的完善。主要原因呢,就是之前的这个版本啊,因为是我临时想到,然后就做的。所以呢,上传图片和定义快捷键啊,都是写死在程序里面的 马。虽然简单啊,但是对于这个初学的小伙伴可能来说就是不太友好。所以呢,就做了这样一个非常简陋的管理页面。虽然说简陋啊,但是有了这个页面呢,我们就只需要这个,这个页面上还可以上传这个图标文件。 然后呢,这个定义啊,这个图标所对应的这个快捷键是哪个字母,然后删除,然后还有格式化这个全部 这个话,还有这个屏幕较准的入口啊,就都在这个页面上了。所以就是嗯,基本上有手就行了。只需要在这个代码里面修改一下这个 wifi 的连接信息,就是 wifi 名和 wifi 密码。记忆的话呢,你们只需要这个输入这个 设备的 ip 地址啊,就可以进入到这个管理页面啊,然后就可以上传这个图标了。嗯,后面主要可能有的困难呢,就是这个关于 atoida 上面 esp 三二开发版环境的配置。这个呢,大家就去这个 atteaste 中文社区里面,然后找这个 esp 三二的这个板块, 然后在这个置顶上面,这里就有 id 一安装 aspn 三二 sdk 的这个离线包哎,我们下载好这个离线包,然后安装减压安装就可以了。然后再有呢,就是我们用到了两, 一个是这个 tftespi 的这个显示屏驱动裤,还有一个呢就是蓝牙键盘的这个驱动裤。所以我们这两个裤呢是需要自行安装一下的,主人就直接把这两个裤代码一起打包,然后大家自行解压缩到这个裤的这个文件夹里,就是赢了。 然后呢就是合照 est 三二 c 三开发版和屏幕连接线的这个顺序,就是涂上这个顺序,按照这个图上这个连接,这个连接线的顺序的定义啊,是在这个 tft 杠 espi 这个库的配置文件里,这个 ulores 赛塔这个点一致这个这个文件里。 这个文件呢就是配置了我们现在用的这个屏幕的驱动,然后这个屏幕的尺寸,然后这个屏幕的哎管角定义在这里。然后最重要的一点呢,就是这个图标文件在上传的时候啊, 图片必须是分辨率是六十乘六十像素,然后二十四位的 bmp 文件。其实呢就是用这个 windows 画板,然后定义一个六十乘六十尺寸大小的一个图像,另层 bmp 操作像时候的这个默认选项就是二十四位图的 bmp 文件, 一定要从这个格式啊,才能正常显示。因为我这个上传的时候没有做任何的教验,不管什么样的东西啊,不管什么文件都可以上传上来。 但是如果上传的格式不是我说的这个六十乘六十像素的二十四位的 vip 文件的话,他肯定是不能正常显示的。 然后这个文件名啊,不可以重名,重名的话就会覆盖掉前面一个文件。然后就是这个蓝牙键盘的这个驱动库和 c 三可能有那么一点点不兼容,有的时候啊,重启之后不能自动连接上,一般多等一会就能连接上了啊。如果不想 冷的话,就直接从这个蓝牙设备里面把它删除,然后重新连接就可以了。然后定义这个快捷方式的快捷键,右键属性里面这个快捷键就从这个里面定义就可以了。 然后呢,就是这个管理页面啊,没有任何美学可言啊,因为我不会肯定呢会有 bug, 大家发现了自己改一改吧。好了,那我们这节就到这里,我们下集再见。

ok, 这节课我们来学习四乘四矩阵键盘,首先呢咱们这个矩阵键盘,它其实是一种薄膜键盘,那什么是薄膜键盘呢? 薄膜键盘是一块带触点的 pet 薄片,用在 pcb、 fpc 等线路上作为开关使用,在使用者与仪器之间起到一个重要的触感型开关的作用。 与传统的硅胶按键相比,薄膜按键呢具有更好的手感,更长的寿命,可以间接的提高使用导电膜的各类开关的生产效率。 我们来看看这个薄膜开关的工作原理啊,就薄膜上的触点啊,它位于 p、 c、 b 板上的导电部位,当这个按键呢受到外力按压时,触点的中心就会下线,然后接 触到 p、 c、 b 上的线路,从而呢就形成了回路电流通过整个产品呢就正常工作了。 我们可以看到咱们这个薄膜键盘呢,它是有三层,上面一层是一个电路,下面一层呢是另一个电路,咱们按下之后呢,中间上下两层的这个导电物质他们就会连接,于是就会形成一个回路。 我们可以看一下我们这个键盘啊,咱们看这里,很明显他是可以分开的啊,这就是一个上层和一个下层,上层呢他接了四个阴角,下层呢接了另外四个阴角, 这个呢就和咱们前面这张图是一样的,这八条线呢,左边这四个控制的就是行,也就是右边这个图,然后右边这四个呢,控制的就是四个列,也就是中间这张图。 具体咱们需要看一下它的工作原理,这个键盘它有十六个按键,如果十六个按键均为独立按键的话,就需要用到十六个 l 口,对于我们的开发版来说还是可以接受的对不对?但是呢,如果有六十四个按键怎么办? 那我们这单片机的 l 口就完全不能满足我们的需求对不对?因此就出现了矩阵键盘这种形式。这个矩阵键盘呢,他是用八根线连接到单片机的八个 l 口上,通过程序扫描键盘就可以检测到十六个按键。 那如果我们想要实现六十四个按键的话,也只需要用到十六个 l 口就行,这个可以参考一下咱们之前那个 led 点震屏的实验。咱们那个 led 点震屏它就是八乘八的,一共六十四个 led, 一共只占了十六个引角。 无论是这个独立键盘还是矩阵键盘,单片机检测它是不是被按下的依据都是一样的,就是检测一下与这个键对应的 l 口是否一体电瓶。 那独立键盘呢,它是一端固定为低电瓶,这种编程呢方式也比较简单,而矩阵键盘呢,它的两端都与单片机 l 口相连,所以呢就需要编程通过这个单片机的 l 口送出低电瓶。 检测的方法呢有很多,最常用的是行列扫描法和这个线翻转法。那什么是行列扫描法呢?咱们看这里有介绍啊,就是检测时先给其中一列一个低电瓶,其余列呢为高电瓶。 就是咱们先确定一下咱们这个按键到底是在哪一列上,确定了列数之后,然后就立即轮流检测每一 行是否有低电瓶,如果检测到其中一行他是低电瓶的话,就可以确定行数了,知道了列数和行数也就相当于确定了一个坐标,那么我们也就可以确定到底是哪个键被按下了。 第二种方法呢就是线翻转法,这个方法呢就是让所有的航线为低电平时,检测所有的列线是否有低电平,如果有就记录下来这个列线的这个值,然后再翻转使所有的列线呢变为低电平,检测所有的航线的值。 由于有按键按下,这航线的值呢也会有变化,记录航线的值,从而咱们就可以检测到全部的按键了。 了解完原理之后呢,咱们就可以来搭建电路了。我们这个实验呢需要用到一个四乘四的矩阵键盘,还有咱们之前用过的 l c d 幺六零二 二液晶屏杜邦线和面包板巨轮键盘呢,从左到右依次接第十三、十二、十四、二七二六二五三三三二阴角,咱们这个 lcd 幺六零二,他接五伏电源时钟线呢接第二十二,数据线呢接第二十一。 最要注意的是我们之前也说过咱们这个 l c d 幺六零二呢,如果你接的是三点三伏电源的话,就可能导致你的字不会显示, ok, 那现在呢咱们就可以来敲代码了。那第一步呢,咱们就先把这个用到的银角先给定义出来, 我们把所有的行音角放在同一个数组中,再把所有的列音角呢放在另外一个数组中,那就定义行音角数组,定义列音角 数组,航音角数组呢,我们就要 int 肉杠 pins, 长度呢就有四个,等于一个。咱们把所有的航音角呢写进来,也就是十三、十二、十四、二七,从左到右, 接着呢咱们的列引脚数组,那就是 column 杠拼子长度呢也是四个,那就是二六二五三三三二。 ok, 定义完所有需要用到的引脚之后呢,咱们就可以来写 set up 函数中的内容了, 咱们需要用到这个串口,肯定需要先设置这个串口通信博特率对不对? serial 点 begin 九六零零。 我们现在来想啊,刚才咱们在讲行列扫描法的时候,咱们是先给一列为低电瓶, 其他列呢为高电瓶,然后呢,咱们轮流检测每一行是否有电瓶,这所以呢,咱们的列应该是输出引脚,而咱们的行呢应该是输入引脚,对不对? 所以呢,我们就用一个循环,用航引角设置为输入模式,那就 for ink i 等于零 i 呢,小于四 i 加加 拼 mod。 咱们这个 row 杠 pins 的第挨个元素模式呢是输入模式, 我们检测按下的是给一个低电瓶,所以我们初始呢就给他一个高电瓶,那咱们这个按键的默认呢,电瓶呢就应该是个高电瓶,所以呢给他一个上拉电阻行定义完了,接着就是列列引脚, 这呢设置为如初模式,那就 for int i 等于零 i 呢小于四 i 加加 tmo 的 polym 杠 pins, 它的第二个元素设置为 output 模式。 当然啊,你也可以把这两个放循环呐给他合并一下,我这里呢主要是为了让大家看起来比较方便理解, 而且呢,我们还需要给这个列引脚呢初始化一下,因为咱们是给检测的那一列是低电瓶,那其他不检测的时候呢,就应该设置为高电瓶,所以呢就把所有的引脚就初始化为高电瓶, 那就 digital write column 杠印子第二个元素,这是一个 高电瓶,哎,那现在咱们这个配置函数呢就写完了,接着呢我们就可以在录播函数中读取我们按到的按键,并且呢把它打印在咱们这个创口监视器中,因为咱们一会是不是还需要用到读取紧致键盘按键的这个功能, 所以呢咱们是不是就可以把这个读取矩阵键盘的按键这些代码呢封装成一个函数,并且咱们在这个路虎函数中呢调用我们这个函数,所以我们就可以把它定义成名字呢就叫 read 杠 kipad, 他不需要任何参数,但是有一个返回值,返回的值呢就是我们按下的按键,我们用一个变量来接收一下吧。 k, 咱们在一开始的时候把这个 k 定义一下,就创建按键变量,他的类型呢应该是差,因为我们这个 二三四五六七八九零 a b c d 都是单个字符,对不对?所以呢它的类型呢就是一个叉,名字叫 k 保存读取到的按键值, 那我们就在这个录函数的上面写一个咱们这个 void, 哎,这个有返回值对不对?你看咱们这个 k, 它的类型呢是 char, 所以呢我们这个返回值的类型呢也应该是 char, 那我们这个 redk pad 的范围值类型,也就是叉 red 杠 k pad, 他的其中该写什么内容,咱们先放一边不管,我们也想啊,假如我们现在已经获取到这个按键的值了,我们现在是不是该把咱们这个按键给打印出来,那就是 一幅咱们这个 k 存在的话,就是如果我们已经给这个 k 传直了,那咱们就使用这个 serial 点 print f, 就是打印格式化支付串的方式,把咱们这个检测到的按键给它显示在咱们的串口监视器中, 那就检测到按键按下画完符杠 n 在这里啊,一般是二是单个字符,我们就可以用百分号 c 来作为站位符,最后不要忘记加这个分号, 那终于我们该写这个函数了,名字先给它加上,就是获取按键值函数。 在这个函数中呢,我们第一步就是先定义咱们这个键盘按键的一个布局。我们看咱们右边这个图啊,咱们这个键盘他是四乘四的,所以我们定义的这个按键数组,他应该是个二 为的,那就是类型呢?还是差, k 子旁是四,列也是四,所以就两个四等于一个大括号,分号先写,后面给他换个行,这个大括号里面的四个元素呢,又分别是一个数组。 我们先看第一行,第一行就是一二三四,注意哈,这里的一二三四一定要用这个引号引起来, 这样才表示字符啊,把它复制三遍,一二三 a, 四五六 b, 七八九 c 有一个 d, 星零井 d。 ok, 那咱们这个 键盘对应的二维数组就创建成功了,那我们现在就可以使用行列扫描法来检测到底是哪个按键被触发了。 那咱们刚才也讲了,咱们第一步呢,是先给当前列设置为低电瓶,其他列呢,设置为高电瓶。那我们一开始出石化的时候,现在就已经是高电瓶了,对不对?所以我们第一步呢,先给这个列一个低电瓶, 然后呢就检测咱们这个行输入引脚的一个状态,检测到低电瓶了,就说明按键按下了,那咱们就返回这个按键值,那我想啊,咱们这个外层循环,他是不是就需要循环这个列,内层循环才是循环行, 所以就是 int, 我比较喜欢行用 i 来表示,那列呢?用 j 来表示,所以我就用 j int j 等于零, j 呢, 小于四 j 加加将是将当前列设置为低电平,那就低级头 rat alum 杠拼子的 d 这个元素给它呢,设置为一个低电瓶 low, 那现在是不是就该扫描所有的航音角的状态了,那就 for 内部循环,就是 for inter i 等于零, i 呢?小于四 i 加加 检测行输入引脚状态,那就 if 检测到低电瓶对不对?那咱们写上吧, 检测到低电瓶,说明按键被按下,那么咱们就返回这个按键值, 那低电瓶就可以写成是 d g 头 re 的肉杠品质的 d i 个元素,它呢,如果检测到等等于零,或者我们就可以在前面呢,在这个 d g 头 re 的前面加一个感叹号,表示取反, 那咱们就返回这个值,也就是 return, 把咱们这个 k 呢对应的值,这个行对应的是 i, 对不对?列呢?对应的是 j, 把咱们这 k 子这个二位数组的 d i 行 d j 列这个元素呢给它返回出去。 那如果我们这个内部的循环结束之后,并没有任何按键按下,那咱们是不是还需要把当前这个列恢复为高电瓶?这就 digital write polom 杠印字 来一个嗨,因为你想啊,如果你不给当前列会飞高电瓶的话,就比如我们按了第一列,第一列现在是个低电瓶,那我下次循环按第二列的时候,我们检测引脚,那第一列是低电瓶,第二列也是电瓶,对不对?那是不是就出现一个误判了? 那咱们这个行列扫描法的内容呢?就讲完了,但是你想啊,如果我们没有按下的时候,是不是就不会触发咱们这个 return, 而最后呢,我们也需要一个返回值,所以呢咱们还需要在程序的最后加上一行 return now, 然后我们再来运行一下,他现在给我们一个报错,就是我们这里呢少一个分号,加上重新运行, ok, 我们现在打开咱们的串口监视器,我随便按下一个按键,比如按下按键一哎监测到一按下 二四七信号都正常,对不对?但是接下来我们看啊,我按住五哎,五就显示了一下,对不对?你看五就在这里,五呢,他只在这里显示了一下,接着又变成四了,我们再按六呢, 六也是只显示了一下,他又变成四了,这是什么原因?我们来检查一下咱们这个程序哈, 看看这里,其实也就是一个逻辑的一个问题,因为咱们如果检测到按键按下的时候,是不是就会返回一个值?如果没检查到这个按键按下,咱们就会给当前列 恢复为高电瓶,但是如果你检查到之后,咱们就已经返回这程序了,他并不会再给当前列恢复一个高电瓶。所以呢,就比如我们检测到这个按键五按下之后,咱们这个第二列呢?他现在是不是就这个低电瓶, 咱们这个内部循环呢,他会先检查咱们这一行第一列也就是这个四,那检查到咱们这个四已经有低电瓶了,对不对?因为你这个五他是个低电瓶, 所以呢我们这个行音角呢,他就收到了一个低电瓶,那咱们就直接范围出来一个四,下次呢咱们依然没有把这个行恢复为高电瓶,他就依然范围出这个四。 那解决方法呢也很简单,咱们呢把这个恢复当前行这行代码呢给它放到这个衣服里面重新运行一下, 现在再重新打开我们的创口监视器,我现在再按一下按键,五的话,哎,这就是正常的五了,对不对?六九八七四一二三,那现在咱们就正常了, 但是他打印的太快了,咱们是不是可以在这个路虎函数的最后呢给他加一个敌类,让他延迟一个两百毫秒,那咱们这个程序呢就完成了。

椰 t 三二确实挺方便,自带触摸传感器,这个现在第四菱角可以触摸,我现在可以让他灯亮, 摸上去的话就灯亮了,这个蓝色小灯是 io 二。

这一节课我们来学习如何使用 esp 三二开发板通过 spi 控制 oled 液晶屏。 那 spi 是和 iphone c 类似的一种同步全双工通讯协议,来自主机或从机的这个数据,在时钟上升年或下降年同步 主机和从机可以同时传输数据。 spi 接口呢,可以是三线式或者四线式,还有单线式,还有双线式。咱们这个屏幕呢,他就是三线式,但是使用方法和四线式的并没有什么区别。 产生时钟信号的器件呢,被称为主机,主机和从机之间传输的数据和主机产生的时钟同步。与 iphone c 接口相比, s p i 支持更高的时钟频率。之前我们说 iphone c 的时候啊,说 iphone c 只用到了芯片两根线,对不对?而 s p i 它需要用到四根线。先是 m o s i, 这 m o s i 是什么意思呢?我们可以这么理解啊,这 m 是 master, 也就是主主机。 o 是 output, 也就是主机输出。 s 是 slave, 也就是从机的意思。 i 呢是 input, 就是输入。 m o s i 呢就是主输出从输入。 m i s o 呢,就是主输入从输出。还有就是 i c k i c k 是时钟信号由主设备控制发出。 再就是这个 cs 或者是 nss, 但是从设备选择信号由主设备控制,当这个 cs 为低电屏时,表示选中了这个从机。 三线的 spi 呢,它是没有 m i s o 或者是 m i s o 与 m o s i 是贡献的。对于咱们这个液晶屏来说,三线已经足够了,对不对? 因为液晶显示屏并没有什么数据需要回调。为主机 spi 接口呢,只能有一个主机,但可以有多个从机。这张图就显示了主机和从机之间的 spi 连接。 mosi 是数据线,每个机器都有。接着是片选信号线,也就是这三个 来自主机的偏选信号,用于选择从机。这通常呢是一个低电瓶,有效信号拉高时,从机与 spi 总线断开连接。当使用多个从机时呢,主机需要为每个从机提供单独的偏选信号, 你可以把他们想象成我们做的四位数码管实验,是不是很像片选线是不是相当于我们数码管实验的未选线?接着我们说说啊,这个 iphone c 和 spi 的区别。首先 就是这个接线数量, iphone c 只需要两根信号线,而标准的 s, p i 呢,至少需要四根信号线。如果有多个从机设备信号线呢?需要更多一些 s p i 变种。虽然只用到了三根线, i, c, k, c, s 和双向的这个数据线, 但是 cs 线呢,还是要和从设备一样,一根对一根。如果应用中必须使用高速数据传输,那么 spi 是你必然的选择,因为 spi 它是全双攻偶,而 iphone c 呢,它是半双攻。 spi 没有定义速度限制,一般的时限通常能够达到超过十兆。 iphonec 最高的速度也就是一个快速模式,是一兆和高速模式,就是三点四兆。但是 spi 它有一个非常大的缺陷,就是没有标准的一个协议。 spi 就比较混乱,单线、双线、 三线、四线式都有,就是因为没有标准的协议,所以衍生出了多个版本,但是使用起来呢,并没有什么差异。 接着就是 oled, oled 就是有机发光二极管,由于同时具备自发光,不需要背光源,对比度高、外观轻薄、视角广、反应速度快、可用于曲面屏使用、温度范围广等特性,被称为是第三代显示技术。 l、 c、 d 都需要背光,而 o l e、 d 它是不需要的,因为它是自发光。同样的内容呢, o l e、 d 的显示效果要比 l c、 d 好很多。以目前的技术啊, o l e、 d 的尺寸还难以大型化,但是分辨率却可以做到很高。 我们今天要用到的这个屏幕是零点九六寸的 ssd 幺三零六芯片驱动的 oled 显示屏, 它的分辨率是一百二十八乘六十四,意思就是横向有一百二十八个像素点,纵向有六十四个 安娜有七个银角,注于三线 spi 接口,但是你可以根据原理图改变电阻的位置,把它改装成四线 spi 或者 iphonec 接口,咱们动手能力强的小伙伴可以去试试。 接着我们说说他这七个引脚的含义哈。首先从左到右,第一个接地,接地,接地吗?对不对?第二个 vccvcc 就是接电源正,接着是地灵,地灵也就是 spi 中的 ick 时钟引脚。 接着是第一,第一就是 mosi 数据音角。再接着呢是这个 r e s r e s 也是复位音角,它是低电平复位倒数第二个是 d c, 它是数据和命令控制音角。 最后一个 cs, 也就是片选信号的引脚。了解完 oled 和 spi 的原理之后,我们就可以搭建电路了。我们最终想要实现的是用两个按键控制这个屏幕上显示一个菜单的一个上下移动。 所以我们需要用到的材料有一个。这个零点九六寸的 oled 屏幕,两个按键,还有就是面包板和这个跳线, 然后这个屏幕的 d 零是时钟线接第十八阴角,第一呢是 mosi 线接第十三阴角,然后 dc 接第二, cs 接第四, res 接第十五,按键呢一端接 gnd, 另一端接 gpl 引角就第十二和第十四。 接着我们就可以看看我们的程序设计了哈。如果想要使用 ordinal 控制 ssd 幺三零六驱动的 oled 屏幕的话,咱们可以使用以下两种第三方库,第一种呢就是这个 ida flutssd 幺三零六,它是专门针对 ssd 幺三零六驱动的 oled 屏幕的显示图形库。 第二种就是 u 八 g 二库,安娜是目前 r 这个平台上使用最广泛的 oled 库。 咱们先来讲讲怎么使用这个 ida fruit s s d 幺三零六。想要使用它呢,我们还需要安装一个,它的基础就是这个 ida fruit g f x 啊,定义了一系列的这个绘画方法,就比如线了,矩形了,圆等等。 而这个 ida pro s s d 幺三零六呢,它则是定义了一系列跟 s s d 幺三零六相关的方法,并且重 写了这个 ida f 的 g f x 中的做 pixel 方法,也就是画点的这个方法。这个做 pixel 这个方法非常的重要啊,因为咱们这个屏幕说白了其实就是由无数个像素点来组成的, 画线就是由无数个在同一条直线上的点组成的,而画矩形呢,是不是就由四个线组成,而圆呢也是由这无数个点来组成的。所以我们在屏幕上显示的内容呢,本质上呢就是填充一个一个的点, 接下来我们就可以来学习 s s d 幺三零六的构造方法和使用方法了,这个 s s d 幺三零六呢,它包括 iphone c 和 s p i 纵线两个版本,所以针对不同的版本呢,又有对应的这构造器方法。因为我们的 o l e d 屏幕, 我是这个 spi 版本的,所以呢我们就直角 spi 总线的构造方法。 spi 总线呢,也分为两种,一种是软件模拟 iphonec, 它的好处就是咱们可以使用任意的引角。 第二种呢是硬件 spi, 这个硬件 spi 呢,是咱们这个硬件设备自带的 spi, 我们看他们两个构造方法区别是什么啊?第一个都是 w, w 呢都是宽度,也就是屏幕的宽度,接着呢是 h h 就是高度对应的 hat。 第三个就出现不一样了,软件 spi 用的是 msi 和 slk 这两个,也就是我们可以随意设置这两个引脚。而应届 spi 呢,他指定了地址,我们需要使用这个对应的引脚。接下来三个呢,都是 dc reset 和 cs, 这三个参数 数就没什么区别了。使用软件 s p i 构造对象的话,我们看怎么写啊?首先就是导入 s p i 图文件, idafoot g f x 图文件和 s s d 幺三零六图文件。然后我们定义这个屏幕的宽度和高度, 再定义软件 spi 总线需要用到的这几个引角, msi 啦, clk 啦, dc cs reset。 最后就可以构造对象啦, 我们先前面声明这个类,然后声明咱们这个对象的一个名字,我们就给他叫 oled。 括号里面呢就填写对应的参数,比如对应的宽度,高度, m o s i 引角, c l k 引角和这个 d c reset c s。 你还需要明白一点,就无论是什么 led 屏幕啊,它最终都可以抽 出现为这个像素点点阵,想选什么内容呢?就把具体位置的像素点亮起来。比如咱们这个屏幕,他就是由一个一百二十八乘六十四的像素点点阵组成的。这个点阵呢,也有一个自己的坐标系, 在坐标系中呢,左上角就是坐标原点,向右是 x 轴,向下呢是 y 轴。 那我们接着来看这个硬件 iphone c, 它的定义方法呢,相对简单了一点点,这个 s p i 在参数这里呢,它就传了一个 s p i 对应的一个壁纸, 无论你是通过 iphone c 还是 spa 构造对象,然后无论你是通过这个软件模拟的方式,还是通过硬件方式来构造对象呢,接下来这些方法都是一致的。首先就是这个 clear display, 它是 清除显示,但需要注意的是啊,这个方法呢,他仅仅是清除了耳钉头的缓存,不会立即显示在屏幕上,可以通过调用 display 来立刻清除。 接着就是 display 方法,他就是显示内容,而这个方法呢,才会把这个你绘制的内容给显示在屏幕上,也就是非常的重要,你不使用它的话,其他的函数你使用的再多也都没什么用。 所以呢,如果你不使用 display 方法,像咱们这下面这些这个状,这个绘制空心圆,绘制实心圆,绘制这个三角形,圆角方形,圆角矩形这些什么的,绘制单个字符都是没有意义的, 你只有在绘制完这些之后,再调用一下上面这个方法才可以再来看下一页,当然我们也可以 在屏幕上输出一些这个文字,对不对?那你这文字呢,是不是可以设置一下大小,设置字体了,还是设置光标的位置,光标的位置呢,就表示你这个文字是从哪一个位置开始输出,然后这个设置是否换行绘制像素点,这个呢就是最重要的方法, 接着就是绘制水平线,数值线,然后滚动什么的。当然这个绘制方法有很多,咱们这里列举出来的呢,也只是一小部分,还是要根据你的实际情况来确定要使用哪些函数。 了解完这些使用方法和构造方法了,我们就可以来写一个简单的程序了。那刚才讲这么多,其实使用步骤的话也就一目了然了,就是咱们需要先初始化这个 oled 对象,然后调用这个构造函数,接着调用一个笔根方 法,第一步如果没有报错的话,咱们就出示成功了,出示成功之后,我们就可以调用咱们这个绘制类的函数,比如你可以画个圆了矩形了,设置一下字体的颜色了,字体等等。最后绘制完成了,我们就调用这个显示类的函数,就 display。 接下来我们就通过程序来展示一下不同的方法,它的一个效果,打开我们的 vs code, 选择我们的 platform io 插件,这里有一个 open, 我们打开这个 p i o 主页, 然后新建项目,先输入我们的项目名称,比如我就叫它 s s d 幺三零六杠 display。 接着呢我们就选择我们的开发版,就是 e s p 三二,然后 def model, 就是选择乐新的这个啊框架呢,它默认就是 altino, 最后就选择这个位置,选择一个你这个代码要存放的一个位置就行,比如我放到地盘目录下的这个桌面中的这个 aldino programs, 放到这里就 ok 了,现在我们就等待他这个项目的初始化, 初始化完成之后,我们可以先看一下这个 pythome i o 点以立的文件,这里我们看啊,他现在只有这个三行,一个平台,一个开发版和一个开发框架,对不对? 我们刚才也说了,如果我们想使用这个 ssd 幺三零六的话,是不是需要安装一下这个 ida frutsd 幺三零六和这个 ida fruit gfx 这两个第三方库,对不对? 我们就继续打开 p i o 主页,选择 libraries, 在这里也就输入这个 ida fruit 杠 s s d 幺三零 六,我们看啊,这个 ida prote s s d 幺三零六,这个 by ada prote, 这说明就是这一个了,我们就把它下载下来,放到我们的这个项目中,点击添加。 接着还有啊,还有第二个就是 g f x 这个库,我们看这里啊,这个 ida frut g f x library, 把这个下载下来添加, 把这个添加到我们的项目中,然后我们再来看一眼这个 platform i o 点 ene 的文件是不是多了这个三行,就这个第三方库依赖 分别是这个 ida fluta s s d 幺三零六和 g f x library 这两个现在我们这第三方库就安装好了,那我们就接着 写代码呗,这些没用的地方呢,就可以删掉 咱们这第一行这个 include rdno 点 h, 这个可留可不留,不留也不影响,那咱们就先导入对应的头文件呗。 include 使用的 spi 协议,所以就 spi 点 h 头文件必须得导入吧。继续, 那 ida prot 杠 gfx, 那也得导入吧。最后一个需要导入的就是这个 ida prot 杠 sd 幺三零六, 导入完所有模块之后,我们就需要使用红定义来定一些变量了,比如我们需要定一下这个屏幕的宽度和高度,还有就是这使用到引角,那我们直接叫 y 字吧,好吧, w e p h。 宽度是一二八, 接着定义底饭艾特,高度呢是六十四,再定义需要用到的引脚,底饭,引脚是这个 m o s i 我们叫 o l e d m o s i 吧。 o l e d 杠 m o s i。 十三, o l e d 杠 c l k 也就是 i c k 引角 s c k 想叫什么叫什么都可以啊,只是一个变量名。十八、接着底翻 o l e d 杠 e c l c。 把这先写完。 o l e d 杠,这个 c s 最后一个就是 led 杠 reset, b c 对应的引角是二 c s 呢?对应的是四 reset 呢?对应的是十五。我们给大家在格式化一下,那接着我们就可 可以构造对象了,构造对象的话用的是这个 ida frut 杠 ssd 幺三零六,然后就是这个对象名 oled, 我们就叫他 oled 常用参数呗。外字艾特, 如果你不知道该写什么参数的话,我们看啊,这里我们会有一个显示,或者你可以点进来咱们这个类,你可以点进来这个类查看一下对不对? 我们看这里就是宽度,高度 m s i i c k d c reset 和这个 c s 钢片, 那你怎么跳转过来呢?就是按住 ctrl, 然后选择你想要查看的文件就可以了。比如我现在按住 ctrl 选择这个 ida fold s c d 幺三零六,咱们就跳转到了这个 ida flood s c, d 幺三零六这个头文件中的对应的这个内容,你也可以 通过这个方法呢来查看这些头文件宽度、高度。有了我们接着杠 m o s i o l e d, 杠 s a k o l e d, 杠 e c, 杠 reset, 最后是 o l e d 杠这个 c s。 构造对象我们就写完了,接着就是这个初始化呗。初始化咱们这个 o, l, e, d。 对象的话,要使用的是 o l e, d 点,先是 begin, 之后就是 o l e, d 点 clear display, 我们先清除显示 一行呢,就是 o l e, d。 初始化,清除显示之后,比如我们现在想先绘制一条水平线吧,绘制水平 灯线,我先把我的摄像头打开啊,未知水平线的话就是 o l e d。 点 draw 水平就是 horizontal, 就 h。 那第一个就是了,这个 draw fast h line, 他需要传什么参数?我现在还不知道对不对?那没关系,你就可以把鼠标放在咱们这个函数名上,他就会告诉你我们需要填写什么参数, 或者呢就按住 ctrl 选择这个方法,咱们跳转过去看一下,就是这里,对吧?我们看啊,它上面这个注释里面已经给我们写了这个 param 的意思就是 parameter 的缩写,意思就是参数, 它的参数有什么?第一个是 x, x 就是它说最左边这一列的坐标, y 呢,是这个长的坐标, w 呢,就是这个线的长度,单位呢是像素最后一个 color, color 是表示咱们这个线的颜色,我们可以写成是 s, s d 幺三零六杠 black, 或者 s s d 幺三零六杠这个 white, 或者呢是 s s d 幺三零六杠 inverse, 这三种方法我们任选一个即可, 这个 return 就是返回一个按,也就是什么也不返回,那我们继续回来写我们的函数, 第一个需要写的是 x, 我们给个多少号呢?嗯,那我们就给个三十二吧,反正随便写的对不对? x 你肯定不能超过一个一百二十八,然后 y 呢?你肯定不能超过一个六十四,对不对? 因为咱这屏幕的话就是一个一百二十八乘六十四的一个像素点点阵,我们第一个点呢是三十二,我们这条水平线的最左端,他的 横坐标是三十二,纵坐标呢是五,长度呢,我们给他一个四十八。颜色呢?我们看啊,现在这里是不是也有提示颜色就是这个 s c 幺三零六 gun black, white 或者 inverse, 咱们这屏幕目前是个黑底,所以我们就直接写成是 s c d 幺三零六杠外头就行了。 咱们先让它显示来看一下显示内容,显示内容的话就是 o l e d 点 display, 因为咱们没有什么内容需要循环显示的,所以这个路虎函数呢,可以为空打开我们的摄像头,连接上我们的这个开发板,这里一个 com 四,我一选择他就连上了,然后就运行咱们的程序,你可以在 右上角选择这个 upload, 或者是左下角这里有一个 upload, 或者使用快捷键 ctrl 加 alt 加 u, 因为这是第一次咱们捎入这整个项目到开发版里面,所以呢,他的编译时间可能会有点长,但是咱们第二次或者第三次再上传的时候,他就会快很多了。 我们看啊,我们这个屏幕现在是不是就显示了一条水平的直线?我们接着就在这个 o l e d 点 display 方法的 上面就继续绘制我们想要的图案。现在呢,我不想绘制这条水平线了,我想绘制一条斜线,那就 o l e d 点 draw line, 它的参数怎么写呢?我们继续放到这里来看一下, 咱们看啊,它的参数有这个一二三四五五个, x 零、 y 零、 x 一 y 一和这个 color, 我们从名字上基本上可以看出来,对不对?那 x 零和 y 零就是这条直线的起始点的一个坐标呗,那 x e y 一就是这个终点的一个坐标呗。那 carlana 我们就继续使用 s s d 幺三零六杠 white 就行吧, 所以我就任意给他一个数,比如来一个三十二五,初始电的横坐标是三十二,纵坐标是五,接着 是终点是横坐标四十八,那纵坐标呢?是三十,颜色呢就是 s s d 幺三零六杠 white。 我们再上传这个代码,我们继续编译上传这个代码, 咱们看这一次他是不是就基本上跳过了大部分的一个编译的过程, 哎,我们现在屏幕上也显示了这个斜线,而且拿上传的速度比刚才也快了很多。 现在直线的方法我们使用过了,我们再绘制一下其他的图形,比如画一个句型,那绘制句型的话就是 draw rectangle 了,句型的英文名字呢是 rectangle 了,简写 它就是 rect, 那它的参数有什么呢?鼠标放在这里,我们看它的参数也是有五个, x, y, w, h, color, x, y 呢是这个矩形左上角这拐角点的横字坐标 w, h 呢,分别表示它的宽和高。 卡着呢,咱们就继续使用 s, s, d 幺三零六即可。那现在我们给大家画一个句型横坐标,五纵坐标呢,也是五,宽度呢?十,高度呢?二十五,颜色还是 s s d 幺三零六杠外套, 咱们这里绘制的一个句型呢,它是一个空心句型,对不对?接着我们再来绘制一个实心句型,实心 音矩形的绘制方法呢,就是 feel, feel 这个 rect 使音矩形,我们给他一个横坐标是七十五,坐,坐标呢是五,宽度是十,高度呢?是三十,颜色还是这个 s, s, d 幺三零六杠 white 运行,我们来看一下, 咱们看咱们这屏幕上是不是就出现了左边一个通心矩形,右边一个实心矩形, 那你现在空心句型,实心句型就画完了,那你这空心圆,实心圆什么的是不是都可以?空心三角 是银三角什么的都可以自己去试试了。接着呢,我们就在屏幕上显示文字,首先你需要明白啊,使用这个 ssd 幺三零六这个第三方库的话,我们是没办法显示中文的,除非你自己一个一个画点,然后让它显示在屏幕上 print line, 比如我们就显示一个 hello word 吧。首先呢你需要明白一点,咱们这个 print line 这个方法呢,它没办法显示中文的,你只能显示一下英文。 当然你也可以通过使用这个 draw pixel 这个方法来绘制这个汉字的一个一个的像素点,让它在这屏幕上显示,我们先来运行一下看看。 我们现在看啊,咱们这个文字好像并没有显示出来,这个原因是他这个字呢,默认的颜色是黑色,也就是与咱们这个屏幕的底色是一致的,所以我们需要先设置文本的颜色。 设置文本颜色的函数,我们刚才讲了是 o, l, e, d 点 set text color, 那颜色是不是该写成这个 s s d 幺三零六杠外头呢?我不确定,所以我们可以把鼠标先放到这里来看一下, 他没说的话,那咱们就可以写成是 s, s, d 幺三零六杠 white。 接着我们重新 运行下看一看。 现在我们看啊,这个屏幕的左上角确实出现了这个 hello word 这两个单词, 但是这个位置我不想让他出现在这里,我想给他改一个位置。那改位置的话,说白了其实也就是更改一下光标的位置, 更改了光标位置也有,相当于更改了文本要显示的一个初始的位置,那就是 oled 点 set custer。 他的参数我也不知道该怎么写。鼠标放在这里看一下 x 和 y, 只需要传入两个值就行了, 有一个坐标值,我给他一个五横坐标,给个五纵坐标呢,我们给个五十,继续上传看一下。 我们看啊,这个 hello word 这行字是不是就出现在了屏幕的下方? 但是这个字看着好像有点小,我们也可以更改一下这个字体的大小啊。设置字体大小的话,我们使用的就是 size, text size 大小怎么填? 不知道的话你可以看啊,参数他说了,一就是表示这个六乘八的一个格子,二呢表示 十二乘十六,三呢表示十八乘二十四,然后等等,也就是说一是最小,然后递增,我们给他一个二运行。 咱们看这个 hello word 是不是就显示在了屏幕上,但是因为它的字体变大了,所以就没办法显示完全, 因为咱们屏幕总共也就一百二十八个像素点这么大,如果我们使用二这个级别的字体的话,他就会导致显示的字符长度超过一百二十八,从而导致后面的内容显示不完全。

啊,大家好,今天介绍一下我们现在最流行这个 esp 三二和 esp 八二六六啊,这个 esp 三二 下面这些是在机场的买到的,呃,一些 esp 三二,然后他们有哪些不同?然后呢?有哪些特点?我今天给大家说一下, 然后再到时候再给大家介绍一下这些啊 esp 三二有哪些功能?那首先我们可以看到啊,上面这这个是我自己做的一个开放板, 然后这个上面集成了一个充电斜片,嗯,然后 usb 转揣口斜片,然后还有电驱动电路和啊这个两路电供电,这样子的话,呃,你 你再一次使用 l 壳的这个供电,不会影响,呃主芯片的一个供电啊,这样使用起来就是更稳定。 然后再就是这是我最近做的一个就是用 esp 四二二高 s 二做的一个模块,这个 esp 三二,呃,他可以直接连接这个 usb 口,然后呃直接连接 usb 口可以给下载程序, 但是这个连接不是自动的,需要你啊按这两个 gpl 口铃啊,按下去,然后再复一键,然后放开复位键,然后这时候电脑就会发现一个踹口 啊,就是连接那个揣口就可以啊,给他下载程序。就是主要是啊车本低,然后 l 口也比较多, 但是缺点是这个 s 二没有蓝牙,没有蓝牙功能,只有 wifi 功能啊,然后他的和谐也变成了一个代号,然后还有还有一些这个功能啊,没有 s 的这个 esp 三二这个模块的一些功能就也也筛减了, 然后反正就是,呃优缺点各有吧。然后在这个模块,这个模块是我采用的一个呃,这个 esp 三二组的一个小模块,这上面只集成了一个电源电源芯片和这个复位 啊复位开关,然后底下这个是下载接口,就是我我以前做的这个 cb 二幺零四啊,可以直接连接上进行下载程序,这样的话成本低,就是价格比较低,可以做一些 比如说小项目了和其他东西。然后这是这就是一个椰子皮三二的模块啊,大家如果是自己要设计程序,刚开始建议使用这个开发板做,然后再用这个自己可以设计这个电路图,自己做一个自己的本, 然后这是乐写的一款,呃,这个开发板他的优优点就是,呃上面积下了这个 usb 折插口芯片,然后电源电源电路啊,就是还有附尾开关啊,他直接通过 usb 可以给这个 esp 三二下载程序 啊,然后加个还行。然后啊另外一个就是市场上比较便宜的一种这个 exp 三这个模块, 他这个模块不是乐协做的,然后是其他厂家做的这个,呃模块上面采用了一个模块,然后也是 usb 转叉口,然后进行啊一个复位电路进行下载, 然后你在市场上买这一款还行,上面就是有一个比较大的一个,呃滤波,呃这个滤波电容,然后还有一些他的这个电容比较小,电容电容比较小的话,他三点三伏在使用 wifi 的时候啊会有干扰,这个 开了啊播,所以大家要注意。然后再还有一种就是这一种啊,刚才我说的是就是这一种,他他这你看 这两款看着很像,但是他实际还有一定的区别,他的大小也不一样,然后他的上 下面这个呃电容用的,用的电容也是比较少的,然后这款的话我在实际测试的时候,呃有时候三点三伏干扰非常大啊,大家,呃如果有试播期的话,大家可以自己去 来看一下。然后这一款的话它上面集成了一个呃充电电路,然后还有假亚电路,假亚芯片,然后他没有模块,是用的白仔自己呃用的这个芯片, 然后再就是用的四 h 三四零这个转换斜片,然后进行一个下载程序,然后上面是一个复位开关 啊,然后这一个这一个是呃 esp 三二啊,我们可以翻过来看这个 esp 三二,呃 也是不是热血管法开发的,是其他厂家开发的一个液体塞盖模块,这个模块的拐角相对的呃比这个乐器的能少一少点,有的这个应该是差不多的,然后他上面集成了一个摄像头 和 sd 卡这个 tf 卡座,呃这个东西的话,呃可以做这个人脸检测,还有一些图像识别等一些地方可以用,也可以做这个视频 wifi 小车使用。呃 虾段的来说底下这些模块啊,到上面我做的这些模块虾价格都比较便宜吧啊?包括这个,我做这个主板,我做的主板就是寄出来的东西能多一点,然后就是电源电路啊,适合你搞开 发时候使用,然后这些的话你可以做一些小些项目,然后这你小些项目呃就可以使用这种模块,然后你也可以使用底下这些模块,底下的这个模块就是自带下载芯片,就是价格可能稍微啊贵那么一点, 然后你要呃带充电的话就节电池的话,那就你建议就使用这种上面直接带这个充电芯片的, 然后这个的话就是你可以做些识别,这个人脸识别等一些开关了,和其他视频小车可以使用,上面还带了 带来 led 的,但是这个模块没有带 usb 折插口鞋边,所以你需要单独买一个下载线进行下载,然后包括这个模块,然后再就是这个 esp 三二。 给大家说一下 esc 三二。他有,呃,好几款默认是 esp 三二。这个后缀是,呃,这个 我我们看一下啊,这个是新啊,上面是三二,那三二的话就是默认,就是他默认一个白板,然后这个是三二油,他们俩的区别就是主要是这个这个模块是白仔 百载模块,然后这一个模块的话需要外接贴线,外接贴线的话下到的这个 wifi 距离更远一点, 然后再还有这个三二 d, 三二 d 的话,呃,我这个是定制的呃,里面有十六兆的抽储扣件,然后这个是 e i p esp 三二啊,高 s 二, 他这个 esp 四二可不是一种,他这个就是没有蓝牙,是单核的一个 cpu, 还有好多地方可能是不一样的,就是 l 口更多, 哎。再就是还有这一款,这一款的话 esp 三他是把这个 l 口给呃缩,就是有有些 l 口没有演出啊,我们可以看到啊,他们大小是还是区别蛮大的,嗯, 大概就是这样子,他们 esp 三二啊,只要不是 s 二就是,主要不是 s 二的话啊,他们都是几乎是功能是都是一样的,就是他的区别就是这个 啊,这这几款所有的芯片区别就是区别在他的筹筹器大小上,还有一款他的这个三 二是他自带抽储器,我们可以看的啊,这些模块里面都是都集成了这个主芯片,然后还集成了一个抽储器斜片啊,记住,如果你没有啊,没有就是专业仪器开发,这个无线部分 建议就是买车这种卸车的模块,如果你有无线这些设备,可以开发这个百载天线或其他的这些射频测的。呃,测射频的一些仪器的话,你可以自己设计,就是采用芯片可以进自己设计。 呃,那我们这 esp 四二讲完了,接下来我给大家带大概说一下这个啊,八二六六,这个就是这个市面上经常能买到这个 exp 八二六六的一个开发板,然后我底下摆的 也就是大多数这个啊, esp 这个 esp 八二六六现在已经卖了好多年,还有一种就是有八个角的,我 啊 es 八二六六,还有这一种,这个上面有八个角,后面都写 l 口的,然后这这些就是他的一些啊,好多这个模块。 esp 八二六六的一个模块,他们后面都写拐角。这 这个 esp 八二六六就是主要的是特点就是他自带 wifi, 可以直接连接这个揣口到这个蓝牙到 wifi 模块使用啊,也可以就是用这些 啊,他本身带的 l 可控制一些东西,因为现在这些智能家居的和这个好多地方都使用了这个 es 八二六六,因为他的价格比较低啊,所以使用的也是很广泛的。然后再就是 啊,这个 ex 八二六六啊,做一些开发的话,可能就是 l 口比较少,然后功能的话可能就是没有 exp 三十多,但是他的优点就是价格低, 然后他的种类也就是分好多种,你具体要根据你自己的这个设计的项目来决定他这个是有哪一款,要小体积和这个,呃, 可以就是要么体积小的,要么就是这些啊,可以使用直接卸车的开发板,如果你使用模块的话,你可以要带动买一个 usb 转叉口,带自动下载行片的,带带自动下载程序的一个啊,模块就是他的下载线,我以前 介绍过,大家可以翻到就是 usb 折插口,有 cp 二一零四做的这个 usb 折插口自动下载线啊,视频大家可以前面看一下, 然后再就是这个 esp 三二啊, esp 三二的话我刚才已经说了,他有好多功能,而且他的价格现在相对市场上这个 stm 四二的鞋片来说,价格也是很便宜的,要比他们低多了,因为今年 这二一年的市市场上这个芯片价格也是很高的。那今天我就给大家就是说这些 usb 三二的模块 啊,然后 esp 三二的话,它上面有蓝牙,有 wifi 啊,还有这个啊, dsc 这个输出啊, adc 输入啊,还有其他 lc 了 这个串口等好多这个功能啊,比方说你做一些小车了,做一些啊,这个智能家具控制 啊,然后做一些视频视频,比方这个还有做视频远程,这个视频小车都可以很快的做出来。 而且啊,这个 esp 三二有好多种,这个变异器大家可以使用啊,我经常使用的是有耳洞的变异器,然后进行给他下载代码,然后当然你还有可以用派森,然后可以用 这个 exp 三管法。提过这个变异器啊,还有啊,好多好多这个变异器,这也可以给他进行一个编写代码,然后编写完,然后通过这个啊,他们提过这个下载软件,可以给他下载程序, 也可以用有发射器,然后进行给他,然后我大概我大部分时间是用的是,而对于呢这个 ufb 找车口给他下载程序, 那说了这么多,就是啊,这也是我们国产的一个芯片和模块吧啊,价格也是比较 性价比比较高的一些,这个模块他不只是可以当 wifi 模块,而且还可以直接当一个 cpu 和开发模块。那今天我就硬件就介绍这里 啊,下下一节我将会给大家介绍这个啊,短口,他的短口这些功能还有呃,使用时候要注意哪些事项?那好了,今天就介绍这里,感谢大家观看。

不管你学习什么单片机,最简单的外设莫过于 g p i o 口控制 l e d。 本节课向大家介绍如何使用 micro python 控制 e s p 三二的 g p i o。 输出。 首先我们讲讲引脚,引脚又叫管脚,英文名叫聘。这些引脚其实是从 e s p 三二芯片内部引出来的。我们可以看到啊,每个引脚都标了自己独特的名字,其中有一类引脚叫 g p i o。 引脚不责输出或输入电压。 开发板上 d 开头的引脚都是这类引脚,比如第二、第四、第十五等等。输入我们暂时不讲,这里我们先讲讲输出。简单来说啊,每个 gpio 都可以输出高低电瓶,那就有小伙伴问了,什么是电瓶?在逻辑电路中呢?高于某个数 值的电位称为高电位或高电瓶,低于某个数值的为低电位或低电瓶。比如 esp 三二中,高电瓶的数值大于二点五伏,低电瓶的数值小于零点五伏。具体的数值呢,最好通过测试来确定。 接着我们来了解一下 led。 led 就是发光二极管,它具有单向导电性,通过五毫安左右的电流即可发光,电流越大,亮度越大,但如果通过电流过大,就会烧毁二极管。所以我们一般把电流控制在三毫安到二十毫安之间。 为了限制通过 led 的电流不要太大,我们通常会串联一个电阻,因此这些电阻又可以称为限流电阻。当 led 发光时,测量其两端的电压约为一点七伏,这个电压呢,又叫做发光 二极管的导通压降。由于电流只能从阳极流入阴极,所以我们该如何区分正负极呢?这个很简单,我们看这个 led 图片啊,呃,长较的就是阳极,短较的就是阴极,阳极与电源相接,阴极呢就接地, 因此我们的电路可以这么接, led 的阳机接 d 十二阴角,并串联一个一千欧的电阻,阴极呢就接 gnd。 需要注意的是一定要接电阻,不然会由于电流过大烧毁 led。 ok, 那咱们现在就可以来敲代码了。首先呢,咱们第一个实验就是要点亮一颗 led 灯,如果我们想要点亮这颗 led 的话,只需要先设定这个相关的引角为输出模式,然后呢给这个引角附一个高电瓶 立刻,所以我们的代码呢可以这么写,硬 e, 这个要使用的 l e d 的引角,它的数据类型呢就是 in 特整形 l e d p 十二。接着呢,我们在 set up 函数里面设定这个引角为输出模式, 那咱们就需要使用到上节课我们讲的这个拼 mod, 拼 mod 的第一个参数是这个引脚序号 led 杠拼。第二个呢就是我们要设置的模式,可以是 input, 也可以是 output, 这里我们写成 output, 然后我们就可以点亮这颗 led 了,我们刚才也说了啊,点亮 led 呢,说白了其实就是给这个银角布一个高电瓶的一个值,高电瓶也就是一低电瓶就是零。但是这里呢,我们用这个 high 和漏来表示,这里 两个单词实际上是一个红,定义,他们的本质呢,其实就是一和零。那我们就需要用到上节课我们讲的这个低级头 rat, 第一个要填的也是 led 钢拼,第二个呢,我们要填写的是嗨, 然后我们就可以编译验证一下这段代码,看看有没有什么报错,检查一下咱们的代码写的是否正确。编译成功,那我们就可以烧录我们的代码了,我们需要注意哈,在我们烧录代码的时候,一定要按住开发板上的布特按键,现在他就连接成功了。 呃,没亮是因为什么啊?我这个摄像头断了,我重新连接一下,我们看现在我们的 led 就被点亮了,我们现在已经成功点亮一颗 led 了,接下来可以尝试一下稍微复杂一点的逻辑,比如让这颗 led 闪 函数,其实实现 led 闪烁的原理很简单,就是在咱们这个 loop 函数中,也就是我们的循环函数,使用 delay 延时函数,先给他一个高电瓶,然后给他一个延时,再给他低电瓶,再让他延时,之后呢就不断的循环这几个语句就行了。 所以我们的代码呢可以这么写,这个代码就可以先把它复制过来,放到下面,我们先点亮这个 led, 然后呢让他延时一秒啊, 那就是 dele, dele 的这个参数呢是毫秒,所以我们需要写一千,一千就是一秒,让他亮一秒,然后再让他灭一秒, 那就是笔记头 right led 杠拼 low, 也让它延时一秒,打, 继续 delay, 这里我们还是写一千,接着我们编译一下,编译完成后我们就上传代码, 上传的时候不要忘记按住 boot 键, 这样我们就实现了 led 闪烁的效果。


之前我们已经学习了如何使用 p w、 m 和 a、 d、 c 这节课,我们来学习如何使用 p s 二双轴摇杆来控制舵机, 这摇杆呢,一般在这个航母、无人机、遥控车、云台等设备上广泛应用,很多带有屏幕的设备也经常使用摇杆作为菜单选择的输入控制 双轴按键。摇杆主要由两个电位器和一个按键开关组成,两个电位器随着摇杆扭转角度,分别输出 x 轴和 y 轴上对应的电压值,而这种呢,他是向上的,按下摇杆呢,就可以触发这个按键。 在配套的机械结构的作用下,没有外力扭动的这个摇杆,初始状态下的他的两个电位计呢,都处在量程的中间位置。电位器我们之前说过, 就是可变电阻器,和咱们初中时候学的这个滑动变阻器呢,是类似的 ps 二摇杆模块呢,它有五个端口,分别是一个接电源的 vcc, 接地的接地和控制 x 轴输出、控制 y 轴输出、控制这个按键的三个输出引脚。 我们可以拨动这个 ps 二摇杆,然后随着这接触刷改变接触位置,这可变电阻器,也就是这个电位器,他的引脚处输出的这个电压就会发生改变。 x y 轴呢,是模拟输入信号,而 z 轴呢,它是数字信号,因此 x y 短口连接 a、 b、 c 引脚,而这个 z 短口呢,就要连接数字引脚。所以我们一共需要使用 e、 s、 p 三二的三个 g、 p l 引脚才能控制 p s 二摇杆模块。 其中两个模拟信号输入银角和一个数字信号输入银角,最后就是这个摇杆模块,他正常状态下,也就是不受力的时候,检测电压的常态在一点六五伏附近,最大值呢是三点三伏,最小值是零伏。 使用 esp 三二自带的 adc 触摸转换器的两个通道,分别检测 x、 y 轴的两个电压值的变化,就可以知道这个摇杆指向的位置了。 接着我们就可以来搭建电路了。首先我们先连接这个摇杆模块,我们让摇杆模块的这个正五福音角接 esp 三二的三点三伏, 一般情况下 e、 s, p 三二的 a, d, c 电压输入的范围是零到三点三伏,高于三点三伏可能会烧坏 a、 d、 c。 摇杆模块的接地呢就接接 d、 s、 w 呢,也就是咱们这个八成按键接的是第四引脚, s 轴呢接第十五, y 轴呢接。第二。接着就是咱们这个左边,它是一个舵机,这舵机呢接开发板另一侧的五伏引脚和接音地,而这个信号呢使用的是 gpl 十三, 那我们现在就可以来敲代码了。首先呢我们现在这个命令行中呢,让它实时显示这三个轴的一个值,那咱们第一步还是先导入模块 import 太模再 from 的模式 import p, 还有 a, d, c。 接着呢我们就定义摇杆的三个引角,一个是 ps 二 x, x 轴呢是 a、 d、 c, 这道引角呢是十五引角,我们还需要给他配置一下这个量程 量成了是零到三点三伏,所以就需要添加一个 a、 t、 n 杠十一 d, b。 接着我们定义这个 y 轴, y 定的引脚是二,后面一样。最后我们再定一下这个 z 轴, z 轴其实就是个按键,对不对?那就叫巴特,他就不是 adc 了,他是拼四引脚,然后模式呢?是入模式, 然后我们就可以写我们的循环,在我们的循环中呢,我们需要不断的打印这 x、 y、 z 三个轴的值,我还是喜欢用 f string 方法,比如我们第一个打印的 x 值,他就是 ps 二杠 x 也 read, 接着呢是 y, y 的值呢?是 ps 二,让 y 点 read, 最后是 z 轴,也就是咱们这个按键, z 轴呢,它是 ps 二,让八寸点 y 太溜了,我们不要让他显示太快,给他一个延时,每隔零点一秒显示一次吧。运行,我们看下结果, 我们来看一下啊,现在这个 x y 分别在这个范围来活动哈。然后我先控制 y 轴为零, y 轴最大四零九五, x 轴零, x 轴四零九五,我还可以旋转这个旋钮, 那两个都是零,两个都是四零九五,那按键再测试一下,按键按下之后 z 就变成了一。 既然咱们这个按键没什么问题,我们就可以使用这个摇杆模块来控制我们这个舵机。 那声明的这个摇杆引脚和导入模块这两个代码是一样的,我把它就复制过来。接着呢,我们还需要这定义舵机控制引脚,再添加程序啊。 舵机控制引脚,舵机占用的是十三引脚,然后舵机呢,他需要用到 p w m 模块,再添加一下 e w m, 那就是 my serval, 就等于一个 p w m p 十三,给他一个频率是五十,然后我就可以写这个循环了。 我们这个循环呢,因为我们只有一个舵机对不对?所以我们只需要读取这一个轴的模拟量的信号就行了,比如我们现在就只用 x 轴,那就读取 x 轴模拟信号,那就是叫 x y 六,就等于一个 ps 二 x 点瑞的。接着呢,我们还需要把模拟量这个信号转换成舵机的一个角度,再通过丢腿方法来控制舵机转动。我们之前在舵机那节课已经讲过了,舵机为零度的时候呢,这个脉冲信号宽度,也就脉宽是零点五毫秒,这是对应的零度, 零点五对应的就是零度在一个周期内哈,我们现在使用的这周期是五十,也就是二十毫秒,忘了的话,咱们小伙伴可以往前回去看看啊, 那最大值呢,就是一百八十度呢,对应的是二点四毫秒,二点四,二点五就差不多这个范围,毕竟 sg 九零呢,这个舵机他的精准度没有那么的高。二点四毫秒对应的就是这个一百八十度,而我们一会 会儿呢,要使用 p w m 模块儿的 duty 方法,这个 duty 它这个输出值的范围是在这个零到一零二三, 那所以我们这个角度该怎么计算呢?我们这个角度可以这么计算,那就是零点五,比如我要转动零度的话,就是零点五除以一个二十,再乘以一个一零二四,那就是零度对应的 youtube 要传入的这个参数。零度 那一百八十度,那一百八十度对应过来其实也就是二点四除以一个二十,再乘以一零二四, 所以我们这个舵机对那个角度参数就可以这么写,叫 several 杠 angle, 就等于一个角度 n 除以一个一百八十度,再乘以二点四毫秒,减去零点五毫秒除以一个二十, 最后呢再乘以一零二四或者一零二三,基本上没区别。但是我们这里啊,我们注意我们 x y 六它获得的值呢?它呢只是一个模拟量,对不对?它的范围呢,是零到四零九五, 其实没什么区别,摁是角度的时候,对应的是一百八十度,摁在这里已经不是角度了,摁在这里呢是一个模拟量,那直接比他一个良程,也就是四零九五,这样不就可以了吗?我们打印一下这个值, rent 一下 servo 杠 angle 运行。我们来看一下这个 n 没改过来啊, n 其实就可以是换成这 x y 六运行。我们来看一下,正常情况下呢, 他就是四十四,他这个转太快了啊,我们没有给他加一个延时 tam 点 sleep 二零点一秒运行,重新来,再看一下这个结果啊, 最小的时候是零,最大的时候是九十七,这一个值这么写啊,明显有个问题,咱们看啊,零度对应的是零点五,除以一个二十,再加上一个一零二四,也就说咱们最小的值呢,也就只可能是这个值,如果到零的话,就是出错了,对不对? 所以最后呢,我们其实可以加上一个零度这个范围,让他从零度开始转,我们重新运行一下, 嗯,最小的话就是零度, 最高呢就是这个一百二十二,这个一百二十二就很准确了,为什么我们拿计算器来算一下啊, 二点四除以二十,再乘以一零二四,得到结果就是一百二十二点八八,也就是说一百八十度对应的 duty 这个参数呢,就是一百二十二点八八。 而我们最小值呢,这二十五点六,那就是零点五除以一个二十,再乘以一零二四,你看这是不是就是二十五点六了? 那现在咱们就可以把这个值呢通过 my server 的 duty 方法给它传递过来了,那就 my server 让 angle 这就不需要打印了,我们重新运行一下。这里还有 这个问题啊,就是咱们这个 duty 这个值呢,它只能是整数,零到一零二三之间的整数,所以我们需要给它转换一下,就强制转换成整数运行,我们看一下现在, 哎,是不是零到一百八十度怎么就赚到了?我们现在呢只有一个舵机,所以只需要一个 x 轴就行了。如果我们有两个舵机的话,就可以给另一个舵机呢添加一个 y 轴,然后实现一个云台的一个效果。

这是一个普通的开关面板,他现在显得不够技术宅,所以我们要对他进行改造。改造分为三个步骤。第一个步骤是实现触摸和语音控制功能。第二个步骤是跟前台实现无线联动,可以在不同的地方控制整一个办公室的灯光和通风。 第三个步骤是接入互联网,在我们上班之前,我们就可以打开我们的空调和通风设备,让我们来到直接享受舒适的办公环境。好,现在开整。首先我们要拆开这个开关,测量他的尺寸,然后一顿掰扯, 有没有电哦,作为一个资深的电工,有没有电我摸一下不知道吗? 然后再随便设计两个电路板,这是打样出来的 p c、 b, 但是当时脑子有点抽,把这里盖油了,把焊盘都盖油了,然后再随便焊接一下,这是最终的成果。顺带一体,这里使用的主控是 e s、 p 三二、 s 三。 再随便写一个程序,再输入到 cpu 里。 弯腰去把电闸拉下来, 不要带电操作哦。大力出奇迹,直接给他来硬的。卧槽, 让我露一下,我要剪一根线。 ok, 然后先把这个控制板装上去, 简单测试一下会不会短路。 ok, 安全靠谱。 先通电试一下,看有没有接错线。 闸已经拉上了。冒不冒烟?就看这波操作了。嗨,热心开灯 嗨,热心关灯。先来测试一下第一排灯,第二排灯, 仓库的排烟。排烟是排这个切割机的激光切割机的人。嗨,热心开灯 嗨,热心关灯。 好了,我们的技术台开关已经改造完成,他实际上是一个很实用的开关,因为我们现在的布局变了,我已经不方便在这里安装开关,所以但是又线路又没有布置好,我要改到其他会很费事。用无线或者是语音 去联动的话,就会非常方便。第二步和第三步我们将在后面的视频里面再分享。还有就是这一个项目是完全开源的,无论是他的 p、 c、 p 还是电路图还是原程序,都是完成完全开源的。感兴趣的朋友可以去下载哦。