1、 analogRead(pin)函数 #
pin:要读取的模拟输入引脚的名称(大多数板上的 A0 到 A5,MKR 板上的 A0 到 A6,Mini 和 Nano 上的 A0 到 A7,Mega 上的 A0 到 A15)。
从指定的模拟引脚读取值。Arduino 板包含一个多通道、10 位模数转换器。这意味着它会将 0 和工作电压(5V 或 3.3V)之间的输入电压映射为 0 和 1023 之间的整数值。例如,在 Arduino UNO 上,这会产生以下读数之间的分辨率:5 伏/1024 单位或, 每单位 0.0049 伏 (4.9 mV)。有关某些 Arduino 板的可用引脚、工作电压和最大分辨率,例如,下面代码执行将模拟引脚电压读取并显示到串口显示器。
int analogPin = A3; // potentiometer wiper (middle terminal) connected to analog pin 3
// outside leads to ground and +5V
int val = 0; // variable to store the value read
void setup() {
Serial.begin(9600); // setup serial
}
void loop() {
val = analogRead(analogPin); // read the input pin
Serial.println(val); // debug value
}
2、analogWrite(pin, value)函数 #
pin:要写入的 Arduino 引脚。允许的数据类型:int.
value:占空比:介于 0(始终关闭)和 255(始终打开)之间。允许的数据类型:int.
将模拟值(PWM 波)写入引脚。可用于以不同的亮度点亮 LED 或以不同的速度驱动电机。调用 后analogWrite(),引脚将生成指定占空比的稳定矩形波,直到下一次调用analogWrite()(或调用digitalRead()或digitalWrite())在同一引脚上。
下列代码将输出设置为与从电位计读取的值成比例的 LED。
int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}
3、自定义函数 #
自定义函数应该可以分为四类:
3.1、第一类是无返回值无参数类型。
例如你自定义一个函数:
void ledflash() //定义一个名为ledflash的函数,
{ //函数的具体内容写在{}内
digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);
} //注意,函数的定义在loop()循环之外。
那么只要在loop()主程序内写上: ledflash();程序就自动回调用ledflash函数,执行函数内容。
3.2、第二类是无返回值有参数类型。
运行第一类函数只能运行事先写好的程序,无法在调用的时候控制。那么这第二类函数就可以加入一个参数来控制了,例如:
void ledflash(int i) //定义一个名为ledflash的函数,
{ //函数的具体内容写在{}内
digitalWrite(led,HIGH);
delay(i);
digitalWrite(led,LOW);
delay(i);
} //注意,函数的定义在loop()循环之外。
这类函数在调用的时候需要给它一个参数,例如: ledflash(1000);那么在调用函数的时候就会给函数内的i变量赋值为1000。
3、第三类是有返回值无参数类型
前两类函数都只是实现一个具体的功能,函数本身不会返回一个结果,那么第三类函数就可以实现运行函数后会返回一个值,例如:
int analogzhi() //首先用int定义这个函数返回的值得类型为int型
{
int i; //定义一个变量用于返回值
i=analogRead(A0);
return(i); //返回i的值
}
在调用的时候可以如下所示:int a; //先定义一个变量a=analogzhi(); //令这个变量等于analogzhi函数的返回值
4、第四类当然是既有返回值又有参数的函数
例如:
int jisuan(int i)
{
int j;
j=i*10;
return(j);
}
在调用的时候如下所示:
int a; //先定义一个变量a=jisuan(2); //令这个变量等于jisuan函数参数为2时的值。
4、 所需元件清单 #
Arduino Uno主板
USB数据线
RGB-LED灯
面包板
9V电池
杜邦导线
5、动手实验 #
实验1、编写程序显示七色光
A实验接线
redPin–D11
GND—GND
greenPin—D10
bluePin–D9
B实验代码
const int redPin = 11; // R petal on RGB LED module connected to digital pin 11
const int greenPin = 10; // G petal on RGB LED module connected to digital pin 10
const int bluePin = 9; // B petal on RGB LED module connected to digital pin 9
/**************************************************************************/
void setup()
{
pinMode(redPin, OUTPUT); // sets the redPin to be an output
pinMode(greenPin, OUTPUT); // sets the greenPin to be an output
pinMode(bluePin, OUTPUT); // sets the bluePin to be an output
}
/***************************************************************************/
void loop() // run over and over again
{
// Basic colors:
color(0,255,255); // turn the RGB LED red
delay(1000); // delay for 1 second
color(255,0,255); // turn the RGB LED green
delay(1000); // delay for 1 second
color(255,255,0); // turn the RGB LED blue
delay(1000); // delay for 1 second
// Example blended colors:
color(0,255,255); // turn the RGB LED red
delay(1000); // delay for 1 second
color(0,128,255); // turn the RGB LED orange
delay(1000); // delay for 1 second
color(0,0,255); // turn the RGB LED yellow
delay(1000); // delay for 1 second
color(255,0,255); // turn the RGB LED green
delay(1000); // delay for 1 second
color(255,255,0); // turn the RGB LED blue
delay(1000); // delay for 1 second
color(255,0,0); // turn the RGB LED indigo
delay(1000); // delay for 1 second
color(128,255,0); // turn the RGB LED purple
delay(1000); // delay for 1 second
}
/******************************************************/
void color (int red, int green, int blue) // the color generating function
{
analogWrite(redPin, red);
analogWrite(bluePin, blue);
analogWrite(greenPin, green);
}
实验2、使用一个按钮模块,三个Led灯,每按一下按钮,Led灯就变换一种闪烁方式。注意,可以把每种闪烁方式写成一个函数,这样在loop主程序中简单得调用这些函数就可以了。实验代码
待填写