0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Arduino实现映射功能的过程

科技观察员 来源:DevicePlus 作者:DevicePlus 2022-04-01 17:08 次阅读

前言

您可能注意到了,尽管互连电子设备采用不同单位,有不同的上限和下限,但在它们的工作范围内始终是兼容的。例如,在Playstation 4上玩电子游戏时,当您将摇杆一直拉到右边时,它会转换为角色向右的最大移动量。我们可以看到,摇杆的移动范围与角色的移动范围是匹配的。在不同阶段校准范围的这个过程称为“映射”。

映射过程通常用于根据期望的驱动来校准来自传感器的输入值。例如,现代汽车中采用电子方向盘的情况,当方向盘旋转720度时,车轮大约会转动40度。因此,我们可以看到,0-720度的范围被电子方向盘使用的电子控制系统映射为0-40度。这种电子控制系统会结合使用微控制器PLC。微控制器上必须有模拟输入,可以通过PWM或数字引脚来映射所需的驱动。本DIY项目结束时,您将能够了解:

概述

在这个DIY项目中,我们将开发一个进程,使用Arduino UNO将电位计的电阻变化转换为所需的LED数量。换句话说,在本例中,电位计被用作“传感器输入”,Arduino UNO被用作“映射设备”,10个ROHM LED被用作执行机构。LED通常是精密零件,经常会出现随机故障。因此,我们选择了ROHM LED,它们足以耐受电流尖峰,而且性能稳定。十个蓝光ROHM LED将根据电位计的旋转进行映射。将按照以下顺序介绍这个项目:

所需元器件有:10 x 蓝光ROHM LED、Arduino UNO R3、USB B数据线(通常随Arduino UNO R3一起提供)、10k 电位计、830 孔无焊面包板 breadboard、20 根公头转公头跳线、1个1kΩ电阻器、基于Windows的计算机,用于编程

电路原理

所有元器件都采购齐全后,第一步是把所有元器件都连接起来。连接要求如下所述:

对于这个项目来说,您需要将10个蓝光ROHM LED的正极引脚(较长的一端)分别连接到Arduino的数字引脚。

在本例中,我们使用了数字引脚4-13。

每个LED的负极引脚需要通过1kΩ的电阻器接地。

电位计有三个引脚。第一个连接到Arduino的接地引脚,第二个连接到模拟引脚A5,第三个引脚连接到5V。执行此操作将使第二个引脚的电压在0-5V之间变化。

连接示意图如下所示:

poYBAGJGwNeAAA3kAAOSY7jM-eo720.png

实际接线如下所示:

pYYBAGJGwNKAdCdZAAfXSbxjCps455.png

现在,您的系统已经连接好,您已经准备好对Arduino UNO R3进行编程。

设置Arduino IDE

Arduino编程需要设置Arduino IDE。Arduino IDE可在Linux和Windows上使用。对于这个DIY项目,我们将使用Windows桌面应用程序。访问以下链接下载并安装Arduino IDE:

https://www.arduino.cc/en/Main/Software

选择以下链接:

Windows Installer, 适用于Windows XP及更高版本

成功安装后,打开Arduino IDE并使用USB B数据线连接Arduino UNO R3:

poYBAGJGwM6AAYiCAAbM9M54ohc733.png

在Arduino IDE中,从“工具”》“端口”》“COM 3 (Arduino Genuino / UNO)”中选择适当的COM端口。

这时,您的设置已准备好开始编程。

编程

在Arduino编程中,有两个基本函数:Void Setup和Void Loop。完整代码及其解释如下所示:

void setup() {

//Declare A5 Analog pin as input pin

pinMode(A5, INPUT);

//Declare4-13 Digital Pins as Output Pins (For controlling 10 x ROHM LEDs)

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

pinMode(9, OUTPUT);

pinMode(10, OUTPUT);

pinMode(11, OUTPUT);

pinMode(12, OUTPUT);

pinMode(13, OUTPUT);

Serial.begin(9600);

}

void loop() {

//Check Analog value at pin A5 and store it in variable x

int x = analogRead(A5);

//Map analog values ranging from 1-1023 to values 0-10

int y=map(x,0,1023,0,10);

/*Use a loop to turn off LEDs having number greater than y. Here “i+3” corresponds to pin number on arduino. Since 10th LED is connected to Digital Pin number 13. Therefore +3 offset has been used*/

for (int i=10; i>y; i—)

{

digitalWrite(i+3,LOW);

}

//Use a loop to turn on LEDs having number lesser than y

for (int i=0; i;>

{

digitalWrite(i+4,HIGH);

}

delay(5);

}

//As a result number of LEDs lit will corresponding to the position of potentiometer

执行

如果您没有通过外部插孔为Arduino UNO供电,在执行过程中,请保持它与电脑连接。现在将电位计从一端旋转到另一端。当电位计在模拟引脚上给出0值时,没有LED点亮。旋转电位计时,点亮LED的数量会不断增加。电位计给出的值达到1023时,点亮LED的数量将达到10。可以看到,我们已经将传感器值的范围映射到了LED的数量。

电位计的起始位置。(模拟值0)

poYBAGJGwMqAaRuKAAdSv-LHEHY902.png

电位计的中间位置。(模拟值512)

poYBAGJGwMaAffe8AAfi_1hyuac370.png

电位计的最终位置。(模拟值1023)

pYYBAGJGwMKAdMSIAAfkiSsZ_IU277.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 映射
    +关注

    关注

    0

    文章

    42

    浏览量

    15722
  • Arduino
    +关注

    关注

    184

    文章

    6427

    浏览量

    184832
收藏 人收藏

    评论

    相关推荐

    STM32F4能否实现用重映射功能将dcmi映射到别的io口?

    能否实现用重映射功能将dcmi映射到别的io口
    发表于 03-25 08:07

    STM32上很多管脚功能可以重新映射

    知道,很多复用功能的引出脚可以通过重映射,从不同的I /O管脚引出,即复用功能的引出脚位是可通过程序改变的。这一功能的直接好处是,PCB电路
    发表于 01-11 10:09

    Nucleo STM32L476和Arduino TFT屏蔽引脚映射

    `我想在Nucleo STM32L476开发板上使用Arduino TFT屏蔽(ILI9341)。该屏蔽使用8位MCU模式并且工作良好,但Nucleo上的Arduino连接器的引脚植入不是很方便
    发表于 09-20 11:58

    LLAKG:Arduino 自动浇花系统(第2集:C 语言程序与功能实现

    ` 本帖最后由 tree***ook 于 2020-2-8 00:56 编辑 这是第二集了, 我介绍 C 语言程序, 实现了基本的自动浇花功能, 在调试过程中,还遇到了一些小插曲
    发表于 02-07 20:09

    怎么实现基于Arduino的多功能数字时钟的设计?

    怎么实现基于Arduino的多功能数字时钟的设计?
    发表于 11-02 06:16

    端口复用映射原理及GPIO外设复用功能配置过程

    文章目录端口复用端口复用映射原理原理示意图映射配置系统功能GPIO外设复用功能配置过程GPIO 端口时钟使能复用外设时钟使能端口模式配置为复
    发表于 12-09 07:20

    串口IO口映射功能该如何去实现

    串口IO口映射功能是指什么?串口IO口映射功能该如何去实现呢?
    发表于 12-13 07:07

    stm32f103串口如何实现映射功能

    stm32f103串口如何实现映射功能
    发表于 12-15 06:53

    如何用Arduino实现超声波测距功能

    基于Arduino的超声波模块和Proteus仿真最近做设计要用Arduino实现超声波测距功能,并用Proteus实现虚拟串口监视和
    发表于 01-17 07:03

    STM32的功能引脚重映射和复用功能

    STM32的功能引脚重映射和复用功能
    发表于 09-29 08:02 12次下载

    arduino的学习过程

    目录学习arduino过程学习arduino过程
    发表于 12-07 19:06 14次下载
    <b class='flag-5'>arduino</b>的学习<b class='flag-5'>过程</b>

    Arduino清洁机器人和房间映射

    电子发烧友网站提供《Arduino清洁机器人和房间映射.zip》资料免费下载
    发表于 10-31 10:30 0次下载
    <b class='flag-5'>Arduino</b>清洁机器人和房间<b class='flag-5'>映射</b>

    Arduino红外发射器自动映射

    电子发烧友网站提供《Arduino红外发射器自动映射.zip》资料免费下载
    发表于 01-03 14:13 0次下载
    <b class='flag-5'>Arduino</b>红外发射器自动<b class='flag-5'>映射</b>

    如何使用Arduino实现映射功能

    这篇文章来源于DevicePlus.com英语网站的翻译稿。前言您可能注意到了,尽管互连电子设备采用不同单位,有不同的上限和下限,但在它们的工作范围内始终是兼容的。
    的头像 发表于 02-23 09:45 7314次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>实现</b><b class='flag-5'>映射</b><b class='flag-5'>功能</b>

    功能发布 | TSMaster重大更新,一文了解信号映射操作流程

    前言今天介绍TSMaster新功能—信号映射。这个功能在旧版本里,只能实现从CAN信号到系统变量的映射,软件更新以后可以支持系统变量反向
    的头像 发表于 11-01 16:50 1162次阅读
    新<b class='flag-5'>功能</b>发布 | TSMaster重大更新,一文了解信号<b class='flag-5'>映射</b>操作流程