这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 电源与模拟 » 如何使用Arduino实现映射功能

共4条 1/1 1 跳转至

如何使用Arduino实现映射功能

工程师
2022-07-19 19:37:40     打赏
这篇文章来源于DevicePlus.com英语网站的翻译稿。


前言

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

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

  • 什么是映射?

  • 如何读取传感器输入

  • 如何将传感器输入映射到所需的值范围

  • 映射的范围如何用于所需的驱动

  • Arduino中映射功能的语法

  • 使用Arduino UNO实现的映射功能的应用

概述

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

  • 所需元器件

  • 电路原理图

  • 设置Arduino IDE

  • 编程

  • 执行

所需元器件

元器件链接/图片
10 x 蓝光ROHM LEDhttps://www.rohm.com/products/led/led-lamps-mono-color-type/sla560bct-product


Arduino UNO R3https://www.aliexpress.com/item/32981776049.html


USB B数据线


(通常随Arduino UNO R3一起提供)

10k 电位计https://www.aliexpress.com/item/32859477972.html


830 孔无焊面包板 breadboardhttps://www.aliexpress.com/item/32701019904.html


20 根公头转公头跳线https://www.aliexpress.com/item/32951945552.html


1个1kΩ电阻器任何电子商店


基于Windows的计算机,用于编程

 

电路原理图

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

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

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

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

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

连接示意图如下所示:

connection schematics

实际接线如下所示:

wiring to breadboard

  • 现在,您的系统已经连接好,您已经准备好对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:

Arduino Map Function

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

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

编程

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

1234567891011121314151617181920212223242526272829303132333435void setup() {//Declare A5 Analog pin as input pinpinMode(A5, INPUT);//Declare  4-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<y; 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)

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

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





关键词: 如何     使用     Arduino     实现     映射     功能    

工程师
2022-07-19 19:41:09     打赏
2楼

谢谢分享


工程师
2022-07-19 19:43:47     打赏
3楼

谢谢分享


专家
2022-07-20 09:12:23     打赏
4楼

学习,谢谢分享!


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]