写这篇文章是因为最近在梳理Arduino学习笔记,回想起自己当初第一次接触Arduino时候的那种懵懂和兴奋,现在还记忆犹新,当时只希望对于Arduino各种秘密马上能知晓,可惜当时的互联网没有那么多学习资源,只能是自己慢慢摸索,走了不少的弯路,甚至是犯了错误。现在回想起来主要是当时对于Arduino的基础性知识不明确、不系统,因此想分享一些系统的基础知识给初学者,先和你聊聊5个Arduino的基本功能。
我们可以使用数字输出功能,控制一个LED灯,确保此电路正确,还可以控制电机,制造出声音甚至操控更多设备。
以Arduino UNO为例,0-13、A0-A5都可以接,使用digitalWrite(管脚,HIGH/LOW)命令,使用之前要使用pinMode(管脚, OUTPUT);设置该管脚为输出状态。下图为Mixly中的“数字输出模块”,可以看到管脚的选择范围以及取值范围。
Mixly中数字输出模块
提醒:不同的数字传感器触发(灯亮、蜂鸣器鸣叫)方式不一样,有的是低电平触发,有的是高电平触发,请注意区分,当初我也是傻傻的搞不清。
参考Arduino代码如下:
void setup(){
pinMode(0, OUTPUT);
}
void loop(){
digitalWrite(0,HIGH);
}
我们可以使用模拟输出功能控制LED灯的亮度,不仅是使LED发光或者熄灭,还可让它停留在两者之间的某种亮度上。此外,我们甚至可以控制电机的转速。
模拟输出所能接的管脚不像数字输出,只能接几个PWM管脚:3、5、6、9、10、11,这点请你一定注意,这也是我有过惨痛的教训的。如下图Mixly当中的模拟输出模块所示,请注意观察右侧的代码区,如果你是使用Arduino IDE直接代码编程,那么其命令就是:analogWrite(管脚,0-255);不需要使用pinMode命令。请你注意模拟输出的取值范围是0-255。
Mixly中的模拟输出模块
参考Arduino代码如下:
void setup(){
}
void loop(){
analogWrite(3,0);
}
数字输入功能可以让我们获知简单传感器的状态,例如:按钮、倾角开关。
数字输入我们可以通过传感器上的电位器(下图光线传感器中间蓝色的突起,上面有十字架)调整我们需要的临界值,这个也是初学者会忽略的地方。
光线传感器
数字输入命令:digitalRead(管脚);管脚可以是0-13、A0-A11,使用该命令前要使用pinMode(管脚, INPUT);将该管脚设置为输入状态。米思齐的编程模块如下图所示:
Mixly数字输入模块
参考Arduino代码如下(使用了串口输出):
void setup(){
pinMode(0, INPUT);
Serial.begin(9600);
}
void loop(){
Serial.println(digitalRead(0));
}
我们可以使用模拟输入功能读取模拟传感器的连续信号,而不只是开/关状态的信号,例如:光线传感器、电位计模块。
模拟输入使用analogRead(管脚);管脚只能是A0-A7,不需要使用pinMode。Mixly中的模块如下:
mixly模拟输入模块
参考Arduino代码如下(使用了串口输出):
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println(analogRead(A0));
}
这使我们能够与计算机进行沟通和数据交换,让我们能够监视正在运行的Arduino接收或者发送的数据。
使用时,先设置波特率,如下面的Arduino代码所示:
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println(“hello”);
}
这个案例是串口输出。串口输出有很多种形式,你可以像下图一样,在mixly中一一进行尝试。
Mixly中串口输出模块
还有串口输入,请看下图代码:
Mixly串口输入模块
参考Arduino代码如下:
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.readString() == “a”) {
Serial.println(“hello”);
}
}