在这里插入图片描述
在这里插入图片描述
什么是Arduino?
Arduino 是一款开源的电子原型平台,它可以让你用简单的硬件和软件来创建各种创意的项目。无论你是初学者还是专家,Arduino 都能为你提供无限的可能性。你可以用 Arduino 来控制传感器、灯光、马达、机器人、物联网设备等等,只要你能想到的,Arduino 都能帮你实现。

如果你想了解更多关于 Arduino 的信息,你可以访问 Arduino 的官方网站,那里有丰富的资源和教程供你参考。你也可以加入 Arduino 的社区,和来自世界各地的爱好者、学生、设计师和工程师交流心得和经验。此外,你还可以使用 Arduino 的在线编程工具,在云端编写代码并上传到你的开发板上。

Arduino 是一个不断发展和创新的平台,它有着广泛的应用领域和潜力。这里希望本手册能激发你对 Arduino 的兴趣和热情,让你享受 Arduino 带来的创造力和乐趣

在这里插入图片描述

维基百科的定义
Arduino 是一个开源嵌入式硬件平台,用来供用户制作可交互式的嵌入式项目。此外 Arduino 作为一个开源硬件和开源软件的公司,同时兼有项目和用户社群。该公司负责设计和制造Arduino电路板及相关附件。这些产品按照GNU宽通用公共许可证(LGPL)或GNU通用公共许可证(GPL)许可的开源硬件和软件分发的,Arduino 允许任何人制造 Arduino 板和软件分发。 Arduino 板可以以预装的形式商业销售,也可以作为 DIY 套件购买。

Arduino 2005 年时面世,作为意大利伊夫雷亚地区伊夫雷亚互动设计研究所的学生设计,目的是为新手和专业人员提供一种低成本且简单的方法,以建立使用传感器与环境相互作用的装置。初学者和爱好者可用Arduino制造传感器、简单机器人、恒温器和运动检测器等装置。

Arduino 这个名字来自意大利伊夫雷亚的一家酒吧,该项目的一些创始人过去常常会去这家酒吧。 酒吧以伊夫雷亚的 Arduin(Arduin of Ivrea)命名,他是伊夫雷亚边疆伯爵,也是 1002 年至 1014 年期间的意大利国王。

在这里插入图片描述

**十四、Arduino模拟 I/O PWM analogWrite() **
Arduino模拟 I/O PWM analogWrite()是一种用于向PWM引脚写入模拟信号的函数。PWM是一种脉冲宽度调制的技术,可以通过改变高低电平的占空比来模拟不同的电压。analogWrite()的作用是让Arduino控制PWM引脚的占空比,以便驱动或控制外部的设备或电路,例如LED灯、舵机、音频放大器等。

analogWrite()的使用范围:
1)当需要将一个PWM引脚设为不同的占空比时,例如调节LED灯的亮度、舵机的角度、音频放大器的音量等。
2)当需要将一个PWM引脚切换不同的占空比时,例如闪烁LED灯、摆动舵机、播放音频信号等。
3)当需要将一个PWM引脚与其他函数或库结合使用时,例如使用tone()函数产生不同的音调、使用Servo库控制多个舵机、使用IRremote库发送红外信号等。

应用场景:
1)电机速度控制:analogWrite()常用于控制直流电机的转速。通过将PWM输出引脚连接到电机驱动器的控制引脚,可以通过调整analogWrite()函数中的参数值,改变PWM信号的占空比,从而控制电机的转速。
2)LED亮度调节:通过连接LED到PWM输出引脚,可以使用analogWrite()函数调整LED的亮度。通过改变PWM信号的占空比,可以实现LED的调光效果。
3)伺服电机控制:伺服电机通常使用PWM信号来控制其位置。通过连接伺服电机的控制引脚到PWM输出引脚,并使用analogWrite()函数发送适当的PWM信号,可以精确控制伺服电机的位置。

使用analogWrite()时,需要注意以下事项:
1)analogWrite()函数的第一个参数是要写入的PWM引脚的编号,可以是3、5、6、9、10或11(表示6个PWM引脚),也可以是A0到A5(表示相同的引脚)。第二个参数是要写入的占空比,范围是0到255。
2)analogWrite()函数会根据PWM引脚的参考电压来输出模拟信号,参考电压默认是5伏,也可以通过analogReference()函数来设置为其他值。如果要驱动或控制的外部设备或电路需要不同的电压或电流,那么可能需要使用额外的元件,例如电阻、二极管、晶体管等。
3)analogWrite()函数会影响PWM引脚上的定时器功能,例如定时器中断、tone()函数等。因此,如果需要同时使用PWM引脚和定时器功能,那么需要注意避免冲突或干扰。
4)PWM输出的引脚具有一定的电流和功率限制。在连接外部设备(如电机)时,应根据设备的规格和要求,确保PWM引脚能够提供足够的电流和功率。

以下是Arduino模拟 I/O PWM analogWrite()的几个实际运用程序案例:

案例一:使用analogWrite()实现LED灯的调光

void setup() {
  // 将9号引脚设为输出模式,用于控制LED灯
  pinMode(9, OUTPUT);
}

void loop() {
  // 定义一个局部变量brightness,表示LED灯的亮度,并初始化为0
  int brightness = 0;
  
  // 循环从0到255
  for (brightness = 0; brightness <= 255; brightness++) {
    // 将9号引脚设为相应的占空比,即调节LED灯的亮度
    analogWrite(9, brightness);
    // 等待10毫秒
    delay(10);
  }
  
  // 循环从255到0
  for (brightness = 255; brightness >= 0; brightness--) {
    // 将9号引脚设为相应的占空比,即调节LED灯的亮度
    analogWrite(9, brightness);
    // 等待10毫秒
    delay(10);
  }
}

案例二:使用analogWrite()实现舵机的控制

// 引入舵机库
#include <Servo.h>

// 创建一个舵机对象
Servo servo;

void setup() {
  // 将舵机连接到3号引脚
  servo.attach(3);
}

void loop() {
  // 定义一个局部变量angle,表示舵机的角度,并初始化为0
  int angle = 0;
  
  // 循环从0度到180度
  for (angle = 0; angle <= 180; angle++) {
    // 将舵机旋转到指定角度
    servo.write(angle);
    // 等待15毫秒
    delay(15);
  }
  
  // 循环从180度到0度
  for (angle = 180; angle >= 0; angle--) {
    // 将舵机旋转到指定角度
    servo.write(angle);
    // 等待15毫秒
    delay(15);
  }
}

案例三:使用analogWrite()实现音频放大器的控制

// 定义一个常量POT_PIN,表示电位器连接到A0引脚
#define POT_PIN A0
// 定义一个常量AMP_PIN,表示音频放大器连接到11号引脚
#define AMP_PIN 11

void setup() {
}

void loop() {
  // 定义一个局部变量potValue,表示电位器的数字值,并从A0引脚读取
  int potValue = analogRead(POT_PIN);
  
  // 定义一个局部变量ampValue,表示音频放大器的占空比,并根据电位器的数字值计算
  int ampValue = potValue / 4;
  
  // 将11号引脚设为相应的占空比,即调节音频放大器的音量
  analogWrite(AMP_PIN, ampValue);
}

案例四:电机速度控制:

const int motorPin = 9;

void setup() {
  // 配置PWM引脚
  pinMode(motorPin, OUTPUT);
}

void loop() {
  // 控制电机速度
  analogWrite(motorPin, 150); // 设置PWM信号的占空比为150/255
  delay(2000);
  analogWrite(motorPin, 0); // 停止电机
  delay(2000);
}

在此案例中,我们使用analogWrite()函数控制连接到PWM引脚9的电机的速度。通过调整analogWrite()函数的参数值,可以改变PWM信号的占空比,从而控制电机的转速。

案例五:LED亮度调节:

const int ledPin = 11;

void setup() {
  // 配置PWM引脚
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // 调节LED亮度
  for (int brightness = 0; brightness <= 255; brightness += 5) {
    analogWrite(ledPin, brightness); // 设置PWM信号的占空比
    delay(50);
  }
  for (int brightness = 255; brightness >= 0; brightness -= 5) {
    analogWrite(ledPin, brightness); // 设置PWM信号的占空比
    delay(50);
  }
}

在此案例中,我们使用analogWrite()函数控制连接到PWM引脚11的LED的亮度。通过循环调整analogWrite()函数的参数值,可以改变PWM信号的占空比,从而实现LED的渐变亮度效果。

案例六:伺服电机控制:

const int servoPin = 9;

void setup() {
  // 配置PWM引脚
  pinMode(servoPin, OUTPUT);
}

void loop() {
  // 控制伺服电机位置
  analogWrite(servoPin, 180); // 设置PWM信号的占空比为180/255
  delay(2000);
  analogWrite(servoPin, 90); // 设置PWM信号的占空比为90/255
  delay(2000);
}

在此案例中,我们使用analogWrite()函数控制连接到PWM引脚9的伺服电机的位置。通过调整analogWrite()函数的参数值,可以改变PWM信号的占空比,从而精确控制伺服电机的位置。

这些案例展示了analogWrite()函数在控制电机速度、调节LED亮度和控制伺服电机位置等场景中的应用。

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐