Arduino led温度传感器



我正在尝试构建一个简单的arduino温度计,根据温度点亮不同的LED。我用的是一个阿达水果5v饰品和一个带tmp36温度传感器的12像素戒指。我的问题是只有LED 11亮起。我试着改变温度范围来测试温度,我知道我的房间比这个冷。这是我正在使用的代码:

#include <Adafruit_NeoPixel.h>
#include <avr/power.h>
#define PIN            3
#define NUMPIXELS      12
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 500; 
int sensorPin = 1;
void setup() {
#if defined (__AVR_ATtiny85__)
  if (F_CPU == 16000000) clock_prescale_set(clock_div_1);
#endif
  pixels.begin(); 
}
void loop() {
  int reading = analogRead(sensorPin);
  int voltage = reading * 5.0;
  voltage /= 1024; 
  int temp = (voltage - 0.5) * 100;
  temp = constrain(temp, 23, 35);
  temp = map(temp, 23, 35, 0, 11);
  pixels.setPixelColor(temp, 0, 255, 38);
  pixels.show();
  delay(100);
}

非常感谢您的帮助。感谢:)

您需要考虑用于计算的数字类型(int与float)。使用整数进行数学运算会截断浮点结果。函数Math.round()可以帮助您从数学中获得更好的结果。

您可能需要考虑以下内容:

电压=数学四舍五入(电压/102.40);

除法运算将以浮点精度进行,然后您将得到四舍五入的结果。如果结果更接近该整数值,舍入将向上取整(duh),否则向下取整。

此外,Analog Read()返回0到1023之间的值。如果你把它(带截断)除以1024,你永远不会得到1024。

我建议查看Adafruit或Sparkfun网站上的示例代码,它们给出了解释热敏电阻/热电偶传感器的好例子。

最新更新