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

news2024/11/14 20:35:21

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

  • 1-25 模拟输出1-analogWrite
    • 电路
    • 效果演示
    • 模拟输出analog output
    • 复合运算符
    • 示例程序
    • Analogwrite()
  • 1-26 模拟输出2-PWM
    • PWM概念(极其重要)
  • 1-27 模拟输出3-for
    • 电路
    • 效果演示
    • 程序示例
    • For循环
    • Brightness+=5

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个增加或者减小,变化速度变快了)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1976424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Verilog-CBB】开发与验证(2)——单比特信号CDC同步器

引言 多时钟域的设计中&#xff0c;CDC处理的场景还是蛮多的。单比特信号在CDC时&#xff0c;为保证信号采样的安全性&#xff0c;降低亚稳态&#xff0c;必须要对信号做同步处理。CDC从时钟的快慢关系来说分为两种case&#xff1a;快到慢、慢到快。对于脉冲型的控制信号&…

『C++实战项目 负载均衡式在线OJ』一、项目介绍与效果展示(持续更新)

文章目录 一、项目介绍二、开发环境三、第三方库四、相关技术五、项目整体框架代码目录框架 代码仓库连接 点击这里✈ 一、项目介绍 本项目是实现一个仿 leetcode 的 OJ (Online-Judge&#xff09;系统。更准确的说应该称之为leetcode 的裁剪版。因为本项目只实现了leetcode中…

‘#‘ is not followed by a macro parameter 关于宏定义的错误

今天在项目代码上想定义一个这样的宏&#xff0c;结果编译错误&#xff0c;这个宏定义类似这样的&#xff1a; #define DELETE_FILE_DPP(key) \ #ifdef PLATFORM_DPP \delete_file(&key); \ #endif 因为有平台之分需要用到编译宏&#xff0c;但不想每个调用的地方都写 #i…

HTML 专业词汇与语法规则

目录 1. 专业词汇 2. 语法规则 1. 专业词汇 标签&#xff08;tag&#xff09;&#xff1a;一堆尖叫号&#xff08;<>&#xff09;&#xff0c; 属性&#xff08;attribute&#xff09;&#xff1a;对标签特征设置的方式&#xff1b; 文本&#xff08;text&#xff0…

【外排序】--- 文件归并排序的实现

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 数据结构 我们之前学习的八大排序&#xff1a;冒泡&#xff0c;快排&#xff0c;插入&#xff0c;堆排等都是内排序&#xff0c;这些排序算法处理的都是…

java对接kimi详细说明,附完整项目

需求&#xff1a; 使用java封装kimi接口为http接口&#xff0c;并把调用kimi时的传参和返回数据&#xff0c;保存到mysql数据库中 自己记录一下&#xff0c;以做备忘。 具体步骤如下&#xff1a; 1.申请apiKey 访问&#xff1a;Moonshot AI - 开放平台使用手机号手机号验证…

SuccBI+低代码文档中心 — 低代码应用(SuccAP)(概论)

概述&#xff1a; 低代码是什么&#xff1f; 低代码就是通过易用的、可视化的操作、加上少量的代码或脚本的方式快速的搭建业务应用。 低代码的优势&#xff1f; 低代码可以提升开发人员的效率&#xff0c;也可以让非开发人员也能进行应用开发。 低代码的分类&#xff1a;…

基于SpringBoot的大学生信息兼职服务网站系统,源码、部署+讲解

目 录 摘 要 Abstract 目 录 绪 论 1 系统分析 1.1可行性分析 1.1.1经济可行性分析 1.1.2技术可行性分析 1.1.3操作可行性分析 1.2需求分析 1.2.1从学生的角度 1.2.2从企业的角度 1.2.3从管理员的角度 1.3用例建模 1.3.1识别参与者用例 1.3.2用…

3.5 菜单资源

菜单分类 窗口的顶层菜单弹出式菜单&#xff08;鼠标右键的那些选项&#xff0c;记事本窗口左上角点击“文件”弹出的这些&#xff09;系统菜单&#xff08;记事本左上角的图标&#xff09; HMENU类型表示菜单&#xff0c;ID表示菜单项 资源相关 资源脚本文件:*.rc文件编译器…

python入门基础篇(一)

基础篇 Python基础安装与配置Python环境理解Python解释器第一个Python程序&#xff1a;"Hello, World!" 基础语法注释与文档字符串变量与数据类型数字类型&#xff1a;整数、浮点数、复数字符串布尔值None值 运算符算术运算符比较运算符逻辑运算符赋值运算符位运算符…

WEB渗透Web突破篇-SSRF

定义 服务端请求伪造 构造一个由服务器发出请求的漏洞 服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制成因 file_get_contents()、fsockopen()、curl_exec()、fopen()、readfile()等函数使用不当会造成SSRF漏洞挖掘 转码服务 在线翻译 获取超链接…

JavaScript入门day6

目录 1.Web API 基本认知 1.1 变量声明 1.2 作用和分类 1.3 什么是DOM 1.4 DOM树 1.5 DOM对象&#xff08;重要&#xff09; 2.获取DOM对象 2.1 获取DOM元素 2.2 操作元素内容 2.3 操作元素属性 2.3.1 操作元素常用属性 2.3.2 操作元素样式属性 2.3.3 操作表单元素…

C Primer Plus 第5章——第一篇

你该逆袭了 第5章:重点摘录 零、章节介绍一、基本运算符1、赋值运算符(1)、数据对象(2)、左值(3)、右值(4)、运算符 2、加法运算符3、减法运算符4、符号运算符&#xff1a;- 和 5、乘法运算符&#xff1a;*1、指数增长 6、除法运算符&#xff1a;/7、运算符优先级8、优先级 和 …

Python实战:wxauto与百度千帆大模型结合快速实现微信智能回复机器人

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

VGA接口驱动设计验证

前言 VGA接口是一个很有历史的接口&#xff0c;全称为Video Graphics Array&#xff08;VGA&#xff09;视频图形阵列&#xff0c;是IBM公司在1987年随着PS/2一起推出的使用模拟信号的一种视频传输标准。时至今日&#xff0c;这个接口依然还在大量使用&#xff0c;因为这个接口…

普乐蛙VR航天科普展厅VR虚拟现实项目激发青少年对太空探索

普乐蛙品牌VR沉浸体验式业态&#xff0c;定位文旅科教领域&#xff0c;助力中国航天发展。普乐蛙VR航天航空主题拥有华夏神舟、天宫一号、华夏月球车、太空飞船、华夏方舟、地震平台、暴风空间等众多科普体验设备和原创优质的航天航空内容&#xff0c;通过沉浸互动式体验&#…

USB 2.0 规范摘录

文章目录 1、USB 体系简介2、USB 数据流模型四种传输类型 3、USB 物理规范和电气规范4、USB 协议层规范事务传输&#xff08;Transaction&#xff09;的流程 5、USB 框架6、USB 主机&#xff1a;硬件和软件7、USB HUB 规范数据的转发唤醒信号的转发USB HUB 的帧同步HUB Repeate…

11087 统计逆序对(优先做)

这个问题可以通过使用分治策略来解决&#xff0c;这种策略是在归并排序的基础上进行的。我们可以将数组分为两部分&#xff0c;然后分别计算两部分的逆序对数量&#xff0c;最后计算跨越两部分的逆序对数量。 以下是使用C的代码实现&#xff1a; #include <iostream> #…

C++初学者指南-5.标准库(第二部分)--更改元素算法

C初学者指南-5.标准库(第二部分)–更改元素算法 文章目录 C初学者指南-5.标准库(第二部分)--更改元素算法填充/覆盖范围fill / fill_ngenerate / generate_n 更改/替换值transformreplace / replace_ifreplace_copy / replace_copy_if 相关内容 不熟悉 C 的标准库算法&…

【数据泄露】最新 FBI 官员数据库泄露事件

前言 近日&#xff0c;一名化名为 “rpk” 的威胁行为者在 breachforums 论坛上声称泄露了包含 22,175 名 FBI 官员数据的数据库。此事件迅速引起了广泛关注&#xff0c;主要因为 FBI 作为美国联邦调查局&#xff0c;不仅是美国司法部的主要调查机构&#xff0c;还是美国情报界…