Arduino理念

Arduino理念
Arduino理念

Arduino理念

Arduino的理念就是不要光说不练,要多动手做。我们不断追求更快更有利的方法来制作原型,利用双手探索更多的原型技术,并开发多方位的思维。

典型的程序思考模式偏向于单向思考,例如,如何从A到B;Arduino采用多方位思考模式,也许有时候会迷失方向,也有可能会发现新的目的地C。

把玩所有工具,找出意想不到的结果,这就是我们崇尚的Tinkering模式。在探索制作原型的过程中,我们可以选择一些套件,以便我们随时调用整块硬件和软件。

原型

原型是Arduino学习的核心:

我们制作东西,与其他物件、人和网络进行互动。我们找寻更快、更直接、更简单的方式来制作尽可能便宜的原型。

很多接触电子的初学者以为他们必须从头学起,但这根本就是浪费精力的做法:真正激发人前进的动力是快速看到成果。因此对初学者而言,他们的第一步应该是确认东西可以快速地制作出来而又能正常地运作,或是成果展现时能激发他人投资的欲望。

这就是为什么我们要发明“取巧原型制作法”(opportunistic prototyping):当我们可以改装一个现成的由大公司和优秀工程师们开发的精密设备时,还有什么必要花费大量精力和时间从零开始呢?

譬如说,大师James Dyson试了5127种吸尘器原型,才做出满意的成品(https://www.360docs.net/doc/647872334.html,/jd/1947/asp),我们直接从他的成果中学习就好了。

Tinkering

我们相信探索任何硬件与软件的可能性是非常必要的——有时并没有非常明确的目的。

利用现有的技术,尽量使用一些廉价或者废弃的旧设备,尝试改造它们并做出全新的东西,这就是最好的Tinkering。

Patching

我对于使用简单的模块构建复杂的系统很感兴趣,最具有代表性的作品就是Robert Moog所制作的模拟电子音乐合成器。音乐家利用各种方式来连接不同的模块,从而编制出新奇的声音,这样的方式虽然让合成器看起来像是电话配线箱,但如果与一些旋钮结合,便能成为创新音乐平台。Moog形容这是一种“探索和见证”的过程。我相信大多数音乐家一开始都不懂这上百个旋钮的效果,但他们会不断地去尝试,找出适合自己风格的音乐。

减少创作过程的中断次数,对于整个创作流程是非常重要的。因为没有太多障碍和开发过程,更有利于激发创作的想法。

这样的编程概念在软件中被称为“视觉化编程”环境,例如MAX、Pure Data或者VVVV。这些工具可以把不同的功能包装成“方块”,使用者可以按照自己不同的需求将方块连接起来。这些软件让使用者不须要被写代码所困扰,同时也能够体验到写代码的乐趣。如果采用传统编程方式,常常是一个令人受挫折的过程:编程,编译,该死!——出现错误,找错,重新编译,再执行。如果你的思考逻辑比较视觉化,建议你可以尝试上述这些工具试试看。

改装电路

改装电路是Tinkering最有意思的方式之一:让一些低压电路、电池供电的电子音频设备备(像吉他音效器、小孩们的玩具或者合成器)产生短路后制造出全新的乐器或者发声器。借此我们也可以深入了解“艺术的可能性”。电路改装源于1966年,Reed Ghazala无意中将一个玩具的扩音器和抽屉里的金属物件短路了,结果产生了一连串不同寻常的声音。我喜欢改装电路,因为它不需要任何理论上的解释或者专业知识就能创造出与众不同的装置。

改装键盘

经历了超过60年的发展历史,计算机键盘始终是人与计算机互动的主要工具。MIT媒体实验室的学术带头人Alex Pentland曾说道:“原谅我的表达方式,但是,连坐便器都比计算机智能,真的。因为计算机与外界是完全隔离的。”

作为Tinker,我们可以用一些新的方法来和程序互动,替换相关部件从而使装置能够感应到周遭的变化。把计算机键盘拆分之后,我们便能够看到一个简单又廉价的电子部件。键盘的核心是个小型电路板,通常是绿色或者咖啡色的双层电路板,'它负责接收键盘的输入信号。如果将连接键盘的线路移除,再用电线连接两个点,就会在屏幕上看到一个字母的输入。如果买一个能运动的传感器来连接键盘,每当有人在计算机前经过时,就会看见字母被输入。学习改装键盘,是制作互动装置原型与物理计算(Physical Computing)的关键基础。

我们爱垃圾

随着技术日新月异地变革,人们淘汰了很多使用旧技术的设备:旧的印表机、计算机,各式各样的办公设备、机械设备,甚至于军用器材都被丢弃。一直以来,这些过时的科技产物有很大的市场,特别是对于那些并不富裕的改装高手或者初学者。这个市场在意大利西北方向的一个城市lvrea,也就是Arduino的原创地,这个城市原是Olivetti公司的总部。他们从20世纪60年代就开始生产计算机,一直到90年代中期,他们把所有的计算机零件、电子元器件和各式各样的装置都丢弃在附近的废物回收厂。我们在那边花了很长的时间,用很低的价格收购任何可以回收利用的东西。当你可以用很少的钱就买到数千台扬声器时,你一定会想出一些好点子来利用它们。与其从零开始,不如从累积的破铜烂铁中找出可以再利用的零件。

改装玩具

就如前文所提到的电路改装,玩具是非常理想而又便宜的技术改装资源。现在市面上涌入很多低价位高科技玩具,让你能轻易试验不同玩具,并拼凑出创意,例如,会发出声音的猫或者是光剑。近年来,我不断灌输给学生们一个观念:科技既不可怕,也不是难以接近的领域。Usman Haqure和Adam Somlai-fischer所著的《Low Tech Sensors and Actuators》(https://www.360docs.net/doc/647872334.html,)清楚地描述了各种改装技巧,我个人也常常翻阅参考他们所写的书。

合作

使用者互相交流合作是Arduino成功的关键原则,通过Arduino世界论坛https://www.360docs.net/doc/647872334.html,,来自世界各地的使用者都能互相学习如何运用Arduino平台。Arduino团队鼓励使用者在当地建立论坛,也帮助访问过的每一个城市建立用户群。同时我们也建立了一个Wiki叫“Playground”(https://www.360docs.net/doc/647872334.html,/playground),让使用者记载他们研究的成果。令人兴奋的是,我们看到很多人愿意在网络上大方地分享知识来帮助其他人,这种分享与互助的文化是Arduino最自豪的部分。

Arduino 语法手册函数部分

Arduino 语法手册函数部分 摘自:函数部分 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入。详情请见digital pins。 语法 pinMode(pin, mode) 参数 pin:要设置模式的引脚 mode:INPUT或OUTPUT 返回 无 例子 ledPin = 13 语法 noTone(pin) 参数 pin: 所要停止产生声音的引脚 返回 无 shiftOut() shiftOut() 描述 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。 注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftOut(dataPin, clockPin, bitOrder, value) 参数 dataPin:输出每一位数据的引脚(int)

clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 value: 要移位输出的数据(byte) 返回 无 shiftIn() 描述 将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 shiftIn(dataPin,clockPin,bitOrder) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 返回 读取的值(byte) pulseIn() 描述 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) 语法 pulseIn(pin, value) pulseIn(pin, value, timeout) 参数 pin:你要进行脉冲计时的引脚号(int)。 value:要读取的脉冲类型,HIGH或LOW(int)。 timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒(unsigned long)返回 脉冲长度(微秒),如果等待超时返回0(unsigned long) 例子 int pin = 7; unsigned long duration;

完整word版,arduino制作各种歌曲

首先讲下简单的乐理知识,知道音乐是怎么演奏出来的自然就可以通过代码来进行编排了。 1.演奏单音符一首乐曲有若干音符组成,一个音符对应一个频率。我们知道到相对应的频率让arduino输出到蜂鸣器蜂鸣器就会放出相应的声音,这里有个表供大家参考: 2.音符的演奏时间我们知道了音符是如何演奏出来的,下一步就是控制音符的演奏时间。每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是生硬的一个调的把所有的音符一股脑的都播放出来。如何确定每个音符演奏的单位时间呢? 我们知道,音符节奏分为一拍、半拍、1/4拍、1/8拍,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播

放出来,音乐就成了。 好了我们看看如何将简谱翻译成对应频率和拍子。 以葫芦娃为例: 先看下左上角1=D这里,用的是D调,好那我们就看《音符频率表》中的D行(红色部分), 第一个音符是1 但上面有个点,所以对应的就是589,时间是一拍=1, 第二个音符6(没有点)就是495,时间也是一拍=1, 第三个音符5 即441,因为有下划线所以是半拍=0.5, ……以此类推 第四0这里要注意下,这里是没有声音,但是要是用频率0表示还是会有声音(这个不懂),所以我们用一个很高频率的声音,这样人耳听不到就达到了没有声音的效果,所以频率为-1。拍子=1拍

第五,再接着看到第一句歌词葫芦娃这个娃的音是3—,这表示是两拍,后面每加一个“-”,表示拍子+1(1+1),本例中最多是加到4. 第六,第二句歌词葫芦娃这个娃,3?带个点,点的意思是去3的拍子的一半,即3?的拍子是1+0.5 第七,大家可能会问那弧线怎么表示,这在音乐中属于连音,我们要表示的话,可以稍微改下连音后面那个音的频率,比如减少或增加一些数值(需自己调试),这样表现会更流畅,但操作上更复杂了,本例没有做连音的处理,大家有兴趣可以自己调整下。 所以说了一大堆,规律就是时间上单个音符没有下划线,就是一拍(1),有下划线是半拍(0.5),两个下划线是四分之一拍(0.25),有“—”=前面音符的拍子+1;频率上就是按照音符是否带点,点在上还是在下到表中查找就可以了。 至此原理清楚,随便拿个简谱来我们都可以翻译成代码了。 好,下面进入代码部分,来看下这首《葫芦娃》的代码: 01.#define NOTE_D0 -1 02.#define NOTE_D1 294 03.#define NOTE_D2 330 04.#define NOTE_D3 350 05.#define NOTE_D4 393 06.#define NOTE_D5 441 07.#define NOTE_D6 495 08.#define NOTE_D7 556 09. 10.#define NOTE_DL1 147 11.#define NOTE_DL2 165 12.#define NOTE_DL3 175 13.#define NOTE_DL4 196 14.#define NOTE_DL5 221 15.#define NOTE_DL6 248

ARDUINO入门及其简单实验7例

ARDUINO入门及其简单实验(7例) (1) 1. Arduino硬件开发平台简介 (1) 1.1 Arduino的主要特色 (2) 1.2 Arduino的硬件接口功能描述 (3) 1.3 Arduino的技术性能参数 (3) 1.4 电路原理图 (4) 2. Arduino软件开发平台简介 (5) 2.1 菜单栏 (5) 2.2 工具栏 (6) 2.3 Arduino 语言简介 (6) 3. Arduino开发实例中所用部分器件 (8) 1. LED简介 (8) 2. 光敏电阻简介 (9) 3. 直流电机简介 (9) 4. 电位器简介 (10) 4. Arduino平台应用开发实例 (10) 4.1【实作项目一】利用LED作光敏电阻采样实验 (10) 4.2【实作项目二】利用PWM信号控制LED亮度 (12) 4.3【实作项目三】单键控制一只LED的亮灭 (15) 4.4【实作项目四】利用PWM控制直流电机转速 (17) 4.5【实作项目五】利用电位器手控LED亮度 (19) 4.6【实作项目六】控制LED明暗交替 (21) 4.7【实作项目七】利用光敏电阻控制LED的亮灭 (23) ARDUINO入门及其简单实验(7例) 1. Arduino硬件开发平台简介 Arduino硬件是一块带有USB的I/O接口板(其中包括13条数字I/O引脚,6通道模拟输出,6通道模拟输入),并且具有类似于Java、C语言的集成开发环境。Arduino 既可以扩展一些外接的电子元器件,例如开关、传感器、LED、直流马达、步进马达或其他输入、输出装置;Arduino也可以独立运行,成为一个可以跟交互软件沟通的接口装置,例如:Flash、Processing、Max/MSP、VVVV或其他互动软件。Arduino 开发环境IDE全部开放源代码,可以供大家免费下载、利用,还可以开发出更多激发人们制作欲望的互动作品。

Arduino编程语言

Arduino编程参考手册 首页 程序结构变量基本函数

程序结构 (本节直译自Arduino官网最新Reference) 在Arduino中, 标准的程序入口main函数在内部被定义, 用户只需要关心以下两个函数: setup() 当Arduino板起动时setup()函数会被调用。用它来初始化变量,引脚模式,开始使用某个库,等等。该函数在Arduino板的每次上电和复位时只运行一次。 loop() 在创建setup函数,该函数初始化和设置初始值,loop()函数所做事的正如其名,连续循环,允许你的程序改变状态和响应事件。可以用它来实时控制arduino板。 示例:

控制语句 if if,用于与比较运算符结合使用,测试是否已达到某些条件,例如一个输入数据在某个范围之外。使用格式如下: 该程序测试value是否大于50。如果是,程序将执行特定的动作。换句话说,如果圆括号中的语句为真,大括号中的语句就会执行。如果不是,程序将跳过这段代码。大括号可以被省略,如果这么做,下一行(以分号结尾)将成为唯一的条件语句。

圆括号中要被计算的语句需要一个或多个操作符。 if...else 与基本的if语句相比,由于允许多个测试组合在一起,if/else可以使用更多的控制流。例如,可以测试一个模拟量输入,如果输入值小于500,则采取一个动作,而如果输入值大于或等于500,则采取另一个动作。代码看起来像是这样:

else中可以进行另一个if测试,这样多个相互独立的测试就可以同时进行。每一个测试一个接一个地执行直到遇到一个测试为真为止。当发现一个测试条件为真时,与其关联的代码块就会执行,然后程序将跳到完整的if/else结构的下一行。如果没有一个测试被验证为真。缺省的else语句块,如果存在的话,将被设为默认行为,并执行。 注意:一个else if语句块可能有或者没有终止else语句块,同理。每个else if分支允许有无限多个。

第十五课 Arduino 教程-- Arduino IO函数

第十五课Arduino I/O函数 Arduino板上的引脚可以配置为输入或输出。我们将在这些模式下解释引脚的功能。重要的是要注意,大多数Arduino模拟引脚可以按照与数字引脚完全相同的方式进行配置和使用。 引脚配置为INPUT Arduino引脚默认配置为输入,因此在使用它们作为输入时,不需要使用 pinMode()显式声明为输入。以这种方式配置的引脚被称为处于高阻抗状态。输入引脚对采样电路的要求非常小,相当于引脚前面的100兆欧的串联电阻。 这意味着将输入引脚从一个状态切换到另一个状态所需的电流非常小。这使得引脚可用于诸如实现电容式触摸传感器或读取LED作为光电二极管的任务。 被配置为pinMode(pin,INPUT)的引脚(没有任何东西连接到它们,或者有连接到它们而未连接到其他电路的导线),报告引脚状态看似随机的变化,从环境中拾取电子噪音或电容耦合附近引脚的状态。 上拉电阻 如果没有输入,上拉电阻通常用于将输入引脚引导到已知状态。这可以通过在输入端添加上拉电阻(到5V)或下拉电阻(接地电阻)来实现。10K电阻对于上拉或下拉电阻来说是一个很好的值。 使用内置上拉电阻,引脚配置为输入 Atmega芯片内置了2万个上拉电阻,可通过软件访问。通过将pinMode()设置为INPUT_PULLUP可访问这些内置上拉电阻。这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,LOW表示传感器开启。此上拉的值取决于所使用的微控制器。在大多数基于AVR的板上,该值保证在20kΩ和50kΩ之间。在Arduino Due上,它介于50kΩ和150kΩ之间。有关确切的值,请参考板上微控制器的数据表。 当将传感器连接到配置为INPUT_PULLUP的引脚时,另一端应接地。在简单开关的情况下,这会导致当开关打开时引脚变为高电平,当按下开关时引脚为低电平。上拉电阻提供足够的电流来点亮连接到被配置为输入的引脚的LED。如果项目中的LED似乎在工作,但很昏暗,这可能是发生了什么。 控制引脚是高电平还是低电平的相同寄存器(内部芯片存储器单元)控制上拉电阻。因此,当引脚处于INPUT模式时,配置为有上拉电阻导通的引脚将被开启;如果引脚通过

Arduino BLE 函数库中文

备注: Arduino Function: BLEPeripheral.connected() (缺失) Arduino BLE 函数库 描述 蓝牙低功耗(BLE)协议从蓝牙规范版本4.0开始。虽然以前的规范只允许制作一种无线UART,但该版本允许更智能的资源使用。结果是适用于大多数具有限制能量需求的芯片的低功率通信。BLE协议由多个角色组成。BLE节点可以作为外设,中央,广播和观察者。 广播角色周期性地发送具有数据的广告包。它不支持建立连接。理论上,广播机构的角色可以用于仅发射机的无线电。 观察者角色收听来自广播对等体的广告数据包中嵌入的数据。 中心是能够建立到对等体的多个连接的设备。中心角色始终是连接的发起者,并且基本上允许设备进入网络。 外设使用广告包来允许中心找到它,并且随后建立与之的连接。BLE协议经过优化,至少在处理能力和内存方面要求极少的外设实现资源。 中央和外围设备不得与客户端和服务器错误。他们之间没有联系。中央和外围设备可以是客户机,服务器或两者,具体取决于应用

数据结构 BLE数据结构分层组成。属性是定义的最小数据实体。属性被分组到服务中,每个服务可以包含零个或多个特征。这些特征又可以包括零个或多个描述符。 每个服务,特征和描述符都由UUID标识。 通用唯一标识符(UUID)是保证(或具有高概率)的全局唯一的128位(16字节)数字。您可以定义自己的UUID或使用标准的UUID。 每个属性都可以有权限。 权限是指定可以对每个特定属性执行哪些操作以及具体安全要求的元数据。 广告包(广播包) 广告包是周边中心知道可用的方式。在广告包中有关于外设的主要信息。广告包长度为31字节,并且必须符合减少内部有效信息数量的特定格式。如果中心想要进一步的信息,它可以发送一个扫描请求来请求另一个称为扫描响应的数据包,以便拥有其他31字节的信息。如果您没有足够的数据传输,并且31字节(或62个最终)广告数据包就足够了,您可以实现广播者角色并传输数据,而无需建立连接。如果您有更多的数据要传输,则必须执行外设角色进行传输。 有关广告包的进一步信息可以在此链接中找到,其中包含对此参数的基本介绍。 更多信息 在本节中,我们尝试简要介绍BLE标准。然而,BLE标准比这更广泛。如果你想加深一些争论,那里是链接到BLE标准规范: https://https://www.360docs.net/doc/647872334.html,/specifications/bluetooth-core-specification 有关BLE的其他有用信息及其在nRF52上的工作方式可以在北欧半导体网站上找到:https://https://www.360docs.net/doc/647872334.html,/index.jsp 北欧还提供了一个有用的应用程序,通过BLE与您的板进行交互。使用此应用程序可以读写特性并调试BLE通信: https://https://www.360docs.net/doc/647872334.html,/eng/Products/Nordic-mobile-Apps/nRF-Connect-for -mobile-previously-called-nRF-Master-Control-Panel 相关功能

arduino从零开始学

第1章进入Arduino的世界 欢迎来到Arduino的世界!Arduino是一个开源的开发平台,在全世界范围内成千上万的人正在用它开发制作一个又一个电子产品,这些电子产品包括从平时生活的小物件到时下流行的3D打印机,它降低了电子开发的门槛,即使是从零开始的入门者也能迅速上手,制作有趣的东西,这便是开源Arduino的魅力。通过本书的介绍,读者对Arduino会有一个更全面的认识。 本章知识点: Arduino的起源与发展 Arduino的特点 Arduino开发板简介 Arduino的未来展望 什么是Arduino 什么是Arduino相信很多读者会有这个疑问,也需要一个全面而准确的答案。不仅是读者,很多使用Arduino的人也许对这个问题都难以给出一个准确的说法,甚至认为手中的开发板就是Arduino,其实这并不准确。那么,Arduino究竟该如何理解呢

1.1.1 Arduino不只是电路板 Arduino是一种开源的电子平台,该平台最初主要基于AVR单片机的微控制器[1]和相应的开发软件,目前在国内正受到电子发烧友的广泛关注。自从2005年Arduino腾空出世以来,其硬件和开发环境一直进行着更新迭代。现在Arduino已经有将近十年的发展历史,因此市场上称为Arduino 的电路板已经有各式各样的版本了。Arduino开发团队正式发布的是Arduino Uno和Arduino Mega 2560,如图1-1和图1-2所示。 图1-1 Arduino Uno R3 图1-2 Arduino Mega 2560 R3 图1-1和图1-2所示的开发板就是所谓的Arduino I/O印刷电路 板(Printed Circuit Board, PCB)。 Arduino项目起源于意大利,该名字在意大利是男性用名,音译为“阿尔杜伊诺”,意思为“强壮的朋友”,通常作为专有名词,在拼写时首字母需要大写。其创始团队成员包括:Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti 6人。Arduino的出现并不是偶然,Arduino最初是为一些非电子工程专业的学生 [1] 关于AVR单片机的内容会在第3章进行介绍。

Arduino知识集锦

#Arduino 语法 setup() 初始化函数 loop() 循环体函数 控制语句类似于C //if if...else for switch case while do... while break continue return got o 扩展语法类似于C //;(分号) {}(花括号) //(单行注释) /* */(多行注释) #define #include 算数运算符类似于C //=(赋值运算符) +(加) -(减) *(乘) /(除) %(模) 比较运算符类似于C //==(等于) !=(不等于) <(小于) >(大于) <=(小于等于) >=(大于等于) 布尔运算符类似于C //&&(与) ||(或) !(非) 指针运算符类似于C //* 取消引用运算符 & 引用运算符 位运算符类似于C & (bitwise and) | (bitwise or) ^ (bitwise xor) ~ (bitwise not) << (bitshift left) >> (bit shift right) 复合运算符类似于C ++ (increment) -- (decrement) += (compound addition) -= (compound subtraction) *= (compound multiplication) /= (compound division) &= (compound bitwise and) |= (c ompound bitwise or) 常量 constants 预定义的常量 BOOL true false 引脚电压定义,HIGH和LOW【当读取(read)或写入(write)数字引脚时只有两个可能的值: HIGH 和 LOW 】 HIGH(参考引脚)的含义取决于引脚(pin)的设置,引脚定义为INPUT或OUTPUT时含义有所不同。当一个引脚通过pinMode被设置为INPUT,并通过digitalRead读取(read)时。如果当前引脚的电压大于等于3V,微控制器将会返回为HIGH。引脚也可以通过pinMode

林锋教你一步一步玩机器人(arduino)--制作篇(入门组件A)

林锋教你一步一步玩机器人(arduino)系列 ------制作篇 (入门组件上) ----- 张林锋/文 2012-5-28

目录 1 前言 (3) 2. 准备工作 (3) 2.1 元器件准备工作 (3) 2.2 实验板子准备 (4) 3 LED 实验 (5) 4 蜂鸣器实验 (7) 5.按键实验 (9) 6 8*8点阵实验 (11) 7 串口实验 (12) 8 模拟量输入(电压输入) (16) 9 直流电机控制(L298N驱动模块) (18) 10 PMW 脉冲宽度调试 (21) 11 控制舵机 (22) 12 超声波模块 (23) 13 巡线防跌模块 (26) 14 红外遥控 (27) 说明 写这系列文章主要目的是和读者一同分享下自己的学习过程,也希望能给读者带来一些帮助,文章部分内容剪裁网络文章,部分自己撰写。文章内容用于爱好者之间学习,不得用于商业目的。当然笔者才疏学浅,所书内容难免有缺点和漏洞,还请读者多多海涵,希望能和广大电子爱好者交流心得。 本人QQ:65198204 邮箱:65198024@https://www.360docs.net/doc/647872334.html, 博客:https://www.360docs.net/doc/647872334.html,/u/2775824690

1 前言 在淘宝买的Arduino 主板套件终于在26号到了,物流也太慢了,发了4天才到。套件包含:4轮小车,Arduino MEGA 2560 主板,配套的MEGA Sensor Shield V2.0扩展板,超声波模块,红外遥控模块,寻线防跌模块,舵机。套件是在27°寒语电子工作室(https://www.360docs.net/doc/647872334.html,/)买的,也就是科易互动科技的子站(https://www.360docs.net/doc/647872334.html,/)。 备注一下:套件性价比很高,也有配套的相关资料,不过个人觉得配套资料写的不够详细和全面,对于新手制作会带来很多不便。 在制作篇系列文章中,我会对入门组件的应用,以及4轮小车套件的制作,做出详细的制作流程,图文并茂。相信会对新手入门带来一定收获。 读者在做本文章实验时可以结合阅读我的相关入门知识文章,基本篇,硬件篇,软件篇。 制作篇分:入门上篇:主要介绍一些基础配件,以及小车所要用的器件。 4轮小车篇:主要介绍小车制作全过程。 入门下篇:主要介绍一些其他外围器件应用。比如:1602,12864液晶应用,时钟模块应用等。 4轮小车改造篇:加入自己的一些元素。 2. 准备工作 2.1 元器件准备工作 本篇实验器件所用到的元器件如下:(1)发光二极管(2)蜂鸣器(3)按键(4)可变电阻(5)8*8点阵(6)串口(7)直流电机(8)伺服电机(9)超声波模块(10)寻线防跌模块(11)红外遥控。 下面给我的全家福来个图,呵呵。

Arduino常用函数精编版

(1)pinMode(接口名称,OUTPUT或INPUT),将指定的接口定义为输入或输出接口,用在setup()函数里。 (2)digitalWrite(接口名称,HIGH(高)或LOW(低)),将数字输入输出接口的数值置高或置低。 (3)digitalRead(接口名称),读出数字接口的值,并将该值作为返回值。 (4)analogWrite(接口名称,数值),给一个模拟接口写入模拟值(PWM脉冲)。数值取值0-255。 (5)analogRead(接口名称),从指定的模拟接口读取数值,Arduino对该模拟值进行数字转换,这个方法将输入的0~5V电压值 转换为0~1023间的整数值,并将该整数值作为返回值。 (6)delay(时间),延时一段时间,以毫秒为单位,如1000为1秒。 (7)Serial.begin(波特率),设置串行每秒传输数据的速率(波特率)。在与计算机进行通讯时,可以使用下面这些值:300、1200、2400、4800、9600、14400、19200、28800、38400、57600或115200,一般9600、57600和115200比较常见。除此之外还可以使用其他需要的特定数值,如与0号或1号引脚通信就需要特殊的波特率。该函数用在setup()函数里。 Serial.available() 的意思是:返回串口缓冲区中当前剩余的字符个数。一般用这个函数来判断串口的缓冲区有无数据,当Serial.available()>0时,说明串口接收到了数据,可以读取;

Serial.read()指从串口的缓冲区取出并读取一个Byte的数据,比如有设备通过串口向Arduino发送数据了,我们就可以用Serial.read()来读取发送的数据。 while(Serial.available()>0) { data= Serial.read(); delay(2); } (8)Serial.read(),读取串行端口中持续输入的数据,并将读入的数据作为返回值。 (9)Serial.print(数据,数据的进制),从串行端口输出数据。Serial.print(数据)默认为十进制,相当于Serial.print(数据,十进制)。 (10)Serial.println(数据,数据的进制),从串行端口输出数据,有所不同的是输出数据后跟随一个回车和一个换行符。但是该函数所输出的值与Serial.print()一样。 常用函数 数字I/O类: pinMode(pin,mode)数字IO口输入输出模式定义函数,将接口定义为输入或输出接口。

Arduino教程(非常适合初学者)

Arduino 教程一 数字输出 教程一:
Arduino, 教程 11 Comments ?
Arduino 的数字 I/O 被分成两个部分,其中每个部分都包含有 6 个可用的 I/O 管脚,即管脚 2 到管脚 7 和管脚 8 到管脚 13。除了管脚 13 上接了一个 1K 的电阻之外,其他各个管脚都直接连接到 ATmega 上。我们可以利用一个 6 位的数字跑马灯,来对 Arduino 数字 I/O 的输出功能进行验证,以下是相应的原理图: 电路中在每个 I/O 管脚上加的那个 1K 电阻被称为限流电阻, 由于发光二极管在电路中没有等效电阻值, 使用限流电阻可 以使元件上通过的电流不至于过大,能够起到保护的作用。 该工程对应的代码为:
int BASE = 2; int NUM = 6; int index = 0; void setup() { for (int i = BASE; i < BASE + NUM; i ++) { pinMode(i, OUTPUT); } } void loop() { for (int i = BASE; i < BASE + NUM; i ++) { digitalWrite(i, LOW); } digitalWrite(BASE + index, HIGH); index = (index + 1) % NUM; delay(100); }
下载并运行该工程,连接在 Arduino 数字 I/O 管脚 2 到管脚 7 上的发光二极管会依次点亮 0.1 秒,然后再熄灭:
1

这个实验可以用来验证数字 I/O 输出的正确性。Arduino 上一共有十二个数字 I/O 管脚,我们可以用同样的办法验证其他六个管脚的正 确性,而这只需要对上述工程的第一行做相应的修改就可以了:
int BASE = 8;
SEP
01
Arduino 教程二 数字输入 教程二:
Arduino, 教程 3 Comments ?
在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。Arduino 从数字 I/O 管脚上只能读出高电 平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成 Arduino 能够读取的高/低电平。解 决的办法是通过上/下拉电阻,按照电路的不同通常又可以分为正逻辑(Positive Logic)和负逻辑(Inverted Logic)两种。 在正逻辑电路中,开关一端接电源,另一端则通过一个 10K 的下拉电阻接地,输入信号从开关和电阻间引出。当开关断开的时候, 输入信号被电阻“拉”向地,形成低电平(0V);当开关接通的时候,输入信号直接与电源相连,形成高电平。对于经常用到的按压式 开关来讲,就是按下为高,抬起为低。 在负逻辑电路中,开关一端接地,另一端则通过一个 10K 的上拉电阻接电源,输入信号同样也是从开关 和电阻间引出。当开关断开时,输入信号被电阻“拉” 向电源,形成高电平(5V);当开关接通的时候,输 入信号直接与地相连,形成低电平。对于经常用到的 按压式开关来讲,就是按下为低,抬起为高。 为了验证 Arduino 数字 I/O 的输入功能,我们可以将 开关接在 Arduino 的任意一个数字 I/O 管脚上(13 除 外),并通过读取它的接通或者断开状态,来控制其 它数字 I/O 管脚的高低。本实验采用的原理图如下所 示,其中开关接在数字 I/O 的 7 号管脚上,被控的发 光二极管接在数字 I/O 的 13 号管脚上:
Arduino 教程三 模拟输入 教程三:
Arduino, 教程 5 Comments ?
2

arduino语法手册函数部分

; Arduino 语法手册函数部分 摘自:函数部分 数字 I/O pinMode() 描述 将指定的引脚配置成输出或输入。详情请见digital pins。 语法 pinMode(pin, mode) # 参数 pin:要设置模式的引脚 mode:INPUT或OUTPUT 返回 无 例子 ledPin = 13 语法 … noTone(pin) 参数 pin: 所要停止产生声音的引脚 返回 无 shiftOut() shiftOut() ) 描述 将一个数据的一个字节一位一位的移出。从最高有效位(最左边)或最低有效位(最右边)开始。依次向数据脚写入每一位,之后时钟脚被拉高或拉低,指示刚才的数据有效。 注意:如果你所连接的设备时钟类型为上升沿,你要确定在调用shiftOut()前时钟脚为低电平,如调用digitalWrite(clockPin, LOW)。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定

脚有效。 语法 shiftOut(dataPin, clockPin, bitOrder, value) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 value: 要移位输出的数据(byte) ^ 返回 无 shiftIn() 描述 将一个数据的一个字节一位一位的移入。从最高有效位(最左边)或最低有效位(最右边)开始。对于每个位,先拉高时钟电平,再从数据传输线中读取一位,再将时钟线拉低。 注意:这是一个软件实现;Arduino提供了一个硬件实现的SPI库,它速度更快但只在特定脚有效。 语法 《 shiftIn(dataPin,clockPin,bitOrder) 参数 dataPin:输出每一位数据的引脚(int) clockPin:时钟脚,当dataPin有值时此引脚电平变化(int) bitOrder:输出位的顺序,最高位优先或最低位优先 返回 读取的值(byte) pulseIn() 描述 《 读取一个引脚的脉冲(HIGH或LOW)。例如,如果value是HIGH,pulseIn()会等待引脚变为HIGH,开始计时,再等待引脚变为LOW并停止计时。返回脉冲的长度,单位微秒。如果在指定的时间内无脉冲函数返回。 此函数的计时功能由经验决定,长时间的脉冲计时可能会出错。计时范围从10微秒至3分钟。(1秒=1000毫秒=1000000微秒) 语法 pulseIn(pin, value) pulseIn(pin, value, timeout) 参数

Arduino-教程-第15课-Arduino-IO函数

第15课Arduino I/O函数 Arduino函数库 Arduino函数库 1.Arduino I/O函数 2.Arduino 高级I/O函数 3.Arduino 字符函数 4.Arduino 数学库 5.Arduino 三角函数 Arduino板上的引脚可以配置为输入或输出。我们将在这些模式下解释引脚的功能。重要的是要注意,大多数Arduino模拟引脚可以按照与数字引脚完全相同的方式进行配置和使用。 引脚配置为INPUT Arduino引脚默认配置为输入,因此在使用它们作为输入时,不需要使用 pinMode()显式声明为输入。以这种方式配置的引脚被称为处于高阻抗状态。输入引脚对采样电路的要求非常小,相当于引脚前面的100兆欧的串联电阻。 这意味着将输入引脚从一个状态切换到另一个状态所需的电流非常小。这使得引脚可用于诸如实现电容式触摸传感器或读取LED作为光电二极管的任务。 被配置为pinMode(pin,INPUT)的引脚(没有任何东西连接到它们,或者有连接到它们而未连接到其他电路的导线),报告引脚状态看似随机的变化,从环境中拾取电子噪音或电容耦合附近引脚的状态。 上拉电阻 如果没有输入,上拉电阻通常用于将输入引脚引导到已知状态。这可以通过在输入端添加上拉电阻(到5V)或下拉电阻(接地电阻)来实现。10K电阻对于上拉或下拉电阻来说是一个很好的值。 使用内置上拉电阻,引脚配置为输入 Atmega芯片内置了2万个上拉电阻,可通过软件访问。通过将pinMode()设置为 INPUT_PULLUP可访问这些内置上拉电阻。这有效地反转了INPUT模式的行为,其中HIGH表示传感器关闭,LOW表示传感器开启。此上拉的值取决于所使用的微控制器。在大多数基于AVR的板上,该值保证在20kΩ和50kΩ之间。在Arduino Due上,它介于50kΩ和150kΩ之间。有关确切的值,请参考板上微控制器的数据表。 当将传感器连接到配置为INPUT_PULLUP的引脚时,另一端应接地。在简单开关的情况下,这会导致当开关打开时引脚变为高电平,当按下开关时引脚为低电平。上拉电阻提供足够的电流来点亮连接到被配置为输入的引脚的LED。如果项目中的LED似乎在工作,但很昏暗,这可能是发生了什么。 控制引脚是高电平还是低电平的相同寄存器(内部芯片存储器单元)控制上拉电阻。因此,当引脚处于INPUT模式时,配置为有上拉电阻导通的引脚将被开启;如果引脚通过

十个中文例程教会你轻松上手制作Arduino智能小车

十个中文例程教会你轻松上手制作Arduino智能小车 Arduino简介 Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino 板)和软件(arduino IDE)。适用于艺术家、设计师、爱好者和对于“互动”有兴趣的朋友们。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器对Arduino的编程是利用Arduino编程语言(基于Wiring)和Arduino开发环境(based on Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信(比如Flash, Processing, MaxMSP)来实现。 你可以自己自己动手制作,也可以购买成品套装;Arduino所使用到的软件都可以免费下载。硬件参考设计(CAD 文件)也是遵循availableopen-source协议, 你可以非常自由地根据你自己的要求去修改他们。 本文精选了Arduino教程、例程、设计案例,集结了国内外官方资料和资深工程师的经验,是学习AArduino的必备宝典。 小车、机器人篇 1、Arduino互动玩偶BOXZ 此设计制作在2013年Atmel AVR英雄视频大赛中荣获奖励,并且参与了2014的深圳制汇节。BOXZ,昵称盒仔,其创意始于2012年6月初。当时的想法是设计一款基于Arduino 的入门级机器人,可以和三五好友在有限的空间里进行踢足球等互动,而且要做到取材容易制作简单,在设计的上采用了模块化的接插结构,同时还要注重外观拥有个性。 2、基于Arduino的自平衡遥控小车 车模平衡控制也是通过负反馈来实现的。因为车模有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。 3 当自家的遥控蓝牙小车坏掉的时候不是只能扔掉,作为创客不但要学会制造东西,更要学会修理东西,来看看这位创客是如何修理他的小车的吧!小车采用大电流MOSFET做的电机驱动驱动电机,用Atmega328单片机作为主控,读取航模遥控器(天六A 2.4G)的PWM 信号,然后电机驱动板,转向舵机直接接到航模遥控器的横滚通道控制转向,用天六的第5通道(开关通道)选择前进还是后退 4、基于Arduino的盒子遥控机器人 BOXZ,昵称盒仔。是一款开源的互动娱乐平台!我们将Arduino,亚克力板和纸模型创意的结合在一起,让大家可以快速搭建自己的遥控玩偶,开展互动体验,而它的组装就像搭乐高积木一样简单!而盒仔的外形和功能完全取决于您的创意。我们可以用它来搞足球比赛,角色扮演,赛车或对战,甚至拍MV!

Arduino创意设计全解析

方案版权归爱特梅尔所有,不得转载,违者将追究法律责任 Arduino 创意设计大全 Atmel 最新的创意设计大全,先后奉上上百个创意设计,点亮你的设计之旅!基于AVR单片机的六足机器人、Arduino 互动玩偶BOXZ、智能读写姿势提醒器、基于AVR的无线音乐播放器等等创意DIY的设计制作全解析。 1、基于AVR单片机的六足机器人 本作品以8位AVR单片机ATmega32作为核心控制器,以TI公司生产的大功率集成稳压芯片LMZ12010作为供电系统的核心器件,以嵌入式C语言作为控制算法实现手段,以SolidWorks作为机械结构建模平台,以Altium Designer作为电子电路设计软件,以数控雕刻机作为工具实现机械结构的加工与PCB电路板的制作,初步设计完成了一个以三角步态法作为控制原理的仿生六足机器人。 该机器人功能如下: 1、普通六足蜘蛛和普通螃蟹两种行走模式; 2、红外无线通讯遥控控制; 3、12种仿生运行动作; 4、6种可调节运行速度。 该版本机器人利用定时中断法初步实现了18路舵机的同时控制以及18路舵机的速度调节。针对机器人对供电系统要求较高的特点,本作品设计了一种稳定、简单、可靠的新型电路供电系统。 2、Arduino 互动玩偶BOXZ BOXZ,昵称盒仔,其创意始于2012年6月初。当时的想法是设计一款基于Arduino的入门级机器人,可以和三五好友在有限的空间里进行踢足球等互动,而且要做到取材容易制作简单,在设计的上采用了模块化的接插结构,同时还要注重外观拥有个性。 BOXZ是一个开源的项目,所以大家完全可以自己制作一套独一无二的盒仔。 经过一年多的沉淀,我们的盒仔功能也越来越完善。从简单的入门机器人到现在的互动电子玩偶,材料也由裁切的硬纸板升级到激光切割的亚克力板。不仅如此,我们现在还提供了对传感器的支持,通过扩展不同的声光电传感器可以实现丰富的互动体验。3、智能读写姿势提醒器 这个使用Arduino UNO单片机和Ardublock软件编程来实现,所以很适合非专业的爱好者、中小学生来制作,其原理主要是利用超声波传感器检测头部与书本的距离,通过Led 发光管和报警声音,提醒使用者,及时纠正不良读写姿势,保护眼睛,预防近视。4、基于AVR的无线音乐播放器 本作品名是通过两个模块共同工作来实现无线音乐播放的功能。所含两个模块分别是发送模块和接收模块。 发送端(即发送模块)通过主控制器读取SD卡中储存的音频文件,并通过射频电路发送出去。发送端采用ATmega128作为主控制器,射频电路则使用nRF24L01模块。 接收端(即接收模块)通过射频电路接收由发送端发出的数据,并通过主控制器将数据缓存后,通过脉宽调制(PWM)的形式产生音频,最后经低通滤波处理后输出音频。接收端采用ATmega32作为主控制器,射频电路使用nRF24L01模块。 另外,用户能够从接收端控制音乐的播放,提供暂停、切换曲目等功能并且接收端增加了LCD显示提升用户体验。 5、基于AVR的自平衡遥控小车

arduino函数学习笔记

Arduino程序的主函数main在内部就已经定义了,所以只需void setup()和void loop().前者用于初始化在程序开头设置引脚的输入输出模式,初始化串口,执行一次。loop是死循环,是执行程序。 函数pinMode()有两个参数pin和mode, pin参数表示所要配置的引脚,mode 表示设置的模式INPUT或OUTPUT. arduino板上的模拟引脚亦可作数字引脚用,A0~A5对应数字14~19 digitalWrite()两个参数,pin表示设置的引脚(须设置为OUTPUT模式),value 表示输出的电压HIGH或LOW,此函数作用是设置引脚输出的电压为高或低。 digitalRead()一个参数,pin***(须设置为INPUT模式),用来获取引脚的电压情况HIGH或LOW. 若引脚没有连接到任何地方,那么随机返回高或低。 analogReference(type) analogRead(pin) 用于读取引脚的模拟电压值,返回值int 范围0~1023,pin 只能是6模拟接口。 analogWrite(pin,value)在指定引脚上输出一个模拟量,应用在LED灯亮度控制,电机转速控制。无返回值。Value表示PWM输出的占空比。范围0~255 shiftOut(dataPin,clockPin,bitOrder,val)无返回值能够将数据通过串行的方式在引脚上输出 shiftIn(datapin,clockPin,bitOrder)通过串行的方式在引脚上读入数据。 pulseIn(pin,state,timeout) 此函数用于读取引脚脉冲的时间长度,脉冲可以是HIGH或LOW。如果是HIGH,函数先将引脚变为高电平,在开始计时,一直到变为低电平为止,返回脉冲持续时间长短,单位MS,如果超时还未读到,将返回0. 函数返回值为unsigned long ,3个参数分别表示脉冲输入的引脚,脉冲响应的状态(高或低)和超时时间。 millis()函数可以获得机器运行的时间长度,单位ms.系统最长的时间为9小时22分,如果超出时间将从0开始,返回值unsigned long 型,无参数。 delay()延时函数单位MS 无返回值 delayMicroseconds ()延时函数,参数单位是微秒 数学库: min(x,y): #define min(a,b) (a)<(b))? (a):(b) max(x,y):#define max(a,b) (a)>(b))?(a):(b) abs(x)取绝对值 constrain(amt,low,high)取三个数中的中间值 map(x,in_min,in_max,out_min,out_max)函数将[in_min,in_max]范围内的x等比映射到[out_min,out_max]范围内,函数返回值为long 三角函数sin(rad),cos(rad),tan(rad)返回值为double randomSeed()函数用来设置随机数种子,随机数种子的设置对产生的随机数序列有影响,函数无返回值 random(howsmall,howbig)应用此函数可以产生随机数两个参数是随机数的范围,参数及返回值类型均是long 中断函数

相关文档
最新文档