首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

圣诞节撩妹指南:教你做一棵BlingBling的圣诞树!

RoboMaster 技术智囊团,用简单的方式带你入门机器人知识,每周日准时更新。

大家好,我是一个 IT 女孩,虽然每天都在实验室搞技术,但我也很注重打扮,口红都涂“杨树林”,敲代码到深夜也不忘敷面膜。作为一个精致的 IT 女孩,不仅要懂技术,还要会用科技点缀自己的生活,在繁重的生活压力下寻找乐趣。

明天就是圣诞节了,有很多朋友送了我礼物,但我觉得那些礼物都不够特别,体现不出新时代 IT 女孩的气质。所以,今天我要教大家过一个与众不同的圣诞节!

如何用技术过一个与众不同的圣诞节?最简单的就是做一棵 BlingBling 的圣诞树!手工圣诞节,不仅显得心灵手巧,还特别有节日的温馨气氛,最适合我们这种有内涵的女孩。所以,我要教大家做一棵 BlingBling 的圣诞树

BlingBling 圣诞树

男孩子学会了不要忘了给心爱的她(他)一次难忘且浪漫的圣诞,坚强的女孩子也可以像我一样自食其力做一个精致女孩!

想要做 BlingBling 的圣诞树,首先,我们要有一棵树!如何获得一棵树呢?请在某宝搜索“圣诞树种子“,买到种子后,细心灌溉等待它长大,我们就有一颗树啦。这棵树究竟能长到多少米,就取决于你怎么照料它了。

发芽长大的圣诞树

好的,现在有了一棵树,我们还要为圣诞树挂上漂亮的(可以吸引妹子的)外衣。

可以吸引妹子的外衣,我想到了三个方案:

1、挂口红:女孩最喜欢口红了,看到挂了一树的口红,一定会心花怒放!但研发是个氪金行业,我买不起那么多口红。

2、挂包包:包治百病,女孩的柜子里永远少一个包包!但是这不符合我的专业特性。

3、挂灯泡:女孩最喜欢玻璃瓶里装着亮晶晶的东西了,灯泡简直完美选择。但是灯泡是易碎品,摔碎了会破坏气氛。

好的,三个方案都失败了,作为一个精致女孩,我还是不知道该如何讨女孩欢心。

就在我苦恼的时候,忽然灵光一闪,要不就挂 LED 灯吧,它不仅有 BlingBling 的外表,而且便宜,耐摔。前段时间很火的“网红气球”就是将一根很细的 LED 彩灯环绕在透明气球的表面。

LED 灯气球

LED 灯是啥呢?LED 是发光二极管(Light-emitting diode)的英文缩写。发光二极管是一种能够发光的半导体电子元件,和二极管一样是正向导通、反向截止。也就是,正着接线会亮,换一个方向接线就不会亮。

直插式的 LED 灯珠引脚一长一短

可以区分正负极

我们想要 LED 灯一闪一闪的,总不能给每颗灯安装一个开光,然后躲在树后面不停地给每颗灯开关开关开关吧?为了优雅地玩 LED 灯,我们引入一个很牛×的东西——微控制器。

微控制器(microcontroller),是把中央处理器、存储器、定时/计数器(timer/counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机,也叫单片机。

单片机

如果看不懂的话,可以想成,它能够收集和处理信息,然后控制 LED 灯按照我们设定好的方式亮灭,取代了我们躲在圣诞树后面开关开关开关。

它的最大优点是体积小,可放在仪表内部,虽然存储量小,输入输出接口简单,功能较低,但它小到 LED 灯亮灭,大到电机转动,控制起来都易如反掌。

单片机

单片机的种类有很多种,精致女孩我选择的是stm32 系列(意法半导体公司推出的基于ARM Cortex-M系列内核的 32 位单片机),为什么选这个系列呢?因为它好用,被广泛应用在嵌入式系统中,相关学习资源也非常丰富,一些机器人比赛也是用这一系列的芯片作为机器人的主控芯片。

机器人比赛

为了省事,我们可以不用手动将单片机焊到电路板上,而是直接使用开发板。开发板是一个成熟的单片机开发的平台,也就是一块电路板,上面包括单片机等一系列硬件组件,不用额外焊接元件就能用,一般用来嵌入式开发。

开发板

LED 灯要多少颗呢?当然是越多越好,这样才够闪亮,够精致。但是突然想到要手焊 100 个 LED 灯,我不禁虎躯一颤。急中生智的我立马网购了一条 LED 灯串,机器帮忙把灯焊成一串的感觉真是美滋滋。

想象一下,最后 LED 灯和开发板连起来,大概是这样子的,看起来还不错:

开发板连接 LED 灯

实操做出 LED 灯之前,我们先来列一下物资清单,看看都需要哪些材料:

瞄了一下,看起来也不贵嘛,还在精致女孩的承受范围之内,那接下来我们就开始实操啦。

了解整体原理图

单片机并不是靠我们的意念控制的,我们要往里面注入我们的想法,比如多少灯会亮、多久亮一次、一次亮多久等等......这就需要我们根据电路的原理图,通过编程来控制单片机执行我们的命令,这样才可以实现 LED 灯的控制。

我们来看一下整个电路的原理图,它包括两个部分:一个是外设 LED 电路(LED 灯部分),另一个是单片机的最小系统(开发板部分)

原理图

图中右下角就是 LED 电路,也就是那 100 个并联的 LED 啦(因为画起来太费劲所以只画了一部分)。为了控制方便,营造出一闪一灭 BlingBling 的效果,我们把 LED 画成正反交替的样子,正着通电会亮一半,反着通电亮另一半。

外设 LED 电路

除了外设电路,其他部分都是最小系统。最小系统是指用最少的原件组成单片机可以工作的系统。黄色的框框是单片机,连着黄框的横线是引脚,其他是辅助单片机工作的部分。

最小系统主要包括电源,时钟电路,复位电路等。时钟信号是单片机的心跳,整个电路跟着心跳的节拍运行才不至于混乱,时钟频率决定了单片机运行一个指令周期的时间。复位电路就是图中与 RST 引脚相连的那一块电路,里面有个按键,按下按键,单片机就会重回初始状态,就像电脑故障时你都会想“重启电脑”一样。

复位电路

单片机输出信息控制 LED 灯要通过 GPIO 端口(General-purpose input/output,通用型输入输出的简称),GPIO 的引脚可以通过编程来实现输出、输入或其他功能。图中的 PA、PB、PC 中的 P 就是 GPIO 的缩写。

GPIO 端口

stm32 的 GPIO 端口可以通过编程控制 IO 口输出高低电平。输出高低电平有什么用呢?精致的我手绘了一个简图,图中有 4 个正反交替的 LED,分别标号 1、2、3、4。

我们把 A、B 两端分别接在芯片的两个引脚 a、b 上。通过编程控制 a 输出高电平(对 stm32 来说就是 3.3V), b 输出低电平(对 stm32 来说就是 0V),这时 1 和 3 就会发光,反之,2 和 4 就会发光。如是交替控制两个引脚输出高低电平就实现了控制 LED 交替闪烁。

a 输出高电平

很好,开发板非常完美,单片机不仅能正常地运转,也可以输出信息控制灯。我们再把 LED 灯串的电线正负极,用电烙铁分别焊接到单片机的引脚上,LED 灯就和开发板连起来了,然后就差把我们的意念(LED 灯闪烁方式的程序)告诉单片机了!

原理图中使用的 stm32f405RGT6 芯片是 f4 系列的芯片,实际我使用了一块 stm32f7 系列的开发板,但两个系列芯片编程的过程和本质是基本一致的。对于想进一步了解学习 stm32 微控制器的同学们,推荐买一块 f1 系列或者 f4 系列的开发板学习。通常一块开发板上会有很多有趣的外设,购买开发板也会附赠很多学习资料,只要掌握一点C语言的基础,自学起来非常方便。

编写程序

把意念告诉单片机,就要编写程序,将程序烧录到单片机中,打开电脑 ing……

C 语言是最基础、应用最广泛的语言,为了用它写程序,我们需要一个很牛×的编译器——Keil。Keil MDK-ARM 是支持 ARM 微控制器的一款 IDE(集成开发环境)。它包含了工业标准的 Keil C 编译器、宏汇编器、调试器、实时内核等组件。也就是,Keil 能将 C 语言代码转化为单片机能够理解的语言,同时还拥有强大的软件仿真调试工具,可以大大提高工作效率。

开发 stm32 一般有两种方式,库函数操作和寄存器操作,两种操作方式各有利弊。

库函数操作

可以理解为,一个仓库里有很多现成的函数,我们根据需求拿出来组合搭配,得到自己想要的效果。这种方式很快,但是代码的执行效率不高。

寄存器操作

寄存器就好比衣服口袋,我们把最常用的东西放在随身的口袋中,寄存器就是用来暂存信息的。直接对寄存器进行操作就是把数据写入到寄存器内部。但缺点是寄存器数目太多,配置起来时间成本比较高。

对于控制 LED 灯,利用库函数操作的方式开发起来更快速方便,所以今天我们就用库函数操作。调用库函数时,还需要一些文件来辅助使用,例如配置文件、库函数文件、编译生成文件等等,如果每次都做一份文件,就会很麻烦,所以大家会把这些必备的文件做成一个工程模板,每次编程的时候,在文件的基础上开发就好了。

现在我悄咪咪地打开学长的工程模板,可以看到学长的模板简洁明了、条理清晰,非常适合像我这种对寄存器茫然不知的人做开发。

工程模版

接下来,就要加自己的代码来控制 LED 灯的亮灭,我们在原来的工程上新建一个文件夹“HARDWARE”,然后在这里添加 led.c 文件。

新建 HARDWARE

有了 led.c 文件,我们还要新建一个 led.h 头文件,头文件的作用是提供函数的定义,供其他 .c 文件调用。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171224G0HZZO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券