Проблемы с управлением светодиодом с датчиком влажности почвы

Я новичок в Arduino.

У меня есть датчик влажности почвы, и я сопоставил самое низкое и самое высокое значение влажности со значением от 0 до 100.

Что я пытался сделать, так это то, что если значение меньше 50, светодиод должен загореться. Но даже если значение меньше 50 (например, 25), светодиод не загорается.

Обнаружение влажности или сопоставление значений работают отлично.

В чем проблема: в моем коде или в проводке светодиодов?

Код:

int mostMoist = 180;
int leastMoist = 600;
int percent;
int raw;
const int threshold = 50;

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  raw = analogRead(A0);
  percent = map(raw,leastMoist,mostMoist,0,100);

  if (percent < 0){
    percent = 0;
  }

  if (percent < threshold){
    digitalWrite(LED_BUILTIN,HIGH);
  } else {
    digitalWrite(LED_BUILTIN,LOW);
  }

  Serial.println(percent);
  delay(2);  
}

, 👍0

Обсуждение

загрузите и запустите код мерцания светодиода, чтобы проверить светодиод, @jsotola

проблема в стороне: вы должны включать питание датчика только тогда, когда собираетесь делать показания; постоянный заряд очень быстро разъедает металл датчика., @dandavis


1 ответ


2

Хороший способ начать отладку такого рода проблем – распечатать операторы отладки, в которых говорится, что должно делать оборудование. Если операторы отладки распечатываются, как и ожидалось, то это, вероятно, аппаратное обеспечение, если нет, то, вероятно, это ваш код, например

if (percent < threshold){
  Serial.prinln("LED on.");
  digitalWrite(LED_BUILTIN,HIGH);
}
else {
  Serial.prinln("LED off.");
  digitalWrite(LED_BUILTIN,LOW);
}
,

Спасибо, после добавления оператора отладки все работает нормально, светодиод загорается в нужное время!, @Jeffrey Chan

Пожалуйста, рад помочь. Если это отвечает на ваш вопрос, вы можете пометить ответ как принятый: https://stackoverflow.com/help/someone-answers, @fractious