一、案例
val = analogRead(dyPin); //读取模拟口的模拟量数值
dyValue=map(val,0,1023,0,500);//这个函数是将电位器调节的模拟量的值按比例转换成对应的电压量
问题,为什么不是0~499呢?
其实也行↓
当map(val, 0, 1023, 0, 500)
被调用时,假设val
的取值范围是0到1023。如果使用0到499作为映射范围,会导致最大值无法被完全映射到目标范围内。考虑到实际应用中可能需要完整映射整个范围,因此选择0到500作为映射范围更为合适,这样可以确保最大值1023能够被映射到500。
因此,为了确保映射的准确性和完整性,选取0到500作为映射范围是更为合理的选择。
通过analog 模拟输入引脚获取 对应的 模拟值 对应为1K阈值。
Serial.println((float)dyValue/100.00); //串口显示对应的电压值
二、map函数
在Arduino中,map()
函数用于将一个数字从一个范围映射到另一个范围。其语法如下:
map(value, fromLow, fromHigh, toLow, toHigh)
value
:要映射的值。fromLow
和fromHigh
:原始范围的最小值和最大值。toLow
和toHigh
:目标范围的最小值和最大值。
例如,map(val, 0, 1023, 0, 500)
的作用是将 val
这个值从 0 到 1023 的范围映射到 0 到 500 的范围内。这意味着如果 val
的值为 0,映射后的值为 0;如果 val
的值为 1023,映射后的值为 500;如果 val
的值在这个范围内,将按比例线性映射到目标范围内的对应值。
三、请区别与Java语言的Map集合
在Arduino中,map()
函数用于将一个数字从一个范围映射到另一个范围,这是一种数学计算函数,用于对数值进行线性映射转换。
而在Java语言中,Map
是一种接口(Interface),它表示映射表,即一种键值对的集合。Java中的Map
集合用于存储键值对,并提供了根据键来查找值的功能。常见的实现类包括HashMap
、TreeMap
等,它们提供了不同的实现方式和性能特点。