## 16.1 analogReference() 配置模拟输入的基准电压(即输入范围的最大值)。选项包括: DEFAULT:默认5V(Arduino板为5V)或3.3伏特(Arduino板为3.3V)为基准电压。 INTERNAL:在ATmega168和ATmega328上以1.1V以及在基准电压ATmega8上以2.56V为基准电压(Arduino Mega无此选项) INTERNAL1V1:以1.1V为基准电压(此选项仅针对)Arduino Mega) INTERNAL2V56:以2.56V为基准电压(此选项仅针对)Arduino Mega) EXTERNAL:以AREF引脚(0至5V)电压为基准电压。 参数 type:使用哪种参考类型(DEFAULT, INTERNAL, INTERNAL1V1, INTERNAL2V56, 或者 EXTERNAL)。 返回 无 注意事项 改变基准电压后,从analogRead()读取的数据可能不准确。 警告 不要在AREF使用任何不小于0的引脚V或超过5V的外部电压。如果你使用AREF您正在调用引脚上的电压作为基准电压analogRead()参考类型必须考类型EXTERNAL。否则,您将削短有效的基准电压(内部生成)和AREF这可能会损害你Arduino板上的单片机。 此外,您还可以使用外部基准电压和AREF引脚之间连接一个5K在外部和内部基准电压之间切换电阻。请注意,由于总阻值会发生变化,AREF引脚内有32个K电阻。这两个电阻都有分压作用。例如,如果输入2.5V最后,电压在AREF引脚上的电压为2.5 * 32 /(32 5)= 2.2V。
17.1 tone()
在引脚上产生一个特定频率的方波(占空比50%)。可以设续时间,否则波形会产生直到调用noTone()函数。引脚可连接压电蜂鸣器或其他喇叭播放声音。UNO以及大多数其他常用板,最小频率为31Hz,最大频率为65535Hz,人耳正常听力频率在20-2万赫兹之间。
只能在同一时刻产生一个声音。如果一个引脚已经在播放音乐,请调用它tone()不会有效果。如果音乐在同一个引脚上播放,频率会自动调整。 tone(pin,frequency) tone(pin,frequency,duration) 可使用两到三个参数 pin为引脚编号,frequency无符号整形表示赫兹(Hz)、duration是单音的持续时间(单位:ms)未设置将一直运行。
(注意蜂鸣器的正负极)
void setup() {
pinMode(11,OUTPUT); } void loop() {
tone(11,2000,1000); delay(2000); }
17.2 noTone()
在引脚上产生特定频率的方波(占空比50%)。tone()方波。如果不使用tone()不会有效果。
17.3 shiftOut()
17.4 shiftIn() 这两个还没看懂再看。
17.5 pulseIn()
读取引脚脉冲(HIGH或LOW)。假如后面的参数是HIGH,则从HIGH开始计时LOW停止计时可返回引脚HIGH变为LOW的时间。pulseIn(pin, value) pulseIn(pin, value, timeout) timeout (可选):指定脉冲计数的等待时间,单位为微秒,默认值是1秒超出这个时间则返回0。
/*测距的原理是让TrigPin在电平LOW HIGH LOW中循环使组件不断发出超声波, * 超声波反射后被反射EchoPin接收,超声波让EchoPin的电平在HIGH和LOW中变化 * pulseIn会检测EchoPin电平发生变化的时间,结合超声波在空气中传播的速度,利用cm = pulseIn(EchoPin, HIGH) / 58.0; * 该公式计算距离并赋值cm。 */ const int TrigPin = 2; //发出超声波 const int EchoPin = 3; ///收到反射的超声波 float cm; ///测得的距离 void setup(
)
{
Serial
.
begin
(
9600
)
;
//设置波特率
pinMode
(TrigPin
, OUTPUT
)
;
pinMode
(EchoPin
, INPUT
)
;
}
void
loop
(
)
{
digitalWrite
(TrigPin
, LOW
)
;
//低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds
(
2
)
;
// delayMicroseconds是微秒延时在更小的时间内延时准确
digitalWrite
(TrigPin
, HIGH
)
;
delayMicroseconds
(
10
)
;
digitalWrite
(TrigPin
, LOW
)
;
//通过这里控制超声波的发射 cm
=
pulseIn
(EchoPin
, HIGH
)
/
58.0
;
//将回波时间换算成cm cm
=
(
int
(cm
*
100.0
)
)
/
100.0
;
//保留两位小数 这里是100 三位小数则是1000 Serial
.
print
(
"Distance:"
)
; Serial
.
print
(cm
)
; Serial
.
print
(
"cm"
)
; Serial
.
println
(
)
;
delay
(
1000
)
;
}
18.1 millis()
: 返回Arduino开发板从运行当前程序开始的毫秒数。这个数字将在约50天后溢出(归零)。
unsigned long time;
void setup(){
Serial.begin(9600);
}
void loop(){
serial.print(“Time:”);
time = millis();//打印从程序开始到现在的时间
serial.println(time);//等待一秒钟,以免发送大量的数据
delay(1000);
}
18.2 micros()
返回 从运行当前程序开始的微秒数。这个数字将在约70分钟后溢出(归零)。在 16MHz 的 Arduino 开发板上(比如 Duemilanove 和 Nano),这个函数的分辨率为四微秒(即返回值总是四的倍数)。在 8MHz 的 Arduino 开发板上(比如 LilyPad),这个函数的分辨率为八微秒。 注意 :每毫秒是1,000微秒,每秒是1,000,000微秒。
18.4 delayMicroseconds()
使程序暂停指定的一段时间(单位:微秒)。一秒等于1000000微秒。 目前,能够产生的最大的延时准确值是16383。这可能会在未来的Arduino版本中改变。对于超过几千微秒的延迟,你应该使用delay()代替。
19.1 min()
min(x, y) 计算两个数字中的最小值
19.2 max()
19.3 abs()
计算一个数的绝对值。
19.4 constrain()
将一个数约束在一个范围内 x=constrain(x, a, b); 参数 x:要被约束的数字,所有的数据类型适用。 a:该范围的最小值,所有的数据类型适用。 b:该范围的最大值,所有的数据类型适用。 (将x的值限制在a b之间) 返回值 x:如果 x是介于 a 和 b之间 a:如果 x小于a b:如果 x大于b
19.5 map()
map(value, fromLow, fromHigh, toLow, toHigh) 将一个数从一个范围映射到另外一个范围。也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。 不限制值的范围,因为范围外的值有时是刻意的和有用的。如果需要限制的范围, constrain() 函数可以用于此函数之前或之后。 注意,两个范围中的“下限”可以比“上限”更大或者更小,因此 map() 函数可以用来翻转数值的范围,例如: y = map(x, 1, 50, 50, 1); 这个函数同样可以处理负数,请看下面这个例子: y = map(x, 1, 50, 50, -100); 是有效的并且可以很好的运行。 map() 函数使用整型数进行运算因此不会产生分数,这时运算应该表明它需要这样做。小数的余数部分会被舍去,不会四舍五入或者平均。 value:需要映射的值 fromLow:当前范围值的下限 fromHigh:当前范围值的上限 toLow:目标范围值的下限 toHigh:目标范围值的上限 被映射的值。
三角函数部分还没看
21.1 randomSeed()
randomSeed(seed) 使用randomSeed()初始化伪随机数生成器。seed可以是固定值,此时产生的随机数是伪随机数,也可以是绝对随机的一个数,此时产生的随机数才是真正的随机数。 long,int - 这个是填在括号里面的数字根据这个数字来产出随机数。
21.2 random()
使用random()函数将生成 伪随机数。
long randNumber;
void setup(){
Serial.begin(9600);
randomSeed(analogRead(0));
}
void loop(){
randNumber = random(100,300);
Serial.println(randNumber);
delay(50);
}
random(max) random(min, max) min - 随机数的最小值,随机数将包含此值。此参数可选 max - 随机数的最大值,随机数不包含此值. min和max-1之间的随机数( 数据类型为long )
这下面的还没试验过
22.1 lowByte()
提取一个变量(例如一个字)的低位(最右边)字节。 lowByte(x) x:任何类型的值 字节
22.2 highByte()
提取一个字节的高位(最左边的),或一个更长的字节的第二低位。 highByte(x) x:任何类型的值 byte
22.3 bitRead()
读取一个数的位。 bitRead(x, n) 想要被读取的数 N:被读取的位,0是最低有效位(最右边) 该位的值(0或1)。
22.4 bitWrite()
在位上写入数字变量。 bitWrite(x, n, b) X:要写入的数值变量 N:要写入的数值变量的位,从0开始是最低(最右边)的位 B:写入位的数值(0或1) 无
22.5 bitSet()
为一个数字变量设置一个位。 bitSet(x, n) X:想要设置的数字变量 N:想要设置的位,0是最重要(最右边)的位 无
22.6 bitClear()
清除一个数值型数值的指定位(将此位设置成 0) bitClear(x, n) X:指定要清除位的数值 N:指定要清除位的位置,从0开始,0 表示最右端位 无
22.7 bit()
计算指定位的值(0位是1,1位是2,2位4,以此类推)。 bit(n) n:需要计算的位 位值