Arduino 的程序可以划分为三个主要部分:结构、变量(变量与常量)、函数。
函数
1、setup()
当Arduino开始的时候被调用。用它来初始化变量,设置引脚运行模式,启动库文件等。setup函数只运行一次,每次上电或者被重置时候调用。
int buttonPin = 3;
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
void loop()
{
// ...
}
2、loop()
创建setup()时,该函数设置初始值等一些初始化操作。该函数是Arduino运行控制的函数,所有的实时控制逻辑都在该方法内执行。
const int buttonPin = 3;
// setup initializes serial and the button pin
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
// loop checks the button pin each time,
// and will send serial if it is pressed
void loop()
{
if (digitalRead(buttonPin) == HIGH)
Serial.write('H');
else
Serial.write('L');
delay(1000);
}
3、pinMode()
配置指定的引脚的输入或输出模式。
模式类型: INPUT, OUTPUT, or INPUT_PULLUP.
输入为INPUT,因为是默认值所以可以不显示定义;可以使用INPUT_PULLUP模式启用内部上拉电阻。此外,INPUT模式显式禁止内部上拉。输出为OUTPUT,注意INPUT和OUTPUT都要全部大写
int ledPin = 13; // LED connected to digital pin 13
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
4、digitalWrite()
向指定引脚输出控制信号HIGH或者LOW。
int ledPin = 13; // LED connected to digital pin 13
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin as output
}
void loop()
{
digitalWrite(ledPin, HIGH); // sets the LED on
delay(1000); // waits for a second
digitalWrite(ledPin, LOW); // sets the LED off
delay(1000); // waits for a second
}
5、digitalRead()
读取指定引脚的值HIGH或者LOW。
int ledPin = 13; // LED connected to digital pin 13
int inPin = 7; // pushbutton connected to digital pin 7
int val = 0; // variable to store the read value
void setup()
{
pinMode(ledPin, OUTPUT); // sets the digital pin 13 as output
pinMode(inPin, INPUT); // sets the digital pin 7 as input
}
void loop()
{
val = digitalRead(inPin); // read the input pin
digitalWrite(ledPin, val); // sets the LED to the button's value
}
6. analogRead(pin);
读取施加到其中一个引脚的电压(比如模拟传感器值连续变化)
此函数返回0到1023之间的数字,表示0到5伏特之间的电压。例如,如果施加到编号0的引脚的电压为2.5V,则analogRead(0)返回512
int val = 0; // 用于接受针脚回传的数值
void setup() {
Serial.begin(9600);
}
void loop() {
val = analogRead(3); //读取针脚输入的数值
Serial.println(val); //在串口调试界面打印输出数值
}
7. analogReference()
配置用于模拟输入的参考电压(即用作输入范围顶部的值)选项是:
- DEFAULT - 5伏(5V Arduino板)或3.3伏(3.3V Arduino板)的默认模拟参考值
- INTERNAL - 内置参考,在ATmega168或ATmega328上等于1.1伏特,在ATmega8上等于2.56伏特(不适用于Arduino Mega)
- INTERNAL1V1 - 内置1.1V参考(仅限Arduino Mega)
- INTERNAL2V56 - 内置2.56V参考(仅限Arduino Mega)
- EXTERNAL - 施加到AREF引脚的电压(仅限0到5V)用作参考
注意事项
对AREF引脚的外部参考电压,请勿使用小于0V或大于5V的任何值。如果在AREF引脚上使用外部参考,则必须在调用 analogRead()函数之前将模拟参考设置为EXTERNAL
实例
int val = 0;
void setup() {
Serial.begin(9600);
analogReference(EXTERNAL);
}
void loop() {
val = analogRead(3);
Serial.println(val);
}
8. analogWrite()函数
analogWrite ( pin , value ) ;
value :0 (always off) 至 255 (always on)
analogWrite()函数将模拟值(PWM波)写入引脚。它可用于以不同的亮度点亮LED或以各种速度驱动电机。在调用analogWrite()函数之后,引脚将产生指定占空比的稳定方波,直到下一次调用analogWrite()或在相同引脚上调用digitalRead()或digitalWrite()。
注意事项
ATmega168或ATmega328板上,在针脚3,5,6,9,10和11上工作;
大多数引脚上的PWM信号频率约为490 Hz。;
实例
int ledPin = 9;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
analogWrite(ledPin, 200);
}
9. random()
用法:
random函数生成伪随机数
long random(max) ;
long random(min, max) ;
注意事项
random()返回的数字的分布本质上是随机的,但是顺序是可预测的。使用randomSeed(seed)函数可以重置Arduino的伪随机数生成器。
实例
long randNumber;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop() {
Serial.print("random1=");
randNumber = random(300);
Serial.println(randNumber);
Serial.print("random2=");
randNumber = random(10, 20);
Serial.println (randNumber);
delay(50);
}
引用: