什么是arduino?
简单来讲arduino就是通过源代码控制开发板的信号输入输出从而实现对一些电子元件的控制,例如LED灯,蜂鸣器,按键
arduino程序
首先来讲arduino程序是基于C语言,而实现类似对于LED灯和蜂鸣器的简单控制只需简单C语言知识即可实现。arduino程序是基于函数的,而在arduino的库有很多函数,我们只需要调用即可。
arduino的程序主体是**setup()函数和loop()**函数以及其它在使用过程中需要构建的函数:
setup()函数
**setup()**函数主要功能是初始化变量,调用库函数,管理引脚等。
loop()函数
**loop()**函数的主要功能是循环的执行函数内的语句,简单来讲就是一个循环。
一、常用引脚控制函数:
1.pinMode(pin,mode):
数字I/O口输入输出定义函数,pin代表数字数字I/O输入输出端的1~13,mode表示输入(INPUT)输出(OUTPUT),例如你想实现从端口6输出信号,则代码是:
pinMode(6,OUTPUT);
2.digitalWrite(pin,vale):
数字I/O口电平定义函数,pin同样代表1~13,vale代表HIGH(高电平)或LOW(低电平),对于LED灯来说,HIGH可使灯发光,LOW可使灯熄灭。例如想实现位于端口6的灯亮的代码是:
digitalWrite(6,HIGH);
3.delay(ms):
延时函数,单位ms,可实现对命令的延迟,例如,实现亮灯500ms,就是让输出的高电平持续500ms,代码是:
delay(500);
4.analogWrite(pin,value) 脉冲宽度调制技术:
(1)作用:输出除了0V和5V之外的电压,产生一个十分接近于模拟信号的输出
(2)使用:通过带有"~"符号的端口输出,使用**analogWrite(pin,value)**函数输出模拟信号,pin代表引脚,value代表输出值(0-255)。
(3)原理:调制一串方波(只有开和关的信号)的占空比(一串方波中高低电平时间所占百分比),通过调控占空比就可以达到调控输出电压的值,例如
analogWrite(pin,127); 表示的时在引脚输出占空比为50%的方波,也就是输出2.5V的模拟电压。
analogWrite(pin,value);
5.digitalRead(pin)==vale(LOW or HIGH ):
数字I/O口电平读取函数,pin同样代表1~13,vale代表HIGH(高电平)或LOW(低电平),
digitalRead(BUTTON)==LOW
二、串口函数
1.串口初始化:serial.begin(value)
在使用串口前,我们需要对串口的波特率也就是传输速度进行设置,需要用到函数 serial.begin(value),value即是设置波特率。
2.串口发送函数 serial.println():
在函数中输入参数就可以使用串口输出了。
3.串口接收:serial.read()
使用 serial.read()函数,它可以读取我们通过串口发送的信号
三、示例
1.串口输出"Hello,world"信号
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available() > 0){
char ch=Serial.read();
Serial.println("Hello, world")
}
}
我们注意到,在loop()函数使用了Serial.available()函数,在使用串口时ARDUINO会将所有数据暂时存放在缓冲区,而当串口缓冲区没有可读数据时,Serial.read()函数返回的值会造成乱码,时泳Serial.available()函数可以检测串口缓冲区是否有可读数据,搭配 if 语句时,有可读数据则再进行命令,还特别值得注意的是,在串口监视器的右下角有一个波特率设置,这里的波特率数值需要和前面定义的数值一致
2.在串口发送字符控制灯的亮灭
程序如下:
int LED = 9;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
if(Serial.available()>0){
char ch=Serial.read();
Serial.println(ch);
if (ch == 'A'){
digitalWrite(LED,HIGH);
Serial.println("turn on");
}
else if (ch == 'B'){
digitalWrite(LED,LOW);
Serial.println("turn off");
}
}
}
通过这个程序,当你向ARDUINO串口发送数据 ‘A’ 时,LED灯会亮起来,同时串口监视器会接收到一串"turn on"字符,再次发送 ‘B’ 时,LED灯会灭,同时发送"turn off"
运行结果如下