1

我想通过电位器设置时间间隔。我想从 1 到 6 秒选择它。我怎样才能做到这一点?

到目前为止我有这个。如果我使用电位器,灯光会从亮变为暗。

(我正在使用 Arduino Uno,我正在使用 C++ 编程)。

const byte pot = 0;
int potWert=0;

potWert = analogRead(pot);  
analogWrite(led,potWert/4);
Serial.println((byte)potWert); //just for output on the serial monitor
4

2 回答 2

5

analogRead 读取的范围为0 到 1023您需要将其缩放到您的时间间隔。

你说你想要1到6秒的范围(不是0到6?)。为了让它正确地缩放到底池,您需要将 1023 除以 6(如果您需要 0 到 6 的范围,则为 7)。所以:

1023 / 6 = 170.5

因此你需要使用:

analogWrite(led,potWert/170.5);

假设您希望它精确到十毫秒单位

 1023 / 600 = 1.705

因此:

analogWrite(led,potWert/1.705);
于 2013-05-31T11:01:26.343 回答
0

这是一种艰难的方式,并且使代码难以阅读。使用地图语句。这是来自 Arduino 参考的示例:

例子

/* Map an analog value to 8 bits (0 to 255) */
void setup() {}

void loop()
{
  int val = analogRead(0);
  val = map(val, 0, 1023, 0, 255);
  analogWrite(9, val);
}
于 2013-06-03T05:31:02.710 回答