Proteus и залипшее значение

staromand
Offline
Зарегистрирован: 17.09.2012

Кто шарит в ISIS? У меня есть схемка, которая управляет релюшкой. До реле пока не дошёл, но ЛЕДы поставил как индикаторы событий. Так вот:

При достижении показания температурного датчика отметки 40 светодиод должен зажечься, при опускании значения ниже сорока - опять потухнуть.

В деле ISIS после того, как температура набрала 40гр., не отпускает значение и держит LED включенным, пока систему не ресетнуть. Вот такая проблема. Диз могу залить сюда, но, думаю, это необязательно.

В чем может быть проблема? Спасибо.

staromand
Offline
Зарегистрирован: 17.09.2012

Разобрался

ПРОТЕУСу нужно всегда "жёстко" прописывать весь сценарий действий.

т.е. если мы напишем

if(digitalRead(PIN_GEAR)==1) {
    digitalWrite(TEST_LED, HIGH);
}

то он при выключении PIN_GEAR PROTEUS не погасит светодиод.

 

А если написать

if (digitalRead(PIN_GEAR)==1) {
    digitalWrite(TEST_LED, HIGH);
} else {
    digitalWrite(TEST_LED, LOW);
}

то всё отработает как надо. Странно. Вот такие пироги..

maksim
Offline
Зарегистрирован: 12.02.2012

Это называется не "жёстко", а правильно, и не только в протэусе. Естественно светодиод не потухнет если нет строки кода, которая это делает. Так же можно было заменить ваши строки на одну:

digitalWrite(TEST_LED, digitalRead(PIN_GEAR));

И на будующее - если создаете тему, то не расчитывайте на то что вашу тему прочтет экстрасенс.