arduino程序—模拟输出(基础知识)

1-25 模拟输出1-analogWrite

在这里插入图片描述

在这之前是数字输入输出实验

这里是模拟输出输入

开关两种情况

LED开关外还需要亮度,以及速度等需要模拟输入输出

小LED亮度调节模拟输出和模拟输入

电路

在这里插入图片描述
在这里插入图片描述

LED正极连接电阻,连接arduino开发板的9号引脚(发现引脚有波浪线,3、5、6、10、11也都有,开发板还有说明PWM=~,非常重要)

我们要调节led亮度的话,只能使用带有~波浪线的引脚,其余的引脚都不行

LED负极接在GND引脚上

按键开关一个接在8号引脚,一个接在2号引脚,另外接地

效果演示

通电后,led点亮
在这里插入图片描述

按下右侧的按键,led亮度变暗,最后熄灭数值为0
在这里插入图片描述

按下左侧按键,led亮度变亮,最后达到最大值255
在这里插入图片描述

模拟输出analog output

数字输出模式下,只有熄灭点亮两种状态
在这里插入图片描述

对led亮度调节时,需要模拟输出,0~255共256个级别的数值
在这里插入图片描述

Analogwrite不仅能控制led亮度还有控制电机

复合运算符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例程序

示例程序非ide自带,而是太极创客编写,可以到官网查看
在这里插入图片描述
在这里插入图片描述

模拟输出的信号值大于255以及小于0不会对led产生损害

/*
25 模拟输出1 - analogWrite
太极创客
www.taichi-maker.com

此程序用于太极创客<<零基础入门学用Arduino教程>> 
25 模拟输出1 - analogWrite

演示如何通过两个按键开关通过analogWrite指令
进行模拟输出操作。具体电路和其它信息请参考
太极创客网站本教程相关页面。

2017-04-28
*/
boolean pushButton1;   // 创建布尔型变量用来存储按键开关1的电平状态
boolean pushButton2;   // 创建布尔型变量用来存储按键开关2的电平状态
int ledPin = 9;        //LED引脚号
int brightness = 128;  //LED亮度参数

void setup() {
  // put your setup code here, to run once:
  pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式
  pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式
  pinMode(ledPin, OUTPUT);  //将LED引脚设置为输出模式
  Serial.begin(9600);      //启动串口通讯
}

void loop() {
  // put your main code here, to run repeatedly:
  pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量
  pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量
  
  if (!pushButton1 && brightness > 0){     // 当按下按键开关1并且LED亮度参数大于0(防止范围超出0~255)
    brightness--;                          // 减低LED亮度参数
                                  //(brightness-- 相当于  brightness = brightness - 1;)
  } else if (!pushButton2 && brightness < 255) {  //当按下按键开关2并且LED亮度参数小于255
    brightness++;                                 //增加LED亮度参数
                                  //(brightness++ 相当于  brightness = brightness + 1;)
  }
  analogWrite(ledPin, brightness);         //模拟输出控制LED亮度
  Serial.println(brightness);              //将LED亮度参数显示在串口监视器上
  delay(10);				//延时10ms,稍微减缓速度,防止亮度变化太快
}

Analogwrite()

在这里插入图片描述

Analogwrite并不简单,每次对引脚执行此命令,都会给其一个固定频率的PWM信号,PWM信号的频率大约为490HZ

注意只支持analogwrite的3,5,10,11引脚操作,其他引脚是不能使用此操作的
在调用此analogwrite之前,可以不用pinmode引脚设置,也可以设置不影响

1-26 模拟输出2-PWM

在这里插入图片描述

只有3,5,10,11的引脚才能作为亮度调节的引脚(PWM=~)
在这里插入图片描述

PWM概念(极其重要)

PWM 脉冲宽度调制
在这里插入图片描述

使用analogwrite函数时,实际就是PWM控制

让led点亮,就让其保持在5V即可
在这里插入图片描述

让LED熄灭,就让其保持0V即可
在这里插入图片描述

让一段时间

在这里插入图片描述

在1
在这里插入图片描述

点亮1秒熄灭1秒
在这里插入图片描述

若是1毫秒呢?

在这里插入图片描述

例子,人物动起来的,个画面动
在这里插入图片描述

当非常快的速度让led闪烁时,速度快到一定程度以后就再也看不到闪烁的效果了
实际看到的是保持点亮状态的led

因为长时间闪烁所,所以看到其亮度是减弱的,led点亮和熄灭比较那个长,那个短

点亮和熄灭时间各占50%,那么亮度就是50%
在这里插入图片描述

点亮的时间占75%,熄灭的时间占25%,那么亮度就是75%
在这里插入图片描述

点亮的时间占25%,熄灭的时间占75%,那么亮度就是75%
在这里插入图片描述

在这里插入图片描述

255就是led的最大亮度,127就是50%的亮度,analogwrite函数只能给参数整数,无法写127.5的,所以127或者128都是可以的

设置为75%时,如下
在这里插入图片描述

Arduino的PWM的时间间隔周期并不是2毫秒的,这里只是演示,不同的开发板的周期也会有所不同

在这里插入图片描述

具体的led灯亮度型号不同,亮度也会有所不同,不同灯的同一个级别50%的亮度也会有所不一样

1-27 模拟输出3-for

在这里插入图片描述

电路

在这里插入图片描述

Led正极连接电阻,连接9号引脚(PWM~)
负极接地GND

效果演示

在这里插入图片描述

Led进行着明暗的交替变化,串口监视器中的数字也在变化,从小(0)到大(255)变化,再从大(255)到小(0)变化

程序示例

如何让led产生忽明忽暗的呼吸灯效果呢?
需要程序编写
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.taichi-maker.com/homepage/arduino-basic-tutorial-index/arduino-basic-tutorial-27/

/*
27 模拟输出3 - for
太极创客
www.taichi-maker.com

此程序用于太极创客<<零基础入门学用Arduino教程>> 
27 模拟输出3 - for

演示如何通过for循环语句实现LED明暗交替(呼吸灯)效果。

2017-04-28
*/
void setup() {
  pinMode(9, OUTPUT);      //设置9号引脚为输出模式
  Serial.begin(9600);     //启动串口通讯
}

void loop() {
  // LED由暗到明
  for (int brightness = 0; brightness <= 255; brightness++){
    analogWrite(9, brightness);   
    Serial.println(brightness);
    delay(10);
  }
  
  // LED由明到暗  
  for (int brightness = 255; brightness >=0 ; brightness--){
    analogWrite(9, brightness);
    Serial.println(brightness);
    delay(10);
  }
}

For循环

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Brightness+=5

将自加修改后如下(+=5,每次都会隔着5个增加或者减小,变化速度变快了)

在这里插入图片描述

  • 19
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Arduino是一款基于开源软硬件的微控制器平台,它可以用来制作各种智能电子设备。本文将介绍一些Arduino程序设计的基础知识,帮助初学者快速上手。 1. Arduino IDE Arduino IDE是Arduino官方提供的集成开发环境,可以用来编写、上传和调试Arduino程序。用户可以在Arduino IDE中编写C语言风格的代码,然后通过USB连接将程序上传到Arduino板子上。 2. 基本结构 Arduino程序由两个函数组成:setup()和loop()。setup()函数在程序开始时只执行一次,用于初始化Arduino的引脚、变量等。loop()函数则会不断执行,用于控制Arduino的行为。 ```c void setup() { // 初始化 } void loop() { // 控制 } ``` 3. 引脚 Arduino板子上有多个引脚,用于连接各种传感器、执行器等。引脚可以分为数字引脚和模拟引脚。数字引脚可以输入或输出高低电平,模拟引脚可以输出模拟信号。 Arduino程序中可以使用pinMode()函数设置引脚的模式,digitalWrite()函数控制数字引脚的电平,analogWrite()函数控制模拟引脚的电压。 ```c const int LED_PIN = 13; void setup() { pinMode(LED_PIN, OUTPUT); } void loop() { digitalWrite(LED_PIN, HIGH); delay(1000); digitalWrite(LED_PIN, LOW); delay(1000); } ``` 4. 变量 Arduino程序中可以定义多种类型的变量,包括整型、浮点型、字符型等。变量可以用于存储传感器读取的数据、计算结果等。 ```c int sensorPin = A0; int sensorValue = 0; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(sensorPin); Serial.println(sensorValue); delay(100); } ``` 5. 库 Arduino程序中可以使用各种库来扩展功能。库是由其他开发者编写的程序,可以在Arduino IDE中直接导入并使用。 ```c #include <Servo.h> Servo myservo; void setup() { myservo.attach(9); } void loop() { myservo.write(90); delay(1000); myservo.write(0); delay(1000); } ``` 以上就是Arduino程序设计的基础知识。通过学习这些内容,初学者可以快速上手Arduino开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾名招财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值