int ledPin=10; //设定控制LED的数字IO脚 void setup() { pinMode(ledPin,OUTPUT);//设定数字IO口的模式,OUTPUT 为输出 } void loop() { digitalWrite(ledPin,HIGH); //设定PIN8脚为HIGH = 5V左右 delay(1000); //设定延时时间,1000 = 1秒 digitalWrite(ledPin,LOW); //设定PIN8脚为LOW = 0V delay(1000); //设定延时时间,1000 = 1秒 } // 之后的文字为注释。另外一种注释方法是这样的 /*注释文字*/ 这一行就是变量声明 int ledPin=10; 变量是用来存储数据的。 int 为变量类型 int 型变量,又称为整形变量,可以表示一个 -32768 到 32767 之间的数。 还有其他很多变量类型,使用什么样的变量类型是由你存储的内容来决定的。 这里存储的是 10 这个整数。所以用 int。 ledPin 为变量名 变量名字可以随便取得,但是为了符合约定俗成的规则一般用英文单词或者英文单词缩写,有多个类似的变量名的时候可以在 英文单词或者英文单词缩写 后面加数字 1234567890 来区分。一般老司机都会建议你变量名根据变量的功能来定名。 ledPin 这里说明,这个变量表示 LED 和 Arduino 的数字引脚 10 相连。 在声明的最后用一个“;”来表示这句语句的结束。 分号必不可少! 必须切换到英文输入法中的分号。 接下来是 setup() 函数: void setup() {} void 无返回值函数 () 空括号 在这个程序里有两个函数,一个叫做 setup,它的目的主要的 loop 函数运行之前为程序做必要的设置。 在 Arduino 中程序运行时将首先调用 setup() 函数。用于初始化变量、设置针脚的输出/输入类型、配置串口等等。 每次 Arduino 上电或重启后,setup 函数只运行一次。 函数内部被花括号括起来的部分将会被依次执行,从“ { ”开始,“ } ”结束。两个符号之间的语句都属于这个函数。 setup() 函数内只有一条语句,那就是 pinMode 函数。 pinMode(ledPin, OUTPUT); 这个函数是用来设置 Arduino 数字引脚的模式的,只用于数字引脚定义是输入(INPUT)还是输出(OUTPUT)。在函数的括号内包含两个参数,引脚号以及引脚的模式。 函数格式如下: pinMode(pin,mode); pin 引脚号 mode 模式 (OUTPUT/INPUT) pinMode 就是一个函数的调用,只是这个函数已经在 Arduino 软件内部编写好了,所以我们也只需直接调用就可以了。 在函数的括号内包含两个参数,就是需设定引脚号及引脚的模式,引脚号是 ledPin ,在我们程序的第一句话就声明过了,ledPin 代表 10,之后用到 ledPin 的地方,都可以理解为 10 的代名词。 这条语句想告诉 Arduino ,数字引脚 10 被设置为 OUTPUT 模式。 接着往下看,程序现在进行到我们的主函数 loop(): void loop() { digitalWrite(ledPin,HIGH); delay(1000); digitalWrite(ledPin,LOW); delay(1000); } Arduino 程序必须包含 setup() 和 loop() 两个函数,否则不能正常工作。在 setup() 函数中初始化和定义了变量后,就开始执行 loop() 函数。 loop 顾名思义,该函数在程序运行过程中不断的循环,loop() 函数中的每条语句都逐次进行,直到函数的最后,然后再从 loop 函数的第一条语句再次开始,三次、四次......一直这样循环下去,直到关闭 Arduino 或者按下重启按钮。 loop()函数内的第一条语句,涉及到了另外一个函数 digitalWrite() digitalWrite(ledPin,HIGH); digitalWrite(pin,value); pin 引脚号 value 值 HIGH/LOW 这个函数的意义是: 引脚 pin 在 pinMode() 的中被设置为 OUTPUT 模式时,其电压将被设置为相应的值,HIGH 为 5V(3.3V控制板上为3.3V),LOW为0V。 我们这里就是给引脚 10(ledPin) 一个 5V 的高电平,点亮了引脚 10 这个LED。 这里 pinMode() 被设置为 OUTPUT 时,才用到 digitalWrite()。这是为什么呢? pinMode() digitalWrite() digitalRead() 的关系 前面说了pinMode()中的INPUT与OUTPUT设置是有讲究的,是由器件本身的功能决定的。然而,前面设置INPUT和OUTPUT与之后程序需要如何执行也有着紧密关系的。既然pin是OUTPUT的话,那势必是控制器Arduino要给外界信号,所以需要Arduino给引脚先写入信号——digitalWrite()。我们这里还没用到digitalRead(),就先说了吧!如果pin是INPUT的话,是外界给了控制器Arduino信号,所以需要Arduino读取引脚信号——digitalRead()。 对于初学者来说,可以先学着用,再慢慢弄明白里面的原由。pinMode()设置为OUTPUT,对应使用digitalWrite()。INPUT对应使用digitalRead()。下表是一张对应表: 比如:LED、蜂鸣器 pinMode(pin,OUTPUT) digitalWrite(pin,HIGH/LOW) 比如:按键控制 pinMode(pin,INPUT) digitalRead(pin) 接着的一句语句: delay(1000); delay()函数,用于延时等待。 等待1000毫秒(1000毫秒也就是1秒,以此类推吧!)。我们举一反三一下,如果我们需要延时2秒呢?答案:delay(2000); 接着看下一句是: digitalWrite(ledPin,LOW); 这句话意思为,为引脚10一个0V的低电平,也就是熄灭LED。 然后再延时1秒。之后回到loop()函数开始部分,循环运行。 补充知识 变量 我们做个这样的比方,变量好比一个盒子,盒子的空间用来存放东西的,想要放的东西一定要比盒子小,那样才放的下,否则会溢出。变量也是一样,你存储的数据一定要在变量的范围内,否则会出现溢出。 之所以叫变量,是因为程序运行过程中,可以改变它的值。程序中,有时候会对变量值进行数字计算,变量的值也会随之发生变化。在以后的项目中,我们会有深入的了解。 在给变量起名字时,还需要强调的一点。在C语言中,变量名必须以一个字母开头,之后可以包含字母、数字、下划线。注意C语言认为大小写字母是不同的。C语言中还有一些特定的名称也是不能使用的,比如main,if,while等。为了避免这些特定名称作为变量名,所有这些名称在程序中显示为橙色。 函数 函数通常为具有一个个功能的小模块,通过这些功能的整合,就组成了我们的整段代码,一个完整的功能实现。这些功能块也能被反复运用。这时,就体现函数的好处了。在程序运行过程中,有些功能可能会被重复使用,所以只需程序中调用一下函数名就可以了,无需重复编写。而setup()和loop()比较特殊,不能反复调用。 还有一个概念我们需要了解一下,就是函数的返回值,我们可以理解为是一种反馈。在函数中是如何体现有无返回值的呢?就是,函数的声明,比如“ void ”就是函数无返回值的信号,并且后面的括号内为空,我们之后会经常用到。带返回值的函数,我们先不做说明了,有兴趣的可以去网上了解一下。 然而 setup 和loop 函数比较特殊,一段代码中只能使用一次。 INPUT 与 OUTPUT 的区别 我是这么理解的,INPUT 是输入的信号,是外部给控制器的信号,根据外部环境变化才给到控制器信号。比如像我们之后会用到的按钮,它就是典型的 INPUT 模式,它需要我们按下按键后,控制器才能接收到外部给它的指令。 OUTPUT 是输出信号,你需要让控制器能反应出某些特征,向外界发出信号,典型的就是LED,它闪烁的过程就是向外部发出信号的过程。又比如我们后面会用到的蜂鸣器,一个会发出声音的玩意儿,发声的过程就是向外界发出信号的过程,所以它也是OUTPUT。 |