📜  Arduino教程(1)

📅  最后修改于: 2023-12-03 15:13:28.528000             🧑  作者: Mango

Arduino教程

Arduino 是一款开源硬件平台,它为人们提供了快速、简单地开发各种交互式项目的工具。在本教程中,我们将介绍如何使用 Arduino 平台构建基础项目,如 LED 灯控制、温度探测等。

代码框架

在 Arduino 平台上编写程序时,如下代码结构是必不可少的:

void setup() {
  // 配置硬件
}

void loop() {
  // 执行循环
}

setup 函数只在 Arduino 开始运行时调用一次。这个函数用于配置硬件,比如设置管脚方向、初始化串口等。loop 函数不断地执行,直到 Arduino 断电。

引脚控制

Arduino 主板有一些 GPIO(General-Purpose Input/Output)引脚,可以被用来控制外部硬件或接收外部信号。Arduino 有数字 GPIO 和模拟 GPIO 之分,具体区别如下:

  • 数字 GPIO:有固定的输入和输出状态(HIGH 或 LOW),仅能进行数字控制,对应的函数为 digitalWrite 和 digitalRead。
  • 模拟 GPIO:有连续的输入和输出状态,可以进行模拟控制,对应的函数为 analogWrite 和 analogRead。
数字 GPIO 控制

下面的示例展示了如何使用数字 GPIO 控制 LED 灯亮灭:

int ledPin = 13;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  digitalWrite(ledPin, HIGH);  // 点亮 LED
  delay(1000);                  // 延时 1 秒
  digitalWrite(ledPin, LOW);   // 熄灭 LED
  delay(1000);                  // 延时 1 秒
}

当脚位 13 上的电压为 HIGH 时,控制板上的 LED 灯会点亮;当电压为 LOW 时,LED 灯就会熄灭。这个程序会使 LED 在 1 秒内亮一秒,再熄灭一秒,接着重复这个操作。

模拟 GPIO 控制

下面的示例展示了如何使用模拟 GPIO 控制 LED 灯的亮度:

int ledPin = 9;
int brightness = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  analogWrite(ledPin, brightness);  // 控制 LED 亮度
  brightness += 5;                  // 做出变化
  if (brightness >= 255) {          // 达到最大值
    brightness = 0;                 // 重置亮度值
  }
  delay(30);                        // 延时 30 毫秒
}

在上面的程序中,每次循环会使 LED 的亮度增加 5(亮度的范围是 0~255)。当达到最大值 255 时,亮度值会被重置为 0。通过不断改变亮度值,可以制作出 LED 闪动等效果。

串口通信

Arduino 上的串口模块通常通过 USB 线与电脑相连。可以利用串口模块向电脑发送数据,也可以从电脑接收数据。

向电脑发送数据

下面的示例展示了如何从 Arduino 通向电脑发送一条消息:

void setup() {
  Serial.begin(9600);  // 初始化串口通信
}

void loop() {
  Serial.println("Hello, World!");  // 向串口发送消息
  delay(1000);                      // 延时 1 秒
}
从电脑接收数据

下面的示例展示了如何从电脑接收数据:

void setup() {
  Serial.begin(9600);  // 初始化串口通信
}

void loop() {
  if (Serial.available() > 0) {     // 如果串口可读
    String message = Serial.readString();
    Serial.println("收到消息:" + message);
  }
}

上面的程序不断地读取来自电脑的数据,如果有数据可读,就将其打印到串口上。这个程序可以用来测试在 Arduino 平台上搭建的传感器等外部硬件。