Правильно ли утверждение?

if(temperature < baselineTemp)else{
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
}else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){
  digitalWrite(2, HIGH)
  digitalWrite(3, LOW)
  digitalWrite(4, LOW)
}else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){
  digitalWrite(2, HIGH)
  digitalWrite(3, HIGH)
  digitalWrite(4, LOW)
}else if(temperature >= baselineTemp+6){
  digitalWrite(2, HIGH)
  digitalWrite(3, HIGH)
  digitalWrite(4, HIGH)

, 👍0


1 ответ


1

Нет, первые строки должны быть такими:

if(temperature < baselineTemp) {
  digitalWrite(2, LOW);

Поэтому else следует удалить; после первого условия if и последующих условий else или else if могут быть размещены операторы.

В следующий раз выровняйте свой код, выделив его и нажав Ctrl-K.

Кроме того, ваш код можно значительно упростить.

Отсюда следующие требования (реверс-инжиниринг):

  • контакт 2 имеет ВЫСОКИЙ уровень, если температура >= baselineTemp + 2, иначе НИЗКИЙ уровень
  • контакт 3 имеет ВЫСОКИЙ уровень, если температура >= baselineTemp + 4, иначе НИЗКИЙ уровень
  • контакт 4 имеет ВЫСОКИЙ уровень, если температура >= baselineTemp + 4, иначе НИЗКИЙ уровень

Поэтому весь код можно записать так:

digitalWrite(2, temperature >= baselineTemp + 2 ? HIGH : LOW);
digitalWrite(3, temperature >= baselineTemp + 4 ? HIGH : LOW);
digitalWrite(4, temperature >= baselineTemp + 6 ? HIGH : LOW);
,