Я пытаюсь построить простой термометр arduino, который загорается другим светодиодом в зависимости от температуры. Я использую брелоки adafruit 5v и 12 неопиксельных колец с температурным датчиком tmp36. Моя проблема в том, что загорается только индикатор 11. Я попытался изменить диапазон, чтобы проверить температуру, и я знаю, что моя комната холоднее, чем this.Here это код, я использую:Arduino led датчик температуры
#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);
}
Помощь была бы оценена. Спасибо :)
пожалуйста, любой. Мне действительно нужна помощь. – user3880247
Я не знаю точно, что делает ваш код, но я замечаю, что в вычислениях есть ** реальные ** значения и 'напряжение/= 1024', а затем умножение на 100 будет довольно грубым, работая с' int' , Должен ли вы использовать 'float' для всего этого, прежде чем перейти к' int'? –
«Только светодиод 11 горит» означает, что при использовании вышеуказанного кода. Или это вообще. Я подозреваю, что начальный - действительно ли вы используете максимальный вход? Я бы отлаживал его в UNO, сначала печатал в коде, чтобы видеть номера, которые вы действительно получаете. Подозреваемая область может быть, вы не получаете максимальное количество из MAP. – mpflaga