2

嘿,我有以下代码:

  sVal = analogRead(potPin);    // read the value from the sensor
  valMin = min(sVal, 1);
  valMax = max(sVal, 128);
  constrain(sVal,valMin,valMax);

  itoa(sVal, res, 10);
  println(res);
  println(" ");
  delay(150);
  clearScreen();

现在由于某种原因,gLCD屏幕上的输出几乎一直是1023。我希望电位器的最小值为1,最大值为128。

4

2 回答 2

5

您的代码表明对 min、max 和约束函数缺乏了解。我建议您更仔细地阅读文档。

与此同时,这就是我认为你所追求的:

sVal = analogRead(potPin);
sVal = sVal / 8 + 1; //scale value [0.. 1023] to [1.. 128]

itoa(sVal, res, 10);
println(res);
println(" ");
delay(150);
clearScreen();
于 2010-06-18T13:26:24.330 回答
3

API中已经有一个范围映射功能,例如:

 res = map(analogRead(potPin), 0,1023, 1,128);
于 2010-06-20T09:22:44.863 回答