搜档网
当前位置:搜档网 › Arduino教程(非常适合初学者)

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

Arduino教程(非常适合初学者)
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 的优势在于对数字信号的识别和处理,但我们所生活的真实世界并不是数字(digital)化的,简单到只要用 0 和 1 就能够表示 所有的现象。例如温度这一我们已经司空见惯的概念,它只能在一个范围之内连续变化,而不可能发生像从 0 到 1 这样的瞬时跳变, 类似这样的物理量被人们称为是模拟(analog)的。Arduino 是无法理解这些模拟量的,它们必须在经过模数转换后变成数字量后,才 能被 Arduino 进一步处理。 像温度这样的数据必须先被转换成微处理器能够处理的形式(比如电压),才能被 Arduino 处理,这一任务通常由各类传感器(sensor) 来完成的。例如,电路中的温度传感器能够将温度值转换成 0V 到 5V 间的某个电压,比如 0.3V、3.27V、4.99V 等。由于传感器表达 的是模拟信号,它不会像数字信号那样只有简单的高电平和低电平,而有可能是在这两者之间的任何一个数值。至于到底有多少可能 的值则取决于模数转换的精度,精度越高能够得到的值就会越多。 Arduino 所采用的 ATmega8 微处理器一其有 6 个模数转换器 (ADC, Analog to Digital Converter) 每一个模数转换器的精度都是 10bit, , 也就是说能够读取 1024(2^10 = 1024)个状态。在 Arduino 的每一个模拟输入管脚上,电压的变化范畴是从 0V 到 5V,因此 Arduino 能够感知到的最小电压变化是 4.8 毫伏(5/1024 = 4.8mV)。 电位计(potentiometer)是一种最简单的模拟输入设备,它实际上就是一个可变电阻箱,通过控制滑块所在的位置我们可以得到不同 的电压值,而输入信号正是从滑块所在的位置接入到电路中的。
这一实验我们将通过改变电位计的值来控制发光二极管闪烁的频率。电位计上一 共有三个管脚,分别连接到 Arduino 的电源、地和模拟输入的 5 号管脚上,发光二极管则连接到数字 I/O 的 13 号管脚上,原理图如下 所示:
相应的代码为:
int ledPin = 13; int potPin = 5; int value = 0; void setup() {
3

pinMode(ledPin, OUTPUT); } void loop() { value = analogRead(potPin); digitalWrite(ledPin, HIGH); delay(value); digitalWrite(ledPin, LOW); delay(value); }
在 Arduino 中,对模拟输入端口不需要调用 pinMode()函数将其指定为输入或者是输出模式,这点同数字 I/O 端口是有所不同的。 通过旋转电位计的轴,我们能改变电位计中间那根连线同地之间的电阻量,从而也就能改变从模拟输入的 5 号管脚上所读入的模拟量 的值。当电位计完全旋转到头时,输入到模拟输入管脚上的电压为 0V,用 analogRead()函数读出的值为 0;当电位计完全旋转到另一 头时,输入到模拟 I/O 管脚上的电压为 5V,此时用 analogRead()函数读出的值为 1023;当电位计旋转到中间的某个位置时,输入到 模拟输入管脚上的电压是 0V 到 5V 之间的某个值,而用 analogRead()函数读出的则是位于 0 到 1023 之间的某个对应值。读出的模拟 量在我们的实验中被用来确定发光二极管点亮和熄灭的时间,以反映模拟量的变化。
电位计运用的是分压原理, 通过旋转到不同的位置来得到不同的电压值。 从这 种意义上讲, 它能够被用来对当前旋转到的位置进行度量, 因此可以被用在转 向轮等旋转装置中。 今天发现 PCB 板上另外一个错误,就是将模拟输入对应管脚号标反了,试了 好久才意识到是这一问题。加上之前电源设计上的两个小缺陷, 一共有三个 需要修改的地方。如果有机会再做 PCB 板的话,试着将这些问题解决一下:-)
相应的代码为:
int ledPin = 13; int switchPin = 7;
4

int value = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(switchPin, INPUT); } void loop() { value = digitalRead(switchPin); if (HIGH == value) { // turn LED off digitalWrite(ledPin, LOW); } else { // turn LED on digitalWrite(ledPin, HIGH); } }
由于采用的是负逻辑电路,开关按下时用 digitalRead()函数读取到的值为 LOW,此时再用 digitalWrite()函数将发光二极管所在的管脚 置为高,点亮发光二极管。同理,当开关抬起时,发光二极管将被熄灭,这样我们就实现了用开关来控制发光二极管的功能。
Arduino 教程四 模拟输出 教程四:
Arduino, 教程 2 Comments ?
5

就像模拟输入一样,在现实的物理世界中我们经常需要输出除了 0 和 1 之外的其他数值。例如,除了想用微控制器找开或者关闭电灯 之外,我们还会想控制灯光的亮度,这时就需要用到模拟输出。由于 Arduino 的微控制器只能产生高电压(5V)或者低电压(0V), 而不能产生变化的电压,因此必须采用脉宽度调制技术(PWM,Pulse Width Modulation)来模仿模拟电压。 PWM 是一种开关式稳压电源应用,它是借助微处理器的数字输出来对模拟电路进行控制的一种非常用效的技术,广泛应用在从测量、 通信到功率控制与变换的许多领域中。简而言之,PWM 是一种对模拟信号电平进行数字编码的方法,它通过对半导体开关器件的导通 和关断进行控制,使输出端得到一系列幅值相等但宽度不相等的脉冲,而这些脉冲能够被用来代替正弦波或其它所需要的波形。 在 Arduino 数字 I/O 管脚 9、10 和 11 上,我们可以通过 analogWrite()函数来产生模拟输出。该函数有两个参数,其中第一个参数是 要产生模拟信号的引脚(9、10 或者 11);第二个参数是用于产生模拟信号的脉冲宽度,取值范围是 0 到 255。脉冲宽度的值取 0 可 以产生 0V 的模拟电压, 255 则可以产生 5V 的模拟电压。 取 不难看出, 脉冲宽度的取值变化 1, 产生的模拟电压将变化 0.0196V (5/255 = 0.0196)。 本实验中我们将用模拟输出来调暗发光二极管(LED),由于正常情况下 LED 对电压的变化非常敏感,因此当脉冲宽度变化时人眼会 感觉到 LED 实际上是在不断地熄灭和点亮,而不是逐渐变暗。解决这一问题可以采用滤波电路,它能使有用频率信号通过而同时抑制 (或大大衰减)无用频率信号。实验中我们采用的是低通滤波器,它的原理非常简单,只需要一个电阻和一个电容,能够很好地过滤 掉电路中超过某一频率的信号。 此处给出的电路并不能校平所有脉冲, 它之所以被称为“低通滤波”是因为它只允许 频率低于某个限度的脉冲通过,对于高于这个限度的脉冲则被平衡为伪模拟电压, 滤波的频率范围由电阻器和电容器的比值决定。 实验中采用的电路原 理如下: 相应的代码为:
int potPin = 0; int ledPin = 11; byte bright_table[] = { 60, 70, 80, 30, 30, 30, 40, 50,
90, 100,110, 120, 130, 140, 150, 160,
170, 180, 190, 200, 210, 220, 230, 240, 250, 250, 240, 230, 220, 210, 200, 190, 180, 170, 160, 150, 140, 130, 120, 110, 100, 40, 30, 30, 30 }; int MAX = 50; int count = 0; int val = 0; void setup() { pinMode(ledPin, OUTPUT); } void loop() { analogWrite(ledPin, bright_table[count]);
6
90,
80,
70,
60,
50,

count ++; if (count > MAX) { count = 0; } val = analogRead(potPin); val = val /4; delay(val); }
该工程调用 analogWrite()函数在数字 I/O 端口的 11 号管脚上模仿模拟输出,每产生一次输出后都设置了相应的延时,而延时的长度 由模拟输入端口 0 号管脚上的电位器来决定。通过调整电位器的位置,我们可以观察到发光二极管逐渐变亮后再逐渐变暗的效果。
Arduino 教程五 串口输出 教程五:
Arduino, 教程 No Comments ?
在许多实际应用场合中我们会要求在 Arduino 和其它设备之间实现相互通信,而最常见通常也是最简单的办法就是使用串行通信。在 串行通信中,两个设备之间一个接一个地来回发送数字脉冲,它们之间必须严格遵循相应的协议以保证通信的正确性。 在 PC 机上上最常见的串行通信协议是 RS-232 串行协议,而在各种微控制器(单片机)上采用的则是 TTL 串行协议。由于这两者的电 平有很大的不同,因此在实现 PC 机和微控制器的通信时,必须进行相应的转换。完成 RS-232 电平和 TTL 电平之间的转换一般采用专 用芯片,如 MAX232 等,但在 Arduino 上是用相应的电平转换电路来完成的。 根据 Arduino 的原理图我们不难看出,ATmega 的 RX 和 TX 引脚一方面直接接到了数字 I/O 端口的 0 号和 1 号管脚, 另一方面又通过 电平转换电路接到了串口的母头上。 因此, 当我们需要用 Arduino 与 PC 机通信时, 可以用串口线将两者连接起来; 当我们需要用 Arduino 与微控制器(如另一块 Arduino)通信时,则可以用数字 I/O 端口的 0 号和 1 号管脚。 串行通信的难点在于参数的设置,如波特率、数据位、停止位等,在 Arduino 语言可以使用 Serial.begin()函数来简化这一任务。为了 实现数据的发送,Arduino 则提供了 Serial.print()和 Serial.println()两个函数,它们的区别在于后者会在请求发送的数据后面加上换行 符,以提高输出结果的可读性。 在这一实验中没有用到额外的电路, 我们只需要用串口线将 Arduino 和 PC 机连起来就可以了,相应的代码为:
void setup() { Serial.begin(9600); }
7

void loop() { Serial.println("Hello World!"); delay(1000); }
在将工程下载到 Arduino 模块中之后,在 Arduino 集成开发环境的工具栏中单击“Serial Monitor”控制,打开串口监视器:
接着将波特率设置为 9600,即保持与工程中的设置相一致:
如果一切正常,此时我们就可以在 Arduino 集成开发环境的 Console 窗口中看到串口上输出的数据了:
为了检查串口上是否有数据发送,一个比较简单的办法是在数字 I/O 端口的 1 号管脚(TX)和 5V 电源之间接一个发光二极管,如下面 的原理图所示:
这样一旦 Arduino 在通过串口向 PC 机发送数据时,相应的发光二极管就会闪烁,实际应用中这是一个非常方便的调试手段;-)
8

Arduino 教程六 串口输入 教程六:
Arduino, 教程 1 Comment ?
串行通信是在实现在 PC 机与微控制器进行交互的最简单的办法。之前的 PC 机上一般都配有标准的 RS-232 或者 RS-422 接口来实现串 行通信,但现在这种情况已经发生了一些改变,大家更倾向于使用 USB 这样一种更快速但同时也更加复杂的方式来实现串行通信。尽 管在有些计算机上现在已经找不到 RS-232 或者 RS-422 接口了,但我们仍可以通过 USB/串口或者 PCMCIA/串口这样的转换器,在这些 设备上得到传统的串口。 通过串口连接的 Arduino 在交互式设计中能够为 PC 机提供一种全新的交互方式,比如用 PC 机控制一些之前看来非常复杂的事情,像 声音和视频等。很多场合中都要求 Arduino 能够通过串口接收来自于 PC 机的命令,并完成相应的功能,这可以通过 Arduino 语言中提 供的 Serial.read()函数来实现。 在这一实验中我们同样不需要任何额外的电路,而只需要用串口线将 Arduino 和 PC 机连起来就可以了,相应的 Arduino 工程代码为:
int ledPin = 13; int val; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { val = Serial.read(); if (-1 != val) { if ('H' == val) { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); }
9

} }
把工程下载到 Arduino 模块中之后,在 Arduino 集成开发环境中打开串口监视器并将波特率设置为 9600,然后向 Arduino 模块发送字 符 H,如下图所示: 该工程运行起来之后会不断调用 Serial.read()函数从串口获得数据。Arduino 语言提供的这个函数是不阻塞的,也就是说不论串口上是 否真的有数据到达,该函数都会立即返回。Serial.read()函数每次只读取一个字节的数据,当串口上有数据到达的时候,该函数的返回 值为到达的数据中第一个字符的 ASCII 码;当串口上没有数据到达的时候,该函数的返回值则为-1。 Arduino 语言的参考手册中没有对 Serial.read()函数做过多的说明,我的一个疑问是如果 PC 机一次发送的数据太多,Arduino 是否提 供相应的串口缓存功能来保证数据不会丢失?Arduino 语言中提供的另外一个函数 Serial.available()或许能够帮助我们用实验来进行 验证:
int ledPin = 13; int val; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { val = Serial.read(); if (-1 != val) { if ('H' == val) { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); Serial.print("Available: "); Serial.println(Serial.availab le(), DEC); } } }
函数 Serial.available()的功能是返回串口缓 冲区中当前剩余的字符个数,按照 Arduino 提供的该函数的说明,串口缓冲区中最多能 10

缓冲 128 个字节。我们可以一次给 Arduino 模块发送多个字符,来验证这一功能: 在这一实验中,每当 Arduino 成功收到一个字符 H,连接在数字 I/O 端口管脚 13 上的发光二极管就会闪烁一次:
Arduino 教程七 XBee 无线通信 教程七:
Arduino, 教程 4 Comments ?
借助 XBee 扩展板我们可以很方便地将 XBee 模块连接到 Arduino 上,XBee 模块的工作原理也非常简单,它与 Arduino 之间其实就是 通过串行接口(即 Tx 和 Rx 引脚)进行通信。对于简单的点对点通信来讲,只需要通过串行接口向 XBee 模块写数据就可以实现数据 的发送;当 XBee 模块通过无线通道接收到数据时,通过读串行接口可以很方便地获得这些数据。 原理弄清楚之后,其实我们可以将 XBee 模块看成是 Arduino 的串口,通过相应的串口操作函数来实现数据的接收和发送。首先请按照 Arduino XBee 模块使用手册中的说明配置好你的两个 XBee 模块,然后 将相应的跳线连接到 XBEE 一端: 这里我们使用一个最简单的工程来进行相应的实验:
int ledPin = 13; int val; void setup() { pinMode(ledPin, OUTPUT); Serial.begin(9600); } void loop() { // send data to another XBee module Serial.print('A'); delay(1000); // receive data from another XBee module
11

val = Serial.read(); if (-1 != val) { if ('A' == val) { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); delay(500); } } }
该工程首先通过 Serial.print()函数向 XBee 模块发送一个字母 A,该字母会被 XBee 模块通过无线网络发送出去,并被另外一个 XBee 模块接收到。紧接着再通过 Serial.read()函数从 XBee 模块读取从无线网络接收到的数据,如果是字母 A 的话,则点亮相应的发光二极 管。 将该工程编译并分别下载到两个 Arduino 模块中,注意下载的时候不要连接 XBee 扩展板,这是因为 XBee 模块会占用串口,从而导致 下载无法正确完成。 下载完成后将 XBee 扩展板连接到 Arduino 上,并分别给两者上电。这两个 Arduino 模块都会向对方发送字母 A,然后从对方接收字母 A,并对点亮数字 I/O 管脚 13 上连接的发光二极管。你可以试着将两个模块放在房间里的不同位置,来对 XBee 模块的传输性能进行 测试。
Arduino 电机驱动扩展板
Arduino, 基本电路, 教程 11 Comments ?
除了使用传感器对各种外部物理量进行感知之外,能够对实际物体的运动进行相应的控制也是互动设计中不可或缺的一部分。在所有 这类动力装置中,电机显然是最常见、最基本、最便宜的解决方案了,常用的电机的种类有很多种,如直流电机,步进电机,伺服电 机,减速电机等,并且每一种电机的控制方法都有所不同。 如果你是一个电子高手,控制普通的直流电机用几个三极管就行了,否则话像 L293 这样的芯片将是一个更好的选择。L293 芯片的核 心是两个 H-桥,所有的 H-桥芯片都具有如下一些引脚:
?
逻辑输入 12

? ? ? ?
逻辑电压 电源电压 电源输出 地
其中逻辑电压引脚采用与微控制器相同的电压和电流,电源电压采用与运行电机所需要的电压和电流。逻辑输入引脚连接到用来向 H桥输出控制信号的微控制器上的引脚,而电源输出引脚则连接到电机上。 这么专业的术语翻译到 Arduino 上可以这样来理解。首先,我们需要两套电源,一套用来给 Arduino 供电,一套用来给电机供电。其 次,我们需要用到 Arduino 的数字 I/O 管脚来控制 L293,并把电机接到 L293 上接受控制。说到这里,正好解释一下 Arduino 的供电 系统,通常 Arduino 有三种供电方式:
? ? ?
USB 供电 电池供电 变压器供电
后两者在 Arduino 上统称为外部供电。供电方式的选择是通过 Arduino 上的电源选择跳线来实现的,当把跳线接到“USB”一端时,采用 的是 USB 供电方式,这时整个 Arduino 及其附属电路上的电源都由 PC 的 USB 接口提供,此时电流一般比较小,只能驱动功率比较小 的电路,如 LED 等。当把跳线接到“EXT”一端时,采用的是外部供电方式,这时一般能够驱动比较大的设备,如电机等。Arduino 内部 一套电源转换电路,可以用来将外部供电时的电压(6-12V)转换成内部所需要的 5V 电压,使用 L293 控制电机正是需要这两套电源。 下面这个就是基于 L293D 芯片的 Arduino 专用电机驱动扩展板,它能够用来驱动两个直流电机。
使用该扩展板来驱动直流电机非常简单, 只需要将扩展板插到 Arduino 上, 同时将直流电机连接到扩展板上的 motors 引脚上就可以了。
13

正如上面所提到的,此时应该采用 Arduino 的外部供电方式,并使用变压器或者电源为 Arduino 提供电力。这里我选用的是 9V 变压器 和 9V 的直流电机:
电机扩展板上 motors 引脚的上面两针是用来接电机 1 的,下面两针是用来接电机 2 的。
14

电路连接好之后,剩下的工作就是如何用程序进行控制了。使用这一扩展板我们能够控制直流电机的转动方向和转动速度,其中对转 动方向的控制是通过 Arduino 上的数字 I/O 引脚 12 和 13 来实现的,对转速的控制则是通过数字 I/O 引脚 9 和 10 来实现的。 如果要控制直流电机 1,我们需要向引脚 9 输出相应的 PWM 信号来控制电机的速度,同时设置引脚 12 和 13 的高低电压来控制电机的 方向。如果要控制直流电机 2,则需要向引脚 10 输出相应的 PWM 信号来控制电机的速度,此时也是通过设置引脚 12 和 13 的高低电 压来控制电机的方向的。 电机扩展板上带有 S1 和 S2 两个按钮,分别对应于 Arduino 数字 I/O 的 7 号和 6 号管脚 ,并且在按下时为低电平。因此我们可以像下 面的程序这样利用 S1 来控制电机 1 的正反转:
int switchPin = 7; int dir1Pin = 12; int dir2Pin = 13; int speedPin = 9; void setup() {
// switch pin // direction 1 // direction 2 // spped pin
pinMode(switchPin, INPUT); pinMode(dir1Pin, OUTPUT); pinMode(dir2Pin, OUTPUT); pinMode(speedPin, OUTPUT); } void loop() { // switch is pressed if (digitalRead(switchPin) == LOW) { // set spped analogWrite(speedPin, 250); // set direction digitalWrite(dir1Pin, LOW);
15

digitalWrite(dir2Pin, HIGH); } else { analogWrite(speedPin, 100); digitalWrite(dir1Pin, HIGH); digitalWrite(dir2Pin, LOW); } }
在将上述程序下载到 Arduino 上并运行起来之后,我们就可以通过按 S1 键,来改变电机的旋转速度和方向了:) P.S. 在调试这一电机扩展板的奇遇是,在将其插入到 Arduino Diecimila 的贴片版本上时,发现 MC33269 异常热,并且电机偶尔才能 工作。进一步设计发现如果把整个扩展板很好地插入到 Arduino 上时,5V 和 Gnd 之间居然是短路的。一开始并没有发现问题在哪,后 来才发现扩展板上的电容 C9 与 USB 接头的外壳短路了!将其锡去掉一下,并抬高扩展板时问题得到解决。实际使用时请检查下图电 容下面的引脚是否与 USB 接口的外壳短路了,特别是对于贴片版本来讲,最好在通电前用万用表检查一下 5V 和 Gnd 之间的电阻值:)
Arduino 下载线使用手册
Arduino, DIY, 手册 3 Comments ?
Arduino 使用的是 Atmel 公司的 AVR 单片机,一般为 ATmega8 和 ATmega168,这一系列的单片机都支持 ISP(In System Programmability )编程,无需依赖昂贵的编程器就可以完成程序的下载。Arduino 电路在设计上考虑到了 ISP 功能,也留出了相应的 接口(ICSP),从而允许我们通过 ISP 下载线来完成 bootloader 的下载。 新买来的 Arduino 模块上一般都已经预先下载好了 bootloader,因此上电之后就能够直接通过 Arduino 集成开发环境下载相应的 Arduino 程序。正常情况下我们在用 Arduino 时是不需要 ISP 下载线的,但在某些情况下可能会出现在 Arduino 集成开发环境中无法正 常下载程序的现象,这很可能是由于 bootloader 受损所致。解决的办法就是重新将 bootloader 烧写到 ATmega 芯片中,此时你就需 要用到这里介绍的 ISP 下载线了。 Arduio 网站上给出的并口下载线电路我只成功地更新过 ATmega8 的 bootloader, 而无法为 Diecimila 上的 ATmega168 下载 bootloader。 此外,Arduino 给出的这一下载线电路过于简单,没有做相应的隔离和保护, 经常使用可能会对 Atmega 芯片带来一定的损害。AVR 建议使用一片 74HC244 来隔离并口和 ATmega 芯片,下面是我所使用的下载线的原理图: 16

以及自制的下载线:
使用并口下载线的时候,我们需要先到计算机的 BIOS 中将并口设为 ECP(The extended capabilities port )模式,同时将 I/O 基 地址设置成 378:
17

此时在 Windows 的设备管理器中,我们会发现并口已经被标记为 “ECP 打印机端口”: 用鼠标右键单击后从弹出的菜单中选择“属性”命令打开属性对话
框,在“资源”页面中我们会看到相应 I/O 基地址的设置已经生效: 现在就可以用 ISP 下载线连接计算机并口和 Arduino 上的 ICSP 接口 了,请特别留意连接方向:ISP 下载线六口插座上标有小三角的一端应该靠近 Arduino 的 ICSP 接口上标为 1 的一端。虽然计算机并口 能够为下载电路提供一定的电压,但一般我还是建议给 Arduino 模块加上 5V 电压(通过 USB 线和外接电源都可以),以保证下载过程 的稳定。 硬件准备好之后,我们就可以通过相应的软件将 bootloader 烧到 Arduino 中。支持 AVR 下载线的软件比较多,如 AVRDUDE 和 SLISP 等,我们在这里使用的是 PonyProg。下载并安装好 PonyProg v2.07a BETA 版本,启动 PonyProg 时会提示你进行相应的校准和设置工 作。首先选择“Setup”菜单中的“Calibration”命令进行校准,然后再选择“Setup”菜单中的“Intreface Setup…”命令进行相应的并口设 置: 18

根据你的 Arduino 模块上的芯片类型,从“Device” 菜单中的“AVR micro” 子菜单中选择“ATmega8”或者“ATmega168”。你也可以从工具栏上的 Device 下拉框中进行相应的选择:
首先从“Command”菜单中选择“Read All” 命令,从 Arduino 模块上读出 ATmega 中的当前数据和设置,其中最重要的是之后要设置的熔丝位。 然后选择“File”菜单中的“Open Program (FLASH) File…” 命令, 打开“Open program (FLASH) content file”对话框。从你的 Arduino 安装目录下找出对 应于的 bootloader。对于 Arduino 0010 版本来讲,我们可以在 hardware\bootloaders 目录下找到 atmega8 和 atmega168 两个目录, 分别对应 ATmega8 和 ATmega168 芯片所对应的 bootloader(文件扩展名为.hex),在 atmega168 目录下可以找到 ATmegaBOOT_168_diecimila.hex 和 ATmegaBOOT_168_ng.hex 两个文件,分别对应 Diecimila 和 NG 模块。你需要根据你的 Arduino 模块的具体情况,加载相应的 bootloader 文件。 AVR 通过熔丝来控制芯片内部的一些功能,比如 JTAG,时钟的使用,掉电检测电压,是否允许调试等。熔丝位的配置是为 Arduino 下 载 bootloader 过程中最复杂的一步,而且设置出错很有可能导致芯片锁死,所以一定要仔细。选择“Command”菜单中的“Security and Configuration Bits …”命令,打开相应的熔丝设置对话框。 Arduino 的 bootloader 对熔丝位有一定的要求,主要是同外部时间设置相关的。对于串口模块采用的 ATmega8 来讲,相应的熔丝字节 要设置成 0xCA (Fuse High Byte) 0xFF 和 (Fuse Low Byte) 具体每位的含义可以参见 Wolf Paulus 的文章。 PonyProg 中对 ATmega8 , 在 的熔丝位设置为下图所示:
对于 NG 和 Diecimila 采用的 ATmega168 来讲,相应的熔丝字节要设置成 0xF8 (Extended Fuse Byte), 0xDF(Fuse High Byte)和 0xFF(Fuse Low Byte)。 在 PonyProg 中对 ATmega168 的熔丝位 设置为下图所示: 熔丝位设置好之后,选择“Command”菜 单中的“Write All”命令,将 bootloader 下载到 Arduino 中。 下载过程中 Arduino 上的发光二极管 L 会不断闪烁。下载完 成之后,我们可以通过 Arduino 集成开 19

发环境下载一个 Arduino 工程,来验证新下载的 bootloader 是否能够正常工作。
DIY Arduino: Hello World
Arduino, DIY No Comments ?
终于要开始写第一个 Arduino 程序了, 就跟之前学习所有语言一样, 第一个程序自然是 Hello World 了。 不过这次有点特殊, 要让 Arduino 显示一个“Hello World”字符串恐怕有点难度,这是因为 Arduino 模块上没有提供任何可供显示字符的设备。而这对 Arduino 新手来讲, 也就意味着程序的调试将是一个令人头疼的问题。 最简单的办法是在 Arduino 提供的数字端口(Digital I/O)上连接发光二极管,然后通过控制发光二极管的亮灭来表明程序的当前运行 状态,这的的确确可以算得上是最原始的调试方法。 我的第一个 Arduino 程序正是要通过对数字 I/O 的 13 号管脚的控制,来实现与其相连的发光二极的亮灭。之所以要选择 13 号管脚步, 是因为从原理图上可以看出该管脚与 ATmega 的引脚之间连接了一个 1K 的电阻,能够起到限流的作用,以保护二极管不被烧坏。 发光二极管是有正负极性的,因此必须连接正确才能够让其正常发光。刚买来的发光二极腿比较长的一端是正极,需要接在 Arduino 数字 I/O 的 13 号管脚上;腿比较短的一端是负极,需要接在 GND 管脚上。
运行 Arduino 的集成开发环境,选择 File->New 菜单创建一个新的 Arduino 工程
接着在 Arduino 集成开发环境的主窗口中输入相应的代码:
int ledPin = 13;
20

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可穿戴开发入门教程

Ard duin no 可可穿(内ww 穿戴开内部资料大学霸ww.daxue 开发料) 霸 https://www.sodocs.net/doc/4b13470881.html, 发入门门教 教程

前 言 在可穿戴技术高度被关注的今天,可穿戴技术与最热开源硬件Arduino碰撞到一起,迸发闪亮的火花——LilyPad。LilyPad是Arduino官方出品的一款为可穿戴和电子织设计的微控制器板。除了微控制器之外,它还提供了配套的一系列外设,如LED、振动马达、蜂鸣器以及三轴陀螺仪等。 在本教材中,针对LilyPad的特点和定位,以不同于其他Arduino系列控制板的方式对LilyPad是什么,以及它可以做什么进行了详细的介绍。 最后,在教程中还实现了3个切实可用的项目。大家只要将他们缝纫起来就可以使用了。特别是最后的POV手环,那是非常炫酷的。 许多教材是在学习的同时做出项目,而本教材则更偏向在做项目的同时学习。在做完所有这些项目之后,你的眼界将会被开阔,各种奇思妙想会接踵而至。你一定会在有限的LilyPad硬件上做出无限可能的设计。 1.学习所需的系统和软件  的开发可以在三大主流操作系统Windows、OS X和Linux上进行,本教材主要集中?Arduino 在Windows操作系统;  的开发环境是Arduino IDE,它的安装和使用都非常方便,在教材中也有所介绍。 ?Arduino 2.学习建议 大家购买器件之前,建议大家先初略阅读本书内容,以确定项目中可能需要用到的器件。这样可以避免重复多次购买,或者购买到不需要的器件。

目 录 第1章 LilyPad Arduino概览 (1) 1.1 可穿戴技术和电子织物 (1) 1.2 LilyPad各模块简介 (1) 1.2.1 控制器板 (1) 1.2.3 输出模块 (3) 1.2.4 输入模块 (3) 1.2.5 电源模块 (4) 1.2.6 编程器模块 (5) 1.2.7 LilyPad套装 (5) 1.3 缝纫基础 (6) 1.4 LilyPad和LilyPad Simple (10) 1.4.1 LilyPad (10) 1.4.2 LilyPad Simple (11) 1.5 本书写作思想 (12) 第2章开发环境 (13) 2.1 Arduino IDE (13) 2.1.1 安装包下载 (13) 2.1.2 Windows平台下安装Arduino IDE (15) 2.1.3 Linux平台下安装Arduino IDE (18) 2.2 认识IDE (18) 2.2.1 启动Arduino IDE (18) 2.2.2 新建源文件 (20) 2.2.3 编辑源文件 (21) 2.2.4 保存源文件 (23) 2.2.5 打开已经存在的源文件 (24) 2.3 连接LilyPad (25) 2.3.1 Windows平台的驱动 (25) 2.3.2 Linux平台的驱动 (26) 2.4 Blink (27) 2.4.1 打开官方示例 (27) 2.4.2 连接硬件 (28) 2.4.3 选择板子 (28) 2.4.4 选择端口 (29) 2.4.5 上传程序 (31) 2.4.6 观察运行结果 (31) 第3章Arduino语言基础 (33)

Arduino 电子积木基础套装中文教程

Arduino 入门版使用教程 V0.2
https://www.sodocs.net/doc/4b13470881.html,
Arduino 入门版使用教程
DFRduino Starter kit User Manual
版本号:V 0.22 最后修订日:2010 09 10
仅供内部评测使用,请勿外传
第 1 页 共 90 页

Arduino 入门版使用教程 V0.2
https://www.sodocs.net/doc/4b13470881.html,
目录
介绍 ......................................................................................................................................................... 3 元件清单 ............................................................................................................................................. 3 Arduino 介绍篇 .................................................................................................................................... 4 概 述 ................................................................................................................................................... 4 Arduino C 语觊介绍............................................................................................................................. 5 结极 ..................................................................................................................................................... 8 功能 ..................................................................................................................................................... 8 Arduino 使用介绍............................................................................................................................... 10 面包板使用介绍 ................................................................................................................................... 29 实验篇 ................................................................................................................................................... 31 第一节 多彩 led 灯实验 ................................................................................................................. 31 第二节 蜂鸣器实验 ......................................................................................................................... 42 第三节 数码管实验 ......................................................................................................................... 47 第四节 按键实验 ............................................................................................................................. 54 第五节 倾斜开关实验 ..................................................................................................................... 64 第六节 光控声音实验 ................................................................................................................... 68 第七节 火焰报警实验 ................................................................................................................... 71 第八节 抢答器实验 ......................................................................................................................... 75 第九节 温度报警实验 ..................................................................................................................... 80 第十节 红外遥控 ............................................................................................................................. 84
仅供内部评测使用,请勿外传
第 2 页 共 90 页

林锋教你一步一步玩机器人(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.sodocs.net/doc/4b13470881.html, 博客:https://www.sodocs.net/doc/4b13470881.html,/u/2775824690

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

Arduino初学系列3:Arduino,按键,LED

3 Arduino,按键,LED 3.1 问题描述:如何采用Arduino控制器和按键同时控制LED的闪烁 在前面的2个例子中,都是简单地通过将程序烧录到Arduino控制板,然后由控制板来控制LED灯的闪烁,缺乏人情味。那能不能在Arduino控制的过程中,再加上与人的互动呢?答案是肯定的。在这个实验中,我们将增加一个新的材料按键按钮来和Arduino一起控制灯的闪烁。 3.2 所需材料 表3-1:所需材料 序号名称数量作用备注 1 Arduino软件1套提供IDE环境最新版本1.05 2 Arduino UNO开发板1块控制主板各种版本均可 3 USB线1条烧录程序随板子配送 4 杜邦线若干条连接组件 5 发光二极管(LED)1个 LED闪烁 6 电阻(10,200Ω)2个限流 7 多功能面包板1块连接 8 按键按钮1个开关 在进行实验之前,我们先介绍按键按钮的相关属性。 按键按钮 按键是一种经常使用的设备,通过按键可以输入指令和数据来控制电路的开与关,从而达到控制某些设备的运行状态。在本实验中,通过给按键输入高低电平来控制LED灯的闪烁。开关的种类繁多复杂,比如厨房用的单孔开关,卧房用的双控开关,楼道用的声控开关等等,均属于开关的范畴。在我们实验中,主要是用微型开关,但其种类也很多,如图3-1所示。 图3‐1 微型按键开关种类 在本实验中采用的微型开关大致为6*6*5mm的四脚开关。如图3-2所示。

图3-2 本实验用的按键 值得注意的是,1和2是一边的,3和4是一边的,中间有道痕分开。其原理如图3-3所示,当按键按下去时,1,2,3,4四个管脚接合在一起,2根导线连通,变成一根导线。电路导通,起到触发(关)作用。当松开按钮,1,2,3,4四个管脚断开,起到开的作用。 图3‐3 按键按钮原理图 3.3 实验原理图 当按键按钮按下,获取一个高电平,触发在Arduino控制下的LED闪烁。当然,我们也可以设置为按键按下是LED灯不亮,当松开按键时,LED灯闪烁,请看后面的代码分析。原理图如3-4所示,就是在实验1的基础上增加一个按键按钮。

Arduino手把手系列教程

——什么是Arduino/Arduino是什么 Arduino是一块简单、方便使用的通用GPIO接口板,并可以通过USB接口和电脑通信。 作为一块通用IO接口板,Arduino提供丰富的资源,包括: 13个数字IO口(DIO数字输入输出口); 6个PWM输出(AOUT可做模拟输出口使用); 5个模拟输入口(AIN模拟输入)。 Arduino开发使用java开发的编程环境,使用类c语言编程,并提供丰富的库函数。 Arduino可以和下列软件结合创作丰富多彩的互动作品:Flash,Processing,Max/MSP,VVVV…等。 Arduino也可以用独立的方式运作,开发电子互动作品,例如:开关控制Switch、传感器sensors输入、LED等显示器件、各种马达或其它输出装置。 下面是Arduino的硬件实物图片: Arduino实物图

——Arduino可以做什么 目前计算机的输入和输出设备,大家常见的、也是大家做熟悉的就是:键盘(输入)、鼠标(输入)、麦克(输入)和音响(输出)、显示器(输出);对于一些玩游戏的朋友可能还包括游戏杆(输入),做音乐的可能还会接触到MIDI (输入)。 上述设备都很专业,功能也非常专一。你没办法让键盘给你唱歌,同样,你也没办法让音响替你输入文本。 Arduino更像是一种半成品,它提供通用的输入输出接口。你可以通过编程,把Arduino加工成你需要的输入输出设备。 你可以把Arduino做成键盘、鼠标、麦克等输入设备;你也可以把Arduino做成音响、显示器等输出设备。最重要的是,你可以把Arduino做成任何你希望的互动工具(输入和输出)。 如果你愿意,或者你需要,你完全可做使用Arduino开发出一个会唱歌的键盘或者一个让你的音响替你打字。(夸张的说法) 总之,Arduino是什么,是根据你的需求来确定的。你跟电脑之间的交互,从此插上了翅膀。

Arduino入门到精通例程6-按键控制

Arduino 入门到精通例程 6 6按键控制LED实验 I/O 口的意思即为INPUT接口和OUTPUT接口,到目前为止我们设计的小灯 实验都还只是应用到Arduino的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O的作用。按键开关大家都应该比较了解,属于开关量(数字量)元件,按下时为闭合(导通)状态。完成本实验要 用到的元件如下: 按键开关*1 红色M5 直插LED*1 220 Q电阻*1 10K Q电阻*1 面包板*1 面包板跳线*1 扎 我们将按键接到数字7接口,红色小灯接到数字11接口(Arduino控制器0-13数字I/O接口都可以用来接按键和小灯,但是尽量不选择0和1接口,0和1接口为接口功能复用,除I/O 口功能外也是串口通信接口,下载程序时属于与PC 机通信故应保持0和1接口悬空,所以为避免插拔线的麻烦尽量不选用0和1 接口),按下面的原理图连接好电路。下面开始编写程序,我们就让按键按下时小灯亮起,根据前面的学习相信这个程序很容易就能编写出来,相对于前面几个实验这个实验的程序中多加了一条条件判断语句,这里我们使用if 语句,Arduino的程序便写语句是基于C语言的,所以C的条件判断语句自然也适用于Arduino,像while、swich等等。这里根据个人喜好我们习惯于使用简单易于理解的if 语句给大家做演示例程。

我们分析电路可知当按键按下时,数字7 接口可读出为高电平,这时我们使数字11 口输出高电平可使小灯亮起,程序中我们判断数字7 口是否为低电平,要为低电平使数字11 口输出也为低电平小灯不亮,原理同上。 参考源程序: int ledpin=11;// 定义数字11 接口 int inpin=7;// 定义数字7 接口 int val;// 定义变量val void setup(){pi nM ode(ledpi n,0 UTPUT);// 定义小灯接口为输出接口 pinMode(inpin,INPUT);〃定义按键接口为输入接口}void loop(){val=digitalRead(inpin);〃读取数字7 口电平值赋给val if(val==LOW)〃检测按键是否按下,按键按下时小灯亮起 { digitalWrite(ledpin,LOW);} else { digitalWrite(ledp in ,HIGH);}}下载完程序我们本次的小灯配合按键的实验就完 成了,本实验的原理很简单,广泛被用于各种电路和电器中,实际生活中大家也不难在各种设备上发现,例如大家的手机当按下任一按键时背光灯就会亮起,这就是典型应用了,下面一个实验就是一个最简单的生活中应用实例--------------- 抢答器。

Arduino 入门到精通 例程16-四位数码管

Arduino 入门到精通例程16 这次我们进行的实验是使用arduino驱动一块共阳四位数码管。驱动数码管限流电阻肯定是必不可少的,限流电阻有两种接法,一种是在d1-d4阳极接,总共接4颗。这种接法好处是需求电阻比较少,但是会产生每一位上显示不同数字亮度会不一样,1最亮,8最暗。另外一种接法就是在其他8个引脚上接,这种接法亮度显示均匀,但是用电阻较多。本次实验使用8颗220Ω电阻(因为没有100Ω电阻,所以使用220Ω的代替,100欧姆亮度会比较高)。 4位数码管总共有12个引脚,小数点朝下正放在面前时,左下角为1,其他管脚顺序为逆时针旋转。左上角为最大的12号管脚。

下图为数码管的说明手册

下面是硬件连接图 ARDUINO CODECOPY

1.//设置阴极接口 2.int a = 1; 3.int b = 2; 4.int c = 3; 5.int d = 4; 6.int e = 5; 7.int f = 6; 8.int g = 7; 9.int p = 8; 10.//设置阳极接口 11.int d4 = 9; 12.int d3 = 10; 13.int d2 = 11; 14.int d1 = 12; 15.//设置变量 16.long n = 0; 17.int x = 100; 18.int del = 55; //此处数值对时钟进行微调 19. 20.void setup() 21.{ 22.pinMode(d1, OUTPUT); 23.pinMode(d2, OUTPUT); 24.pinMode(d3, OUTPUT); 25.pinMode(d4, OUTPUT); 26.pinMode(a, OUTPUT); 27.pinMode(b, OUTPUT); 28.pinMode(c, OUTPUT); 29.pinMode(d, OUTPUT); 30.pinMode(e, OUTPUT); 31.pinMode(f, OUTPUT); 32.pinMode(g, OUTPUT); 33.pinMode(p, OUTPUT); 34.} 35. 36.void loop() 37.{ 38. clearLEDs(); 39. pickDigit(1); 40. pickNumber((n/x/1000)%10);

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入门教程(13)—彩灯调光台

Arduino 入门教程(13)—彩灯调光台 我们已经接触过 RGB LED 了,可以实现变色,这回儿我们需要加入互动元素进去。通过三个电位器来任意变换对应的R、G、B,组合成任何你想要的颜色,在家做个心情灯吧,随心情任意切换。 所需材料 1×5mm RGB LED 灯 3×220 欧电阻 3×10K 电位器 STEP 1:硬件连接 STEP 2:输入代码 1. int redPin = 9;// R – digital 9 2. int greenPin = 10;// G – digital 10 3. int bluePin = 11;// B – digital 11 4. // 电位器1 – analog 0 int potRedPin = 0;

5. int potGreenPin = 1; // 电位器2 – analog 1 6. int potBluePin = 2; // 电位器3 – analog 2 7. 8. void setup(){ 9. pinMode(redPin,OUTPUT); 10. pinMode(greenPin,OUTPUT); 11. pinMode(bluePin,OUTPUT); 12. Serial.begin(9600); // 初始化串口 13. } 14. 15. void loop(){ 16. int potRed = analogRead(potRedPin); // potRed存储模拟口 0读到的值 17. int potGreen = analogRead(potGreenPin); // potGreen存储模拟 口1读到的值 18. int potBlue = analogRead(potBluePin); // potBlue存储模拟口 2读到的值 19. 20. int val1 = map(potRed,0,1023,0,255); //通过map函数转换 为0~255的值 21. int val2 = map(potGreen,0,1023,0,255); 22. int val3 = map(potBlue,0,1023,0,255); 23. 24. //串口依次输出Red,Green,Blue对应值 25. Serial.print("Red:"); 26. Serial.print(val1); 27. Serial.print("Green:"); 28. Serial.print(val2); 29. Serial.print("Blue:"); 30. Serial.println(val3); 31. 32. colorRGB(val1,val2,val3); // 让RGB LED 呈现对应颜色 33. } 34. 35. //该函数用于显示颜色 36. void colorRGB(int red, int green, int blue){

Arduino开发环境教程

Sonxun
开发环境教程 Aduino 开发环境教程
1.1 程序开发流程
Arduino 开发环境
在计算机中有着许多不同的程序,有的跟系统有关,负责处理硬件之间的数据交换及命 令控制,如操作系统(Operating System,OS)、编译程序(Compiler)等。有的程序则是架构在 系统程序之上,可以满足使用者的部分需求,如 Office、游戏、多媒体播放程序等。 在做微处理器的程序开发时,最关键的一步就是将程序编译成单片机看得懂的机器语言, 而这部分工作由计算机上的相关程序来执行。一般来说,微处理器的系统开发商都会搭配特 定软件供开发者编写其应用程序。 不同于高阶 的程序设计语言, 目前常用于单片机系统的程 序代码为汇编语言(Assembly)、 C/C++等种类。 典型的程序开发流程如右图所示, 设计完系统 所要的执行程序后,再编译成扩展名为.hex 的特殊格式的程序文件, 微处理器就能看得懂 了。接下来,就可以把程序下载、烧录到单片 机中,测试结果是否符合你的预期了。 1.1.1 编辑 这是开发的第一个步骤:产生程序代码。相信很多人听说过:程序厉害的人用记事本程 序就可以工作了。这句话只说对了一半,因为记事本只能帮你记录下整个程序的流程、函数、 所引用的函数库等,编写完毕后另存成扩展名为.c、.cpp 等。不过,一个专属的程序开发环 境,还可以帮你管理项目内的多个程序,也可以利用颜色高亮来区分程序代码类的内容在这 个阶段,大家习惯的编辑环境不一样,只要使用方便即可。还是希望初学者能够找寻到合适 的编辑环境,除了可以帮助编写程序外,也可以省下许多宝贵的时间。 1.1.2 编译 前面说到,计算机、单片机等程序执行时,机器看得懂的只有 010101 的数字信号,而前 面编辑的步骤所使用的语法是为了方便开发者了解每个函数的功能:越高级的语言,越能让 开发者更直观了解函数的功能,程序所占的空间也会相应增加。这个阶段的工作就是将我们 编辑完的文字文件转换成机器码。这个步骤会帮你检查程序上的错误,并提出警告。因此这 个步骤完成后通常会回到前一个步骤将语法错误、逻辑错误的地方进行修正,直到编译器没 有产生错误提示为止。 但是,在开发单片机的程序是,特别要注意的是看不见的错误,举例来说:系统接着 5 个 LED 发光二极管,程序目标是要控制第二个的明暗变化,不过在程序编辑时,不小心将控 制目标变成了第四个,这样的错误在编译时是不会看到的,只有程序执行时才会发现错误, 你可能还会怀疑是否是硬件电路接错了,实际上却是程序的编辑错误。这种问题的发生在单 片机的开发过程中很常见,所以要特别注意。 1.1.3 链接 当我们的项目程序越来越大时,为了方便管理,通常会根据功能分成不同的文件,链接 的作用就是寻找程序当中所有用到的功能模块、内建函数库原始程序的位置,再与主程序结 合成为一个可执行文件。这时候产生的错误,可能是你使用了某个函数,却没有将其路径正 确引用,造成链接错误,此时便会提出警告。例如,使用数学相关的函数 MAX()、SIN()等, 都要引用 math.h 这个头文件。
https://www.sodocs.net/doc/4b13470881.html,
松迅科技

《Arduino轻松学》慕课课程

《Arduino轻松学》慕课课程 学员手册 中国青少年科技辅导员协会 北京智感科技有限公司 二〇一七年十月

目录 一、欢迎辞 (1) 二、慕课课程介绍 (2) 2.1 学习目标 (2) 2.2 学习内容 (2) 2.3 学习方式 (4) 2.4 学习成果 (4) 2.4 学习奖励 (6) 三、在线学习平台使用说明 (6) 四、课程进度 (8) 五、讲师介绍 (9) 六、课程管理团队 (9)

一、欢迎辞 欢迎选修《Arduino轻松学》慕课课程! 《Arduino轻松学》是科普中国校园e站资源服务示范项目提供的通用性服务课程之一,面向项目示范校和所有科技辅导员开放。 科普中国校园e 站资源服务示范项目是在中国科协科普部指导下,由中国科协青少年科技中心和中国青少年科技辅导员协会联合推动的一项科普信息化建设工作,旨在为学校和科技辅导员利用信息化手段和科普中国的丰富科普教育资源开展线上线下相结合的青少年科技教育活动提供服务。示范项目携手各科技教育活动、STEM 课程和创客课程开发团队,不断为项目示范校提供多种在线课程服务。 Arduino作为目前热门的开源硬件平台,已经形成了完整的教育生态系统。借助其丰富的传感器及输入输出模块,只需简单的硬件连接,便可快速的实现有趣的交互体验,非常有利于科技辅导员激发学生兴趣、设计动手及实践体验课程。 本学习手册主要包括:课程介绍、在线学习平台使用说明、课程学习日程等。希望为各位学员尽快熟悉课程教学节奏、掌握课程学习方法提供帮助。望各位学员能够认真阅读学习手册。如有其它问题,欢迎在学习过程中给出您的反馈。 祝愿我们一起有一次愉快的在线学习之旅!也希望您在学习过程中主动关注课程邮件,真正成为学习的主人! 中国青少年科技辅导员协会 北京智感科技有限公司 二〇一七年十月

十个中文例程教会你轻松上手制作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开发从入门到实战》课程教学大纲 课程编号 课程名称中文Arduino开发从入门到实战 英文Arduino Development from Beginning to Practice 教学目的和要求 课程说明本课程主要通过“基础知识→模块实验→项目实战”的思路,由浅入深,先易后难,先简单后综述地引导学生进行学习和逐步提高,分层激发学生的学习兴趣。 教学目的通过本课程的学习,可以使Arduino的初学者轻松入门,并通过本书中手把手地项目教学方式,使学生掌握Arduino项目开发的完整过程。 教学要求本书共15章,建议教学学时为64学时,其中理论32学时,实验32学时(普通实验20学时,综合实验12学时),该课程的先导课程为电路分析、模拟电路、单片机基础等。 教学内容和要求(分章节) 教学方法与学时分配 本课程采用“基础知识+模块实验+项目实战”的教学方式进行教学,采用现代化授课手段,在课堂上可以根据实际情况取舍教学内容,动态调整,力争与国际接轨,从而达到较好的教学效果。 学时分配 章节 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 合计 授课 3 6 8 15 2 2 2 2 2 2 2 2 2 2 12 64 学时

主要内容及基本要求 第一章Arduino 概述 基本内容:本章主要对“Arduino开发从入门到实战”这门课进行了一个总体的概述,给出了Arduino 的起源、Arduino可以干什么、创客文化、Arduino开源文化、发展趋势以及几个关于Arduino的趣味小实例。 基本要求:要求学生掌握Arduino的概念、基本作用及Arduino与其他单片机相比具有的优势,了解Arduino发展进程、开源文化基本内容。 第二章Arduino 硬件资源 基本内容:本章介绍Arduino的硬件部分,包括Arduino核心ATmega32xx系列单片机、ATmega32xx 主要特性、典型的Arduino开发板与扩展板及Arduino其他类型的衍生控制器。 基本要求:要求学生掌握Arduino硬件组成、Arduino Uno 各引脚功能等特性。熟悉几款常用的Arduino 的开发板与扩展板,了解其功能及使用方法。 第三章开发环境 基本内容:本章介绍了Arduino的软件部分,包括开发环境、集成开发环境(IDE)、驱动安装、IDE基本操作、程序的输入、编译与下载以及解决开发环境的常见问题。 基本要求:要求学生能够掌握Arduino的驱动与安装、如何烧录程序。熟悉Arduino编译环境,了解Arduino IDE 的基本特点,菜单栏各个部分的功能与作用,掌握基本功能快捷键,能够完成Arduino实验板的编程写入。 第四章Arduino 语言 基本内容:本章介绍Arduino的语言、基本函数、Arduino库函数三大部分。其中Arduino的语言主要包括标识符、关键字、Arduino语言运算符、控制语句、基本结构等。Arduino基本函数主要有数字I/O、模拟I/O、时间函数等。 基本要求:要求学生掌握Arduino编程格式、Arduino语言结构,熟悉Arduino函数的书写规范,了解使用库函数的方法。 第五章炫酷LED灯 基本内容:本章介绍炫酷LED灯实验,通过实验使LED闪烁发光。使用Arduino Uno开发板、发光二极管、杜邦线、面包板等完成硬件连接,软件部分使用数字I/O函数完成代码编写,最后完成扩展实验部分。 基本要求:掌握LED发光二极管的基本原理,了解LED在生活中的应用,熟悉Arduino Uno硬件连接、软件编程过程,掌握数字I/O函数语言结构。 第六章按键开关的输入 基本内容:本章介绍了按键开关输入实验,通过实验使LED闪烁发光。使用Arduino Uno开发板、按键开关、发光二极管、杜邦线、面包板,通过按下按键使LED发光、松手LED 熄灭。软件部分使用基本数字I/O函数编写代码,最后完成扩展实验部分。 基本要求:掌握按键开关的基本原理,熟悉LED发光二极管的基本原理,了解按键开关的种类及其在生活中的应用,熟悉Arduino Uno硬件连接、软件编程过程,掌握数字I/O函数语言结构。 第七章触摸延时开关

相关主题