
但程序写完后,闷洞还要编译,还要调试,修改错误,arduino编译好后还要下清罩带载到板子上。
所以一款把以上功能集成在一起答芦的编程IDE是能够大大提高工作效率的。
编写arduino的软件,最方便的莫过于直接到arduino的官网下载arduino IDE。
当然,其它宣称自己能支持arduino的IDE都能使用。
arduino编程语言入门:
1. 关键字
语法符号:
是迟坦一条语句结束的标志,供编译器识别,必须得有。
{}
{}将多条语句合成一个复合语句,能划分语句的作用域,增强整体整体的可读性让旦改。
//
//行注释,该行//后的所有语句,文字将不被编译器所编译、执行。相似的,还有,在中的所有语句,文字将不被编译器所编译、执行。
if(表达式)
{
语句A
}
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
...
else if(表达式n)
{
语句n;
}
else
{
语句n+1;
}
for(初始表达式;条件表达式;循环变量表达式)
{
循环体语句;
}
switch(表达式)
{
case 表达式常量1:语句序列1;
case 表达式常量2:语句序列2;
...
case 表达式常量i:语句序列i;
case 表达式常量n:语句序列n;
default:语句序列n+1;
}
while(条件表达式)
{
循环语句;
循环变量表达式;
}
do
{
循环体语句;
}while(条件表达式)
break
continue;
return x
goto 语句标号;
2. 数据类型:
3. 常量
HIGH | LOW 表示数字IO口的高低电平。HIGH 表示高电(1),LOW 表示低电平(0)。
INPUT | OUTPUT 表示数字IO口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR单片机能提供5V电压 40mA电流)。
true | false true 表示真(1),false表示假(0)。
4. 程序结构
声明变量及接口名称(例如:int iint ledPin=13)。
void setup() 函数在程序开始时使用,初始化变量,管脚模式,调用库函数等(例如:pinMode(ledPin,OUTUPT))。
void loop() 在void setup()函数之后,即初始化之后,loop() 让你的程序循环地被执行。使用它来运转Arduino。
5. 数字 I/O
以下型号为UNO
pinMode(pin, mode)
数字IO口输入输出模式定义函数,pin表示为0~13, mode表示INPUT或OUTPUT。
digitalWrite(pin, value)
数字IO口输出电平定义函数,pin表示为0~13,value表示为HIGH或LOW。
必须先定义为输入或输出模式digitalWrite才能生效。
int digitalRead(pin)
数字IO口读输入电平函数,pin表示为0~13,value表示为HIGH或LOW。比如可以读数
字传感器。
6. 模拟IO
int analogRead(pin)
模拟IO口读函数,pin表示为0~5(ArduinoDiecimila为0~5,Arduino nano为0~7)。比如可以读模拟传感器(10位AD,0~5V表示为0~1023)。
analogWrite(pin, value) - PWM
数字IO口PWM输出函数,Arduino数字IO口标注了PWM的IO口可使用该函数通常在引脚的旁边标注~,pin表示3, 5, 6, 9,10, 11,value表示为0~255。比如可用于电机PWM调速或音乐播放。
7. 扩展 I/O
shiftOut(dataPin, clockPin, bitOrder,value);
SPI外部IO扩展函数,通常使用带坦判SPI接口的74HC595做8个IO扩展,dataPin为数据口,clockPin为时钟口,bitOrder为数据传输方向(MSBFIRST高位在前,LSBFIRST低位在前),value表示所要传送的数据(0~255),另外还需要一个IO口做74HC595的使能控制。
unsigned long pulseIn(pin, value);脉冲长度记录函数,返回时间参数(us),pin表示为0~13,value为HIGH或LOW。比如value为HIGH,那么当pin输入为高电平时,开始计时,当pin输入为低电平时,停止计时,然后返回该时间。
8. 时间函数
unsigned long millis();返回时间函数(单位ms),该函数是指,当程序运行就开始计时并返回记录的参数,该参数溢出大概需要50天时间。
delay(ms);延时函数(单位ms)。
delayMicroseconds(us);延时函数(单位us)。
9. 数学函数
min(x, y) 求最小值。
max(x, y) 求最大值。
abs(x) 计算绝对值。
constrain(x, a, b) 约束函数,下限a,上限b,x必须在ab之间才能返回。
map(value, fromLow, fromHigh, toLow,toHigh)约束函数,value必须在fromLow与toLow之间和fromHigh与toHigh之间。
pow(base, exponent)开方函数,base的exponent次方。
sq(x)平方。
sqrt(x)开根号。
三角函数:
sin(rad)
cos(rad)
tan(rad)
10. 随机数函数
randomSeed(seed);随机数端口定义函数,seed表示读模拟口analogRead(pin)函数 。
long random(max);随机数函数,返回数据大于等于0,小于max。
long random(min, max);随机数函数,返回数据大于等于min,小于max。
11. 外部中断函数
attachInterrupt(interrupt, , mode;外部中断只能用到数字IO口2和3,interrupt表示中断口初始0或1,表示一个功能函数,mode:LOW低电平中断,CHANGE有变化就中断,RISING上升沿中断,FALLING 下降沿中断。
detachInterrupt(interrupt);中断开关,interrupt=1 开,interrupt=0 关。
interrupts();中断使能函数,用于使能中断。
noInterrupts();中断禁止函数,禁止中断。
12. 串口收发函数
Serial.begin(speed);串口定义波特率函数,speed表示波特率(串行每秒传输数据位数的速率),如9600,19200等。
int Serial.available() 判断缓冲器状态。
int Serial.read();读串口并返回收到参数。
Serial.flush();清空缓冲器。
Serial.print(data);串口输出数据。Serial.print(数据,数据的进制) 默认为十进制(DEC)
Serial.println(data);串口输出数据并带回车符。
13. 重要
以上列举了一些较常用的函数,事实上,在Arduino的安装目录下的libraries还有众多函数可以根据需要进行调用和学习。
也可以自己编写函数然后按照libraries目录下其他函数的格式打包好。放置在libraries目录下,然后自己就可以在IDE环境下调用自己编写的函数了。
通过以上介绍,其实大家可以看到arduino编程语言入门并不难,以上内容分享出来给大家作为参考,想要了解更多更专业的arduino编程语言教程可以去DF创客社区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小灯闪烁,则你的仿真运行环境设置正确。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)