C++基本语法
变量和赋值
// 整数int,默认值为0
int currentTemperature;
int aaa = 18;
// 赋值
aaa = 20;
aaa += 10;
for循环
for(int x=0;x<3;x++){
digitalWrite(ledPin,HIGH); //设置LED 为开
delay(150); //延时150毫秒
digitalWrite(ledPin,LOW); //设置LED 为关
delay(100); //延时100毫秒
}
随机数
rand
要取得[0,n)
就是rand()%n
表示 从0到n-1的数
要取得[a,b)
的随机整数,使用(rand() % (b-a))+ a
;
要取得[a,b]
的随机整数,使用(rand() % (b-a+1))+ a
;
要取得(a,b]
的随机整数,使用(rand() % (b-a))+ a + 1
;
通用公式:a + rand() % n
;其中的a
是起始值,n
是整数的范围。
要取得a
到b
之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)
。
要取得0~1
之间的浮点数,可以使用rand() / double(RAND_MAX)
。
random
random(min,max)
random
也可以直接生成随机数。
constrain
constrain(x,a,b)
若x<a
则返回a
,若x>b
则返回b
.
逻辑连接符
&&
与
||
或
!
非
map
map(val,fromLow,fromHigh,toLow,toHigh)
将一个在fromLow
~fromHigh
范围内的val
值等比例映射到toLow
~toHigh
.
取反
a = !a
Arduino Functions
pinMode
pinMode(pinNo, OUTPUT/INPUT)
用来设置Arduino数字引脚的模式的,只用于数字引脚定义是输入(INPUT)还是输出 (OUTPUT)。参数1:引脚号;参数2:输入/输出
digitalWrite
digitalWrite(pinNo,HIGH/LOW)
设置指定数字引脚的电平高低。
如果pin是INPUT的话,是外界给了控制器Arduino信号,所以需要Arduino读取引脚信号——digitalRead()。
analogWrite
analogWrite(pinNo, value)
analogWrite()函数用于给PWM口写入一个0\~255的模拟值。特别注意的是,analogWrite()函数只能写入具有PWM功能的数字引脚。用于3,5,6,10,11 Digital Pin(带有~符号)
PWM是一项通过数字方法来获得模拟量的技术。数字控制来形成一个方波,方波信号只有开关两种状态(也就是我们数字引脚的高低)。通过控制开与关所持续时间的比值就能模拟到一个0到5V之间变化的电压。开(学术上称为高电平)所占用的时间就叫做脉冲宽度,所以PWM也叫做脉冲宽度调制。
PWM比较多的用于调节LED灯的亮度。或者是电机的转动速度,电机带动的车轮速度也就能很容易控制了,在玩一些Arduino小车时,更能体现PWM的好处。
analogRead
analogRead(pinNo)
**模拟量不需要输入输出模式**。
从指定的模拟接口读取数值。0-5V电压映射到0-1023整数。
即:测量到的电压越高,返回的数值越高。
delay
delay(time)
参数为延迟的时间(ms),用来延迟程序
millis
millis()
)是一个函数,该函数是Arduino语言自有的函数,它返回值是一个时间,Arduino开始运行到执行到当前的时间,也称之为机器时间,就像一个隐形时钟,从控制器开始运行的那一刻起开始计时,以毫秒为单位。
Tone
与蜂鸣器相关。
– tone(pin,frequency)
Pin
都是指连接到蜂鸣器的数字引脚,frequency
是以Hz
为单位的频率值。
– tone(pin,frequency,duration)
第二个函数,有个duration
参数,它是以毫秒为单位,表示声音长度的参数。像第一个函数,如果没有指定duration
,声音将一直持续直到输出一个不同频率的声音产生。
– noTone(pin)
noTone(pin)
函数,结束该指定引脚上产生的声音。
有源蜂鸣器和无源蜂鸣器的根本区别是输入信号的要求不一样。这里的“源”不是指电源,而是指振荡源,有源蜂鸣器内部带振荡源,说白了就是只要一通电就会响。而无源内部不带震荡源,所以如果仅用直流信号无法使其响,必须用2K-5K的方波去驱动它。
中断
attachInterrupt(interrupt, function, mode)
它是一个当外部发生中断时,才被唤醒的函数。区别于其他函数,它依附于中断引脚才发生。大多数板子都有两个外部中断引脚:数字引脚2(中断0)和数字引脚3(中断1)。中断0与中断1是中断号,在函数中需要用到。
中断信号是不受loop程序执行顺序影响的,只要一有中断信号,就会立马进入中断函数。
不同板子,中断号对应引脚可能不同,可以查阅Arduino官方编程语法手册。
–interrupt
:中断号0
或者1
。如果选择0
的话,连接到数字引脚2
上,选择1
的话,连接到数字引脚3
上。
–function
:调用的中断函数名。写中断函数时,需要特别说明以下三点:
– 该中断函数不能含有参数和返回值。也就是说,要是一个无返回值的函数。
– 中断函数中不要使用delay()和millis()函数,因为数值不会继续变化。
– 中断函数中不要读取串口,串口收到的数据可能会丢失。
–mode
:中断的条件。只有特定的以下四种情况:
–LOW
:当引脚为低电平时,触发中断。
–CHANGE
当引脚电平发生改变时,触发中断。
–RISING
当引脚由低电平变为高电平时,触发中断。
–FALLING
当引脚由高电平变为低电平时,触发中断。
Arduino Constants
LED_BUILTIN
LED_BUILTIN
是默认的LED输出,即13引脚
HIGH LOW
HIGH
和LOW
为高低电平
INPUT OUTPUT
INPUT``OUTPUT
定义输入输出
串口通信
打开串口
Serial.begin(9600);
在setup中,设置打开串口,并将比特率调为9600kbps
从板子发送信息
Serial.print(msg, *进制)
Serial.println(msg, *进制)
println会额外带一个回车。
读取信息
Serial.read()
空气对INPUT的影响
如果没有配置下拉电阻或接地,若一个input引脚悬空,则可能会浮动,不能确定返回的值为1
或0
。
在实际配置中,应当接好下拉电阻并使其接地,如下图。