查看: 5084|回复: 28

[未解决] 小白的疑问

[复制链接]
发表于 2017-8-5 20:14 | 显示全部楼层 |阅读模式
  说来倒是惭愧,去年就开始接触arduino了,但是一直都没有坚持学习下去,主要一是因为个人比较懒,二是次要的吧,学业问题……,今年上半年再次提起信心来学习,并自己尝试做了个光立方。但是后来因为备考而耽误了1个月,现在打算利用暑假的时间来好好学习。我现在的层次还是比较低的,只掌握了语法的基本用法,IO口的基本调用,但是到后来的pwm和串口便觉得有些懵,对于书上的一些语句运用也绝非很熟练,有些甚至一知半解。很无奈呀,希望看到此贴的大佬指条路,不然我真得止步于此……
发表于 2017-8-5 20:41 | 显示全部楼层
绪论 认识机器人        7
第一章 智能LED        11
第1课 走进Arduino的世界        12
第2课 闪烁LED        22
第3课 按钮控制的LED        27
第4课 聪明的按钮        30
第5课 呼吸灯        34
第6课 光控LED        38
第7课 LED综合创意        43
第二章 智能风扇        47
第1课 声控风扇        48
第2课 换挡风扇        53
第3课 自动变速风扇        57
第4课 遥控风扇        60
第5课 摇头风扇        63
第6课 自动跟踪风扇        67
第7课 风扇综合创意        70
第三章 智能小车        73
第1课 走直线小车        74
第2课 跳8字舞的小车        78
第3课 避障小车        83
第4课 防跌落小车        87
第5课 巡线小车一        91
第6课 巡线小车二        96
第7课 小车综合创意        99
发表于 2017-8-5 20:42 | 显示全部楼层
2.Arduino与LED模块的连接
LED(Light Emitting Diode,发光二极管)是一种能够将电能转化为可见光的固态半导体器件,如图1.2.2所示。它可以直接把电能转化为光,具有体积小、耗电量低、高亮度低热量、使用寿命长的特点,是Arduino机器人作品中实现光效功能的最佳选择。LED发光模块具有红、绿、蓝等多种颜色,并且只能显示一种颜色,如图1.2.3所示。一般来说,LED接到Arduino上,需要串联限流电阻。
     
      图 1.2.2发光二极管                      图 1.2.3 LED发光模块
本书使用的LED发光模块是由DFRobot出品的数字食人鱼LED发光模块,如图1.2.3所示。该发光模块利用SMT将LED二极管焊在可爱的PCB板上,然后引出3P接口,我们通过3P线将LED发光模块插到Arduino的数字口上即可。
不管是LED发光模块还是连接到Arduino控制器的其他传感器,一般有三条连接线,分别为输入电压(标注为“+”或“5V”或“VCC”等)、输出信号(标注为“D”或“S”等)以及地线(标注为“-”或“GND”等),这三条线分别和Arduino控制器的数字口或者模拟口连接。这三条线分别连接电压、数字口或者模拟口、地。以LED发光模块与Arduino的连接为例,连接图如图1.2.4所示。

图1.2.4 控制器与LED发光模块的接连
接好线之后要记住接的针脚号,如图接的是数字针脚3。这里要提醒大家的是在接线的时候,黑色的线接黑色的针脚,即GND,红色的线接红色针脚,即VCC,绿色的线接信号针脚,即D。除此之外,数字针脚0和1用于计算机和Arduino之间的通信,其中数字针脚0用于接收信号,数字针脚1用于发送信号,所以在接线的时候数字针脚0和1不要接。
    3.制作闪烁的LED
数字针脚的值为1或0,即高电平或低电平,我们使用的这款LED发光模块,高电平可以点亮LED,而低电平则熄灭LED。
其中【延迟】模块的功能是上一个模块执行的持续时间,例如延迟1000毫秒,指的是上一个模块会持续执行1000毫秒。
发表于 2017-8-5 20:44 | 显示全部楼层
在上节课我们已经学会了制作闪烁的LED,即用程序来控制LED的变化,而控制的实现只能靠不同时间的间隔来表现一些特殊的闪烁方式,这好像有些呆板了,而且实际应用大都是利用外部信号来控制的,日常生活中我们的灯一般是通过开关来控制的,我们也先用简单的按钮来控制LED吧。
【任务导航】
1.认识按钮,正确连接电路;
2.制作“按钮按下亮,放开灭”的LED;
3.制作“按钮按下亮,延时一段时间,自动灭”的LED。
【材料阅读】
    1.按钮
按钮,也称为按键,是一种常用的控制电器元件,常用来接通或断开“控制电路”(其中电流很小),从而达到控制电动机或其他电气设备运行目的的一种开关。
我们使用的按钮如图1.3.1所示,也叫做按压式的开关数字输入模块,能够实现非常有趣的互动作品,该按钮模块使用大按钮加优质按键帽,使用方便可以做到“即插即用”。按钮有两种状态,即按下或者放开。我们使用的这款按钮按下是1(HIGH),放开是0(LOW),注意不同厂家生产的按钮可能不同。按钮模块与LED模块一样,也是接Arduino控制器的数字口,通常黑线接GND,红线接5V,绿线接数字针脚。


图1.3.1 按钮
    2.选择结构--【如果】
当我们需要判断某些结果来决定是否要执行不同的程序时,选择性结构是一个很方便的结构,判断结果决定是否执行内部的程序。选择性语句的判断有【如果】和【如果—否则】。在程序当中,若有以上几种结构,便会依据不同的条件选择,执行不同的程序片段,以达成不同的目的。这节课我们主要来学习【如果】模块。
选择结构【如果】的基本形式:

图1.3.2 选择结构—【如果】
其语义是:如果条件满足即值为真,则执行模块里面语句,否则不执行该语句。其过程可表示为图1.3.3。其中判断条件既可以是关系运算也可以是逻辑运算。

图1.3.3 选择结构

3.数字口的输入
     
(1)功能:读取指定数字针脚的输入值。
(2)参数:需要读取输入值的针脚号。
    (3)实例:含义是读取数字针脚3的值。
发表于 2017-8-5 20:45 | 显示全部楼层
波段开关
一般的开关如前面介绍的按钮只有两种状态即按下或者放开,如果说需要输出多个状态的话,我们还需要再接几个按钮到Arduino控制器上面,而波段开关它有多种状态。以DFRobot出品的波段开关为例,如图1.3.6所示,该模块波段开关是一种通过旋转来调整信号输出的开关。它只需要一个模拟口就能读取12个状态,大大节省了其他数字端口。而且这款波段开关具备12个档位,每个档位边上都有LED显示,产生炫酷的灯光效果,我们可以实时了解档位的状态,非常方便。

图1.3.6 波段开关
【挑战自我】
    请同学们尝试实现按钮按下LED亮,再按下LED灭。
发表于 2017-8-5 20:46 | 显示全部楼层
在前面的实例当中,我们都是用Arduino控制器来控制LED灯的亮或灭的变化。但是并没有体现LED的电压由高到低或者由低到高的变化,即中间过程没有得到体现。但有时要有,比如在KTV或演唱会上,为了达到很好的灯光效果,有时要使灯的亮暗渐变,即是个连续变化的过程。那我们能否实现呢?
【任务导航】
1.认识呼吸灯;
2.掌握PWM;
3.掌握模拟输出;
4.掌握当循环。
【材料阅读】
    1.呼吸灯
     呼吸灯,顾名思义,就是灯光在微电脑控制之下完成由亮到暗的逐渐变化,感觉像是在呼吸。广泛应用于手机之上,并成为各大品牌新款手机的卖点之一。如果你的手机里面有未处理的通知,比如说未接来电,未查收的短信等等,呼吸灯就会由暗到亮的变化,像呼吸一样那么有节奏,起到一个通知提醒的作用。
    2.PWM
现今多数系统皆采用数字控制的方式,由核心微处理器接收回传的感测信息,并针对与目标的差值再调整输出。而数字信号只有0与1两种变化,怎么调整输出值的大小满足需求呢?这时我们可以将数字信号转化成模拟信号,这就需要我们的PWM了。
脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,它可以将数字信号转化为模拟信号。
Arduino Romeo控制器的数字口上有6个针脚支持PWM信号,即3、5、6、9、10和11。PWM的输出值为0~255,LED发光模块接到这几个针脚上面,就可以控制LED的亮度,不会只有单纯的亮跟灭两种选择。这里要注意的是LED发光模块是可以调亮度的,有些LED发光模块不能调节亮度,即便插在这个针脚上面,也无法控制LED的亮度。本书用的LED发光模块是可以调节亮度的。
   3.模拟针脚的输出
     
(1)功能:将指定的值给模拟口。
(2)参数:Pin是需要输入值的针脚号;Value的取值为0~255之间的任意值。
    (3)实例:意思就是将模拟针脚3的值设定为255。
4.当循环
前面介绍的选择结构只能判断一次,只有程序流程重新来过时,才会再次判断。而某些情况下还需要条件满足的时候不断地重复执行某些语句,这就需要循环型的控制语句如重复循环或当循环了。
当循环的基本形式:

功能描述:当条件成立即为真(1)的时候,执行循环体内的语句,且循环体会重复执行;当条件不成立的时候即为假(0)时,跳出循环体,结束循环。如果条件始终成立,则会进入死循环,循环体一直执行下去。
发表于 2017-8-5 20:46 | 显示全部楼层
可以从不同的维度对传感器进行分类,这里我们只介绍以其输出信号为标准对传感器进行分类,可以分为:
模拟传感器——将被测量的非电学量转换成模拟电信号,如声音传感器、光线传感器等。
数字传感器——将被测量的非电学量转换成数字输出信号(包括直接和间接转换),如寻线传感器、防跌落传感器等。
开关传感器——当一个被测量的信号达到某个特定的阈值时,传感器相应地输出一个设定的低电平或高电平信号,如按钮。
其中开关传感器以及数字传感器统称为数字传感器。
2.光线传感器
光线传感器也称环境光线传感器,本书使用的光线传感器是由DFRobot出品的模拟环境光线传感器,如图1.6.2所示。该传感器模块可以用来对环境光线的强度进行检测,通常用来制作随光线强度变化产生特殊效果的互动作品。
发表于 2017-8-5 20:47 | 显示全部楼层
可以从不同的维度对传感器进行分类,这里我们只介绍以其输出信号为标准对传感器进行分类,可以分为:
模拟传感器——将被测量的非电学量转换成模拟电信号,如声音传感器、光线传感器等。
数字传感器——将被测量的非电学量转换成数字输出信号(包括直接和间接转换),如寻线传感器、防跌落传感器等。
开关传感器——当一个被测量的信号达到某个特定的阈值时,传感器相应地输出一个设定的低电平或高电平信号,如按钮。
其中开关传感器以及数字传感器统称为数字传感器。
2.光线传感器
光线传感器也称环境光线传感器,本书使用的光线传感器是由DFRobot出品的模拟环境光线传感器,如图1.6.2所示。该传感器模块可以用来对环境光线的强度进行检测,通常用来制作随光线强度变化产生特殊效果的互动作品。
发表于 2017-8-5 20:48 | 显示全部楼层
1.Romeo控制直流电机
Romeo控制器不仅继承Arduino328控制器所有的特性,而且集成了电机驱动、按钮、IO扩展板、无线数据串行通讯等接口。由于本节课主要用到的是带动风扇的电机,这里就主要讲解一下Romeo中直流电机的控制。
控制LED是将LED模块直接连接到数字针脚,那么控制风扇是不是也将电机直接连接到数字针脚呢?当然不是,因为针脚直接输出的电流太小,无法带动电机转动,所以需要专门的电机输出——Romeo板的L298驱动。
Romeo中电机控制针跳线,将分配用于电机控制针脚为数字口4、5、6、7。拔掉跳线将释放数字口,电机控制器将被禁用。接线图如2.1.1所示,连接电机的地方变式电机驱动模块。另外,Romeo可以使用外接电源,也可不使用,通过跳线控制。

图2.1.1 电机接线图
Romeo控制电机有两种模式:PWM模式和PLL模式,这里我们用到的是PWM模式,PLL模式在视野拓展中会有介绍。通过改变两个数字IO针脚和两个PWM针脚的PWM对直流电动机控制端口实现。如表2.1.1是PWM控制模式的针脚分配,图2.1.2是对应的实物。其中,M1是电机1,M2是电机2。
表2.1.1 PWM针脚分配
针脚        功能
4        电机1的方向控制
发表于 2017-8-5 20:49 | 显示全部楼层
5        电机1的PWM控制
6        电机2的PWM控制
7        电机2的方向控制

图2.1.2 PWM控制模式
2.模拟声音传感器
模拟声音传感器在第一章进行了简单的介绍,这里再具体介绍一下。它是一款简单、实惠的电子耳朵,它能“听到”声音的大小,并转化为模拟信号。通过模拟反馈电压信号的大小值体现环境声音的大小。要一个简单的3芯数据线就能将它连接到“大脑”Arduino控制器。Arduino在“听到”不同强弱的声音后做出你设定的反应。它是基于麦克风为声音检测的传感器,可用来对周围环境中的声音强度进行检测,具有300倍的放大器,输出模拟信号能使用3.3V和5V为基准AD采集,可以用来实现根据声音大小进行互动的效果、制作声控机器人、声控开关、声控报警等。实物如图2.1.3所示,接线时注意连接模拟针脚。

图2.1.3 模拟声音传感器
【动手操作】
活动主题:制作我的声控风扇
同学们在了解了相关的知识后,可以自己制作本课的声控风扇了,我们用到的器材主要是Romeo板子、模拟声音传感器、风扇(带直流电机)。
1.硬件搭建(声控风扇的连接)
在连接物理电路时,需要注意:模拟声音传感器接到模拟口(程序中,传感器连接的是模拟口1,电机接的是M1接线柱)。
2.参考程序
(1)读取模拟声音传感器的值

图2.1.4 读取模拟声音传感器的值
(2)声控风扇

图2.1.5 声控风扇
【探究思考】
请同学们讨论一下,在生活中声控风扇可以用在哪里呢?哪些地方也用到了声音控制?
【视野拓展】
1.直流电机的控制方式
直流电机是将直流电能转换成机械能的装置,是目前应用最广泛的一种机器人驱动器件,具有效率高、调速性能好和起动转矩大等特点。直流电机应用磁感应原理将电能转换为机械能,在磁场中放入通有电流的导体就会产生磁感应效应。
图2.1.7中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。在这里,4个三极管组成H的4条垂直腿,而电机就是H中的横杠(注意:图2.1.7及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。
如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。

图2.1.6 H桥驱动电路示意图
要使电机运转,必须使对角线上的一对三极管导通。例如,如图2.1.8所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐

Blynk与m5stack basic以及uiflow的交互玩法
Blynk与m5stack basic以及
Blynk与m5stack basic以及uiflow的交互玩法 [准备工作我们假设玩家已经熟悉下面的准备
求大佬帮助
求大佬帮助
有没有大佬能帮我把这个转化成c语言的啊,萌新完全看不懂 顺便弱弱的问一句如何将多个
VSCode写Arduino提示无法打开源文件"avr/pgmspace.h"
VSCode写Arduino提示无法
整个程序就这点内容,只是做个测试。 Ctrl+Alt+U的上传是没有问题。但是这里有个错误
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
【原创】 drawbot平面关节scara机械臂写字机 画画机器人直播...
【原创】 drawbot平面关节
这个项目上个月就在做了,结构和代码反反复复改了多次,加上自己又太忙,一直没来得及
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表