IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Arduino 学习笔记_4 模拟输入和输出 -> 正文阅读

[嵌入式]Arduino 学习笔记_4 模拟输入和输出

模拟输出

在这里插入图片描述

/*
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
    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);
}

只有带有波浪线的可以调节LED亮度。

当长按右边的键,输出从255降到0,灯亮度降至熄灭;

当长按左边的键,输出从0升到255,灯亮度逐渐变亮。

analogWrite()指定引脚输出,并控制亮度(0~255范围内)。支持356911引脚。

执行analogWrite()时,会给该引脚一个指定的PWM频率,除了5,6引脚(980Hz),一般频率是490Hz左右。

analogWrite()不需要pinMode()设置引脚,但是也可以设置。

PWM

主板上有一句话:PWM=~

当修改analogWrite()的第二个参数时,就是修改在一个周期内LED亮的部分的占比。比如127就是127/255的时间处于亮的状态,其他时间处于灭的状态,频率过快时看起来就觉得亮度低了。

模拟输入

电位器

Potentiometer 电位器,本课学习中使用的电位器类似一个螺丝侧面长者3个引脚的东西。原理类似滑动变阻器。

有一个旋钮,三个引脚,电位器上写着电阻值(13号引脚之间的),比如我的是10000.

旋钮向哪边转,哪边电阻降低。

旋钮左转到头,则12间电阻为0,23间电阻为10000.

在这里插入图片描述

电位器可以把0~5v输入电压映射到0~1023范围,旋转旋钮模拟输入会从0~1023变化。

/*
  模拟输入
 
  本程序旨在演示如何使用analogRead()读取Arduino的引脚电平。
  通过调节电位器, A0引脚的输入电压将在0V-5V之间。
  该输入电压将被映射到数值0-1023之间,并显示在串口监视器中。
  
 电路连接:
   电位器中间引脚连接到模拟输入A0引脚
   电位器两端引脚分别连接在Arduino +5V和接地引脚
 
 太极创客 www.taichi-maker.com
 2017-01-08
 
 This example code is in the public domain.
 
 */
 
void setup() {
  // 串口通讯初始化(9600 bps):
  Serial.begin(9600);
}
 
void loop() {
  // 读取模拟输入值:
  int analogInputVal = analogRead(A0);
 
  // 将结果通过串口监视器显示:
  Serial.println(analogInputVal);
}

Arduino每0.1毫秒读取一次输入。

当模拟输入引脚没有连线的时候,读取到的值无法确定。甚至我们把手靠近该引脚,值都会变化。

randomSeed()就是利用一个没连线的空引脚赋值。

示例:电位器控制LED灯亮度

其实很简单,analogInputVal获取到的值通过~引脚输出给电灯就可以了。

一个小问题在于:analogInputVal的范围是01023,analogWrite输出电灯亮度范围是0255,要怎么处理?有一个线程的函数:map

int ledpin=9;
void setup() {
  // 串口通讯初始化(9600 bps):
  Serial.begin(9600);
  pinMode(ledpin,OUTPUT);
}
 
void loop() {
  // 读取模拟输入值:
  int analogInputVal = analogRead(A0);
 
  // 将结果通过串口监视器显示:
  Serial.print("analogInputVal:");
  Serial.println(analogInputVal);
  int brightness=map(analogInputVal,0,1023,0,255);//映射
  Serial.print("brightness:");
  Serial.println(brightness);
  analogWrite(ledpin,brightness);
}

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:22:30  更:2022-08-19 19:26:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:59:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码