Arduino简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其特点有:
1、跨平台

Arduino IDE可以在Windows、Macintosh OS X、Linux三大主流操作系统上运行,而其他的大多数控制器只能在Windows上开发。
2、简单清晰

Arduino IDE基于processing IDE开发。对于初学者来说,极易掌握,同时有着足够的灵活性。
3、开放性

Arduino的硬件原理图、电路图、IDE软件及核心库文件都是开源的,在开源协议范围内里可以任意修改原始设计及相应代码。
4、编程方式多样代码简洁

Arduino编程主要有以下几种方式:第一种是使用官网Arduino IDE编程环境,这可以在官网下载,支持Windows,MacOS,Linux操作系统。第二如果不太喜欢写代码,或者是教小孩子玩Arduino,也有图形化的编程环境,比如Mixly/Scratch。

传感器及舵机简介

  1. 雨滴传感器

雨滴传感器主要是用来检测是否下雨及雨量的大小。主要用于汽车智能灯光(AFS)系统、汽车自动雨刷系统、智能车窗系统。雨滴传感器基本上是一块板,上面以线形形式涂覆镍。雨滴传感器常见的工作原理是通过检测水滴的导电性来判断是否下雨。它是利用两个电极之间的电导性变化来测量水滴的存在。

  1. 超声波传感器

超声波传感器是一种使用声波测量物体距离的设备。它的工作原理是发出超声波频率的声波并等待它从物体反弹回来。然后,使用声音传输和声音接收之间的时间延迟来计算距离。

  1. 光敏电阻光照传感器

光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。随着光照强度的升高,电阻值迅速降,其在无光照时,几乎呈高阻状态,暗时电阻很大。光敏电阻模块一般用来检测周围环境的光线的亮度,触发单片机或继电器模块等。

  1. 舵机

舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。常见的舵机有两种,一种舵机轴可以旋转180度,还有一种舵机轴可以连续旋转。这种舵机的旋转速度是可以控制的。

传感器应用实验

  1. 雨滴传感器应用实验

将雨滴传感器的控制模块上的VCC连接到开发板的5V输出。
将雨滴传感器的控制模块上的GND连接到开发板的GND。
将雨滴传感器的控制模块上的AO连接到开发板上的A0模拟输入引脚。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int rainSensorPin = A0;

void setup() {
Serial.begin(9600);
}

void loop() {
int sensorValue = analogRead(rainSensorPin);
float voltage = sensorValue * (5.0 / 1023.0);

Serial.print("Voltage: ");
Serial.println(voltage);
if (voltage < 2):
{
Serial.print("有雨滴");

}

delay(1000);
}
  1. 超声波传感器应用实验

将超声波传感器的VCC连接到开发板的5V输出。
将超声波传感器的Trig连接到开发板的9号数字输出针脚。
将超声波传感器的Echo连接到开发板的10号数字输入针脚。
将超声波传感器的GND连接到开发板的GND。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
const int trigPin = 9;
const int echoPin = 10;

long duration;
int distance;

void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;

Serial.print("Distance: ");
Serial.println(distance);

delay(500);
}
  1. 光敏电阻光照传感器应用实验

将传感器的VCC端接开发板的5V供电;
将传感器的GND端接开发板的GND;
将传感器的AO(模拟信号输出端)接开发板的A0模拟输入引脚;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int LDR_AO_Pin = A0; 
int LDRValue = 0;
#define ADC_MAX_VALUE 1023

void setup() {
Serial.begin(9600);
pinMode(LDR_AO_Pin, INPUT);
}

void loop() {
LDRValue = analogRead(LDR_AO_Pin);
Serial.print("光照强度: ");
Serial.println(ADC_MAX_VALUE - LDRValue);
delay(1000);
}

四、 舵机应用实验

信号线(通常是橙色或黄色线)连接到开发板的9号PWM输出引脚。
电源线(红色线)连接到开发板的5V。
地线(棕色或黑色线)连接到开发板的GND。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <Servo.h>

Servo myservo;

void setup() {
myservo.attach(9);
}

void loop() {
for (int pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
}
for (int pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
}
}

五、 综合应用实验

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <Servo.h>  

const int trigPin = 9;
const int echoPin = 10;
const int servoPin = 6;

Servo myServo;

void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myServo.attach(servoPin);

Serial.begin(9600);

void loop() {
long duration;
int distance;

digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = duration * 0.034 / 2;

if (distance > 40) distance = 40;
if (distance < 0) distance = 0;

int angle = map(distance, 0, 40, 0, 180);


myServo.write(angle);


delay(100);
}