说明
map()可以用来将某一数值从一个区间等比映射到一个新的区间。
语法
[c gutter=”0″]
map (x, in_min, in_max, out_min, out_max) [/c]
参数
x: 要映射的值
in_min: 映射前区间最小值
in_max: 映射前区间最大值
out_min: 映射后区间最小值
out_max 映射后区间最大值
示例程序
1 2 3 4 5 6 7 8 9 |
/* 以下程序将变量val数值从 0 - 1023 区间映射到 0 - 255区间*/ void setup() {} void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); //将变量val数值从 0 - 1023 区间映射到 0 - 255区间 analogWrite(9, val); } |
注意
map()不会将数值限制在映射区间内。如以下程序所示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
void setup() { Serial.begin(9600); } void loop() { for (int i = 1; i < 11; i++){ int x = i; Serial.print ("x before map: "); Serial.println (x); x = map (x, 1, 5, 1, 50) ; //将x数值从区间1 - 5 映射到区间 1 - 50 Serial.print ("x after map:"); Serial.println (x); Serial.println (""); } while(1){continue;}; } |