arduino默认程序哪两段

arduino默认程序哪两段,第1张

Arduino语言和C语言很类似。整个Arduino程序可以分为两个大块:setup函数和loop函数。

其中setup(初始化)函数为上电时一开始就执行的函数。类似电脑的开机自启动程序,此函数仅在上电时被执行一次,此后永不执行,除非重启。此函数内的代码一般为各种元件、模块、功能的初始化函数。

而loop(循环)函数则是初始化完成后一直执行的函数。此函数其实为一个无限循环(死循环宽仔),里面的代码将被反复执行,直到断电或者重启。大部分的代码都在这个函数内。

在初始化部分中,又有一个pinMode函数,这个函数是用来规定当前管脚功能的。

语法规则:pinMode(引脚编号,模式)

其中模式主要有三种:

OUTPUT——输出

INPUT——输入

INPUT_PULLLUP——带上拉电阻的输入。对于什碧备么是上拉电阻,以后的推送中会介绍。

在这里是规定为输出模式以点亮LED。

若你想让管脚输出或者输入高/低电平,请务必在初始化部分加上这个函数,否则会有很多意想不到的问题!

在循环部分中,有两个函数:

第一个是digitalWrite函数,这个函数是用来规定管脚的输出的。

语法规则:digitalWrite(引脚编号,模式)

其中模式有两种:

HIGH或1——高电平,输出+5V电压

LOW或0——低电平,输出0V电压

第二个是delay函数,这个函数是用来控制延时的。

语法规则:delay(时间)

时间单位为毫秒(ms),1秒等于1000毫秒。悔巧毁

在延迟期间内,处理器将什么也不做直到延时结束,这其实极大地浪费了处理器的性能,故我个人不推荐直接通过delay来实现延时的目的。你可以使用其他方法来替代,具体做法将在以后的推送中介绍。

这样一来,这个程序也就十分清晰明了了:

首先,规定13号引脚,也就是LED_BUILTIN,为输出模式。

然后,让其输出高电平来点亮LED并延迟一秒来维持这种状态。

再后,让其输出低电平来熄灭LED并延迟一秒来维持这种状态。

 SD卡体积小,价格便宜,因此在许多工业数据记录和家用电子产品中有越来越多的应用。Arduino可以通过SPI接口与之通信,进行诸如建立文件、删除文件、向文件中添加内容、修改文件等 *** 作,这样采用Arduino配合SD卡可以开发数据记录设备。

Arduino与SD卡的简单连接,只需要6只电阻和1张SD卡,通过软件模拟的方式实现SPI接口,Arduino与SD卡连接电路如图2所示。

2.gif

 

图2 Arduino与SD卡连接电路

由于SD卡的 *** 作电压为3.3 V,而Arduino的逻辑电压为5 V,因此需要用起分压作用的电阻(本文采用了Josh Adams书中的验证性电路),在实际的应用中最好采用分压模块以保证卡和Arduino板的安全。之后在网址http://code.google.com/p/sdfatlib/下载Bill Greiman开发的SdFat.h和SdFatUtil.h头文件和库文件,并安装到Arduino安装目录中的库文件夹中就可以使用了。简化程序如下:

#include

#include

Sd2Card card

SdVolume volume

SdFile root,file

void writeString(SdFile&f,char * str){

Uint8_t n

for(n=0,str[n]n++)

F.write((uint8_t*) str,n)

}

void setup(){

card.init(SPI_HALF_SPEED)

root.openRoot(&volume)

File.open(&root,“testfile.txt”,0_CREAT|0_EXCL|0_WRITE)斗仔庆

File.timestamp(2,2011,11,11,25.12.34.56)

writeString(file,“something you want ”)

File.cose()

}

void loop(){

}

将该程序下载到Arduino主控板内即可向SD卡内建立一个新的文件,并写入“something you want ”字符,当然也可以根据需要写入想要记录的信息。

程序的开头包含了两戚桥个头文件:SdFat.h和SdFatUtil.h。这两个头文件定义了一些 *** 作SD卡必需的类。之后建立4个有关 *** 作SD卡的对象。然后自定义了一个向SD卡内写一个字符串的函数,这个函数需要一个文件的引用和一个字符串作为参数。setup函数是Arduino软件项目中必须有的,做一些运行的初始化工作。这个实例程序由于只是完成简单的写文件 *** 作,因此对文件的写 *** 作在这个函数中完成。函数依次完成了设定SD卡的通信模式为SPI模式、打开卡的根目录、建立文件名为testfile.txt的文本文件、给文件添加时间信息、向文件内写入文件内容、关闭文件。从以上的过程中看,采用Arduino *** 作SD卡上的文件与采用C语言 *** 作PC上的文件十分相似,这也是空握Arduino易用性的体现,再一次验证了采用Arduino开发电子互动产品的方便性。

一. Proteus仿真平台简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。现已受到电子类特别是单片机爱好者、从事单片机教学的教师、致力于单片机开发应用等的科技工作者的青睐。以前的如EWB等软件只能仿真数字电路和模拟电路,不能仿真CPU和程序。

当前网上Proteus有7.8 SP2,7.10 SP0,8.0等几个版本,这几个JM的版本都比较稳定。这些版本的元件模型格式是兼容的,DSN仿真原理文件是一样的。8.0版本只是把DSN原理图、软件编辑环境和编译器集成为一个工程文件,成为一个象“傻瓜相机”一样的东西,但对初学Proteus者比较方便,因为内部已经集成了程序编辑器和可下载不同的编译器。

7.xx版本,DSN仿真原理、编辑器和编译器三者是独立的。而8.0版本是集成的。8.0版本在多CPU仿真时,设置不太容易;集成后软件有点大,不如7.xx版本简洁。

二. 开发三步曲

编辑器

用户选择用自己的喜欢的编辑器(如Notepad++,Utraedit,Source Insight,vim,slickedit,notepad等),用此写源程序。

C/C++编译器

用户按CPU型号选择自己喜欢的C/C++编译器(如Winavr,CodeSourcery,Keil,IAR,WinARM,Watcom等等),一般的编译器都可以生成标准的.hex,和.elf格式态早的可执行目标文件。 Arduino IDE实际使用的是Winavr中的gcc。用此把第一步写的源程序编译成.hex和.elf文件。

硬件仿真图

Proteus中的Model下有元件仿真库,用户使用这些仿真元件,设计出自己的硬件仿真原理图,也叫.dsn文件。在Proteus环境下,用自己设计的.dsn文件,在CPU中加载第二步生成的.hex或.elf文件,就可以仿真运行了。.elf文件内部包含调试信息,可以单步、设置断点调试程序。

三. Arduino UNO硬件仿真原理图

本仿真电路图(HW目录下Arduino UNO.dsn文件)可以仿真Arduino Diecimila,或Arduino UNO板。前者采用FT232芯片做为串行通信模块,后都采用ATMEGA16U2微处理器代替了FT232,它们都是在USB上实现一个异步串行通信的功能。我们在仿真中,采用了Proteus中的串行口物理接口模型COMPIM,COMPIM完全可以代替串行通信的功能,它实现了与实际PC机物理串行接口RS232的连接,使仿真的虚拟世界与真实的世界连接。

图1-Arduino UNO硬件仿真原理图

图中左下角增加了两个串行通信虚拟终端VT1和VT2,用于调试串行通信帆搭雀接收数据或发送数据使用。其它为Arduino Diecimila或UNO的仿真电路,详细标注了引脚名称,与实现电路板一样。用Proteus仿真工具可以双击Arduino UNO.dsn打开Arduino仿真电路图。

四. Arduino开发软件下载及设置

1.下载并安装Arduino集成开发环境(Arduino IDE)

到官网上下载并安装Arduino IDE,当前最新稳定版本为1.0.6版本。

http://arduino.cc

http://arduino.cc/en/Main/Software

2.选择Arduino板类型及串行口

如图2,仿真时,选择前两个板都可以,在与实际Arduino板连接时,选择相对应的板,并选择相对应的串行口。

***因本文使用Arduino仿真开发方法,在仿真电路图中,只要选择目标执行文件.hex或枝咐.elf文件就相当于加载程序,所以不用串行口加载程序。

图2-选择板子型号

图3-选择串行口

3.设置Arduino IDE个人偏好(重要)

选择File->Preferences

图4-选择preferences

找到设置偏好文件preferences.txt

图5-选择preferences.txt

用编辑器打开偏好设置文件preferences.txt

【1】.在arduino工具的File->preferences中找到preferences.txt文件,用记事本打开。

【2】.在preferences.txt文件的最后加一行,编辑加入 build.path=d:\MyHexDir,目录名自己定。为了观察方便,(本人设置是build.path=d:###ArduinoDbgDir )。

【3】先关闭Arduino IDE;

【4】之后保存preferences.txt;

以上顺序不要变。这样就可以在Arduino编译时,看到d:\MyHexDir目标下的目标文件,而不会自动删除。

4. 编译

(1)双击SW\Blink目录下的源文件Blink.ino,自动打开Arduino IDE。

(2)点击Sketch->Verify/Compile编译生成目标文件,目标文件在d:\MyHexDir下(本人的在d:###ArduinoDbgDir目录下 )。

(3)点击CP.bat,会把.hex和.elf文件复制更新到当前.ino所在目录下。可以自己编辑CP.bat文件,改变目录。

(4)在Proteus中设置好一次.hex或.elf文件的位置就可以,以后更新.hex或.elf文件时,自动认为已经加载最新的。

五. 第一个Hello World程序仿真运行

Hello World程序就是在计算机屏幕上显示“Hello,World!”的一个程序,在嵌入式系统开发中,LED的闪烁程序就是Hello World程序,Hello World程序很简约,一般它是程序员在新的开发环境中第一个要运行的程序,但是简约并不简单。

虽然Hello World程序很简约,但是,为了这个简约的程序能够运行,需要进行开发工具链的选择、配置开发工具链,这需要大量繁琐的工作要做。Hello World程序能否运行,可以验证你的编译、开发环境、运行环境是否正确。

第一个程序Blink.ino如下:

///0. 引脚定义

#define LED_PIN   13        //定义LED引脚为13号数据引脚(DIG13)

///1. 初始化

void setup() {

 pinMode(LED_PIN,OUTPUT)// 初始化DIG13为输出

}

///2. 循环

void loop() {

     digitalWrite(LED_PIN,HIGH)//DIG13输出高电平

     delay(1000)                //延时1秒

     digitalWrite(LED_PIN,LOW) //DIG13输出低电平

     delay(1000)                //延时1秒

}

(1)用Arduino IDE打开Blink.ino,编译之;

(2)在d:\MyHexDir目录下会生成.hex和.elf文件等;

(3)点击.ino所在目录下的CP.bat, 本目录多了两个文件.hex和.elf;

(4)用Proteus打开HW\Arduino UNO.dsn,双击Atmga 328P微处理器,在Program file项中选择上边SW\Blink\Blink.hex文件,或Blink.elf文件,若加载Blink.elf文件,则可以单步或设置断点调试;

(5)在Proteus中点击左下角运行仿真,如果图1中的LED小灯闪烁,则你的仿真运行环境设置正确。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12524207.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存