本帖最后由 yang_alex 于 2018-3-6 23:52 编辑
Arduino使用起来要比其他微处理器更容易,尤其是针对没有电子技术基础的人,比如小学生、跨领域创新者,Arduino的编程语言更为简单和人性化,Arduino编程语言基于C语言,但对初学者来说实用性又远高于C语言,主要由于它将一些常用语句函数化,例如:延时函数delay(1000)即为一秒。还有一些通过库函数的调用实现。这样,初学者只要会调用这些函数就好了。而更多的细节被封装在库里面。
最初的Arduino基于AVR平台,对AVR库进行了二次编译封装,好处是把端口都打包好了,寄存器、地址指针之类的基本不用管。大大降低了软件开发难度,适宜非专业爱好者使用。缺点在于,因为是二次编译封装,代码不如直接使用 AVR 代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。
目前随着技术的发展,Arduino已经不仅仅局限于AVR平台,还出现了许多其他平台像ESP8266、STM32等。但是由于有统一的接口定义,不同平台之间的应用程序迁移非常方便!
通过学习,发现Arduino程序基本架构非常简单:是先声明变量及接口名称,然后以 setup()开头,loop()作为主体的一个程序极架。
我们通过一个简单的闪灯的例子来进行学习。
声明变量及接口名称
// constants won't change. Used here to set a pin number:
const int ledPin = LED_BUILTIN;// the number of the LED pin
// constants won't change:
const long interval = 500; // interval at which to blink (milliseconds)
setup()是用来初始化变量,管脚模式,调用库函数等等,此函数只运行一次。
本程序在 setup()中用数字 IO 口输入输出模式定义函数 pinMode(pin,mode),将ledPin引脚设置为输出模式。
void setup() {
// set the digital pin as output:
pinMode(ledPin, OUTPUT);
}
loop()函数是一个循环函数,函数内的语句周而复始的循环执行。
本程序在 loop()中先用 数字 IO 口输出电平定义函数 digitalWrite(pin, value),将ledPin定义为高电平,点亮 led灯;接着调用延时函数 delay(ms)(单位 ms)延时 500ms,让发光二极管亮0.5s;再用数字IO 口输出电平定义函数 digitalWrite(pin, value),将ledPin定义为低电平,熄灭 led 灯;接着再调用延时函数 delay(ms)(单位 ms)延时 500ms,让发光二极管熄灭 0.5s。因为 loop()函数是一个循环函数,所以这个过程会不断的循环。
// the loop function runs over and over again forever
void loop() {
digitalWrite(ledPin, HIGH); // turn the LED on (HIGH is the voltage level)
delay(interval); // wait for a second
digitalWrite(ledPin, LOW); // turn the LED off by making the voltage LOW
delay(interval); // wait for a second
}
当然,这是比较简单的程序。更复杂详细的语法、库函数定义、用法还是需要找本教材来仔细学习的。
|