《动手玩转Arduino》——2.3 在IDE里创建第一个程序

2.3 在IDE里创建第一个程序

一个Arduino程序就是用来实现一个特定任务的一组指令。本节我们要创建和上传一个简单的程序,能让Arduino的LED(见图2-11)亮一秒、灭一秒,形成不断的闪烁。

注意:

别太操心所建立的这个程序里的具体指令。这个程序是为了说明要让Arduino做点什么事情是很容易的,继续读下去会遇到更难的部分。

首先,用USB线把Arduino板连到计算机上,然后打开IDE,选择Tools->Serial Port,确认正确的串口已经被勾选上,这样就能确认Arduino板已经被正确地连接了。

2.3.1 注释

首先,输入一条注释,说明程序的用途。注释是程序里任意长度的说明,是为了程序的用户而写的。程序里的注释用来给你自己或其他人加些说明,这是很有用的。注释可以是说明指令,也可以是说明各种细节。在给Arduino编程(写程序)的时候,把你的想法写成注释是个好主意,将来修改程序的时候,这些注释能提供有用的信息。

在一行里加上注释,需要输入两个斜杠,然后写注释,就像下面这样。

// Blink LED sketch by Mary Smith, created 09/09/12(闪烁LED程序,作者Mary Smith,创建于2012年9月9日) 

这两个斜杠告诉IDE在检查程序的时候忽略后面跟着的内容(前面提过,在检查程序的时候,你要求IDE检查程序书写正确没有错误)。

输入占据两行或多行的注释,需要在注释开始之前输入/,然后在注释结束的地方输入/,就像下面这样。

/*
Arduino Blink LED Sketch (Arduino 闪烁LED程序)
by Mary Smith, created 09/09/12 (作者Mary Smith,创建于2012年9月9日)
*/ 

和两个斜杠开头的单行注释一样,//告诉IDE忽略它们所括起来的文字。

用以上两种方法之一输入一条描述你的Arduino程序的注释,然后选择File->Save As保存程序。给你的程序输入一个简短的文件名(比如blinky),然后点击OK。

Arduino程序的默认文件名后缀是.ino,IDE应该会自动加上这个后缀。所以,你的程序的文件名就应该是blinky.ino,在菜单的Sketchbook(素描本)里可以看到它。

2.3.2 setup函数

创建任何程序,接下去的事情都是加上void setup()函数。这个函数里是Arduino每次重启或开机时只执行一次的指令。要创建这个setup函数,在程序的注释后面,加入下面的行。

void setup()
{ 

} 

2.3.3 控制硬件

我们的程序要让Arduino板上的用户LED闪烁,用户LED连接在Arduino的13号数字引脚上。数字引脚可以检测电信号,也可以根据指令产生信号。在这个作品中,我们要产生一个电信号来点亮LED。这也许看上去有点复杂,数字引脚更多的细节会在后续的章节中介绍,此刻,只要继续写程序就好。

在程序的大括号({})之间输入下面的内容。

pinMode(13, OUTPUT); // 设置数字引脚13为输出 

程序里的数字13就是我们用的数字引脚的编号,设置这个引脚为输出,就表示要在这个引脚上产生(输出)一个电信号。如果你想在引脚上检测所受的电信号,就需要用INPUT。注意这个函数的调用pinMode()以分号(;)结尾。Arduino程序里的每个函数调用都要以分号结尾。

再次保存你的程序,确保你不会丢失了你的辛苦劳作。

2.3.4 loop函数

我们的目标是让LED不停地闪烁。为此,需要写一个loop(循环)函数来让Arduino不断地重复执行一些指令,直到断电或是有人按了RESET按钮。

输入下面代码中在void setup()后面加粗的部分,就有了一个空的loop函数。别忘了这个新的部分要以另一个大括号(})结束,然后再保存一次程序。

/*
Arduino Blink LED Sketch (Arduino 闪烁LED程序)
by Mary Smith, created 09/09/12 (作者Mary Smith,创建于2012年9月9日)
*/ 

void setup()
{
  pinMode(13, OUTPUT); // 设置数字引脚13为输出
}
void loop()
{
// 你的主循环代码要放在这儿:
} 

警告:

Arduino IDE不会自动保存程序,所以要经常自己保存一下。

下面,输入实际的要在loop()里让Arduino执行的代码。

在loop函数的大括号之间输入下面的内容,然后点击Verify按钮来确认输入的一切都是对的。

digitalWrite(13, HIGH); // 打开数字引脚13
delay(1000); // 暂停一秒
digitalWrite(13, LOW); // 关闭数字引脚13
delay(1000); // 暂停一秒 

我们分开来逐一说明。digitalWrite()函数控制在数字引脚上输出的电压,在这个程序里,就是控制连接了LED的13引脚上的电压。设置这个函数的第2个参数为HIGH,这就输出了“高”电平,会有电流从引脚流出,LED就会被点亮。如果设置这个参数为LOW,流经LED的电流就会停止。

LED亮了以后,用deay(1000);让它保持1秒。delay()函数可以使程序在一段时间内什么也不做。这里是1000毫秒,或者说1秒,程序什么也不做。

然后,用digitalWrite(13,LOW);把LED上的电压取消掉。最后,再用delay(1000);让LED保持1秒的熄灭状态。

完整的程序如下:

/*
 Arduino闪灯程序 
 作者Mary Smith,创建于2012年9月9日
*/ 

void setup()
{
  pinMode(13, OUTPUT); // 设数字引脚13为输出
}
void loop()
{
  digitalWrite(13, HIGH); // 点亮数字引脚13
  delay(1000); // 暂停1秒
  digitalWrite(13, LOW); // 熄灭数字引脚13
  delay(1000); // 暂停1秒
} 

在做任何事情之前,保存程序。

2.3.5 检查程序

检查程序是确保程序以Arduino理解的方式书写。要检查整个程序,点击IDE的Verify按钮,然后等待一会儿。一旦程序被检查完毕,就会在消息窗口显示一条消息,如图2-12所示。

“Done compiling”消息告诉你程序已经OK了,可以上传到Arduino板。它还告诉你程序用了多少内存(这里是1 076字节),这块Arduino上总的可用内存是32 256字节。

不过,如果你的程序不对呢?比如,你忘了在第二个delay(1000)函数的后面加上一个分号。如果程序有问题,那么在点击了Verify按钮之后,消息窗口会显示检查错误消息,如图2-13所示。

这条消息告诉你,错误出在void loop函数里,并且列出了它认为你的错误所在的程序行号(blinky:16,是blinky程序的第16行),然后是错误的描述,即error: expected ';' before '}' token(错误:在 '}'符号之前应该有一个';')。另外,IDE还会把错误的地方用黄色高亮显示,或是在错误的地方打一个点。这样能让你方便地找到并修改错误。

2.3.6 上传和运行程序

一旦程序已经正确输入了,保存好,确认Arduino板已经连接,然后点击IDE的Upload(上传)按钮。IDE可能会再次检查程序,然后再上传到Arduino板。在此过程中,板上的TX/RX LED(见图2-6)会不时地闪烁,说明数据正在Arduino和计算机之间来回传递。

现在,Arduino应该开始运行程序了。如果一切都做对了,LED应该闪烁,亮一秒灭一秒!

恭喜你,现在,你已经基本了解如何输入、检查和上传Arduino程序了。

2.3.7 修改程序

运行程序之后,可能想要改变它的动作,比如,调节LED亮或灭的时间。因为IDE很像一个文字处理软件,所以可以打开之前保存的程序,修改其中的内容,然后保存、上传到Arduino。比如,要提高闪烁的频率,改变两次delay函数的调用,调整延迟的数值为250,就可以让LED每1/4秒闪烁一次,如下所示。

delay(250); // 暂停1/4秒 

然后再次上传程序,LED就会闪烁得快点儿了,每1/4秒变化一次。

时间: 2024-12-11 12:53:44

《动手玩转Arduino》——2.3 在IDE里创建第一个程序的相关文章

《动手玩转Arduino》——导读

前 言 Arduino是当今世界上最流行的开源硬件,具有价格低廉.便捷灵活.容易上手等特点,在机器人.艺术.科学实验等领域受到了广泛关注. 本书精心整合了65个Arduino作品,而且其难易程度依次递增,旨在让读者以感性的方式,来掌握更多的Arduino知识和经验.通过这65个动手实践,读者除了学到基础的电子学概念.巩固已有的Arduino知识之外,还将学会如何创建功能更为强大复杂的Arduino作品. 本书适合对Arduino感兴趣的硬件DIY爱好者.电子爱好者阅读,也非常适合学生进行电子制作

《动手玩转Arduino》——第2章 探索Arduino板和IDE

第2章 探索Arduino板和IDE 动手玩转Arduino本章我们将研究Arduino板和IDE软件,我们要用IDE软件创建和上传Arduino程序到Arduino板(Arduino用草图表示程序,我们还是继续用程序这个传统术语).我们会学到程序的基本框架和程序里可以实现的基本功能,我们要创建和上传我们的第一个程序.

《动手玩转Arduino》——第10章 用触摸屏获得用户输入

第10章 用触摸屏获得用户输入 动手玩转Arduino在本章,我们将: 学习如何把一个电阻触摸屏连接到Arduino:研究触摸屏返回的数值:做一个简单的触摸开关:做一个有渐变效果的触摸开关.今天触摸屏到处可见,如智能手机.平板电脑和手持游戏机.所以,为什么不用触摸屏来接受用户的输入呢?

《动手玩转Arduino》——第11章 认识Arduino系列

第11章 认识Arduino系列 动手玩转Arduino在本章,我们将: 学习如何在面包板上做自己的Arduino电路:研究各种Arduino兼容板的特性和优点:学习开源硬件.我们要把整个Arduino分解成若干个元件,然后在面包板上搭出自己的Arduino电路来.自己搭电路可以省钱,在作品和原型都在不断变化时特别有用.我们还会学习一些新的元件和电路知识.然后研究如何能不借助额外的硬件把程序上传到自己做的Arduino上去.最后,我们要尝试Arduino Uno以外的常见的版本,找出它们的不同.

《动手玩转Arduino》——2.2 看一下Arduino IDE

2.2 看一下Arduino IDE 如图2-10所示,Arduino IDE里有一个简单的文本编辑器.IDE的界面可以分成3个主要的区域:命令区.文字区和消息窗口区. 2.2.1 命令区 IDE界面的上部是命令区,包括标题栏.菜单项和图标.标题栏显示程序的文件名(如sketch_mar22a),以及IDE的版本(如Arduino 1.0).在它下面是菜单项包括File(文件).Edit(编辑).Sketch(程序).Tools(工具)和帮助,以及图标,下面逐一解释. 1.菜单项 和任何字处理软

《动手玩转Arduino》——第2章 探索Arduino板和IDE 2.1 Arduino板

第2章 探索Arduino板和IDE 本章我们将研究Arduino板和IDE软件,我们要用IDE软件创建和上传Arduino程序到Arduino板(Arduino用草图表示程序,我们还是继续用程序这个传统术语).我们会学到程序的基本框架和程序里可以实现的基本功能,我们要创建和上传我们的第一个程序. 2.1 Arduino板 Arduino到底是什么?根据Arduino网站(http://www.arduino.cc/ )的介绍,它是一个开源的电子原型平台,这个平台是由灵活易用的硬件和软件所组成的

《动手玩转Arduino》—— 第11章 认识Arduino系列 11.1 作品37:在面包板上做自己的Arduino

###第11章 认识Arduino系列 在本章,我们将: 学习如何在面包板上做自己的Arduino电路: 研究各种Arduino兼容板的特性和优点: 学习开源硬件. 我们要把整个Arduino分解成若干个元件,然后在面包板上搭出自己的Arduino电路来.自己搭电路可以省钱,在作品和原型都在不断变化时特别有用.我们还会学习一些新的元件和电路知识.然后研究如何能不借助额外的硬件把程序上传到自己做的Arduino上去.最后,我们要尝试Arduino Uno以外的常见的版本,找出它们的不同. 11.1

《动手玩转Arduino》——11.1 作品37:在面包板上做自己的Arduino

11.1 作品37:在面包板上做自己的Arduino 随着作品和实验在复杂度和数量上逐渐加大,为每个任务购买Arduino板的成本很容易会失去控制,特别是当你希望同时做不止一个作品的时候.因此,如果在面包板上搭一个Arduino电路,然后再扩展来搭出整个电路,以这样的方式把Arduino板组合进整个电路,会更便宜也更方便.在面包板上把基本的Arduino电路搭出来所需的元件成本应该低于10美元,而且如果没有损坏,这些元件通常还可以再用于其他作品.如果作品需要大量外部电路,自己做会更容易,这样可以

《动手玩转Arduino》——11.2 众多的Arduino板

11.2 众多的Arduino板 虽然在这本书中,我们只会使用Arduino Uno板,不过你可以自己选择很多另外的板子.这些板子具有不同的外形尺寸.输入和输出引脚的数量.程序存储空间的大小,以及购买的价格. 板子之间最关键的不同是所用的单片机.目前的板子主要是使用ATmega328或ATmega2560单片机,Due用的是另外的更强大的版本.这些单片机(包括ATmega328的两个版本)的主要区别总结在表11-2中. 用来比较不同的Arduino兼容的板子的主要参数是板上存储器的类型以及每种类