Подключил ртутный датчик наклона к ардуино и написал код чтобы при наклоне загорался встроенный светодиод. Но потом захотел сделать так, чтобы было наоборот (чтоб светодиод выключался при наклоне). В выражении
if(val == HIGH)
поменял HIGH на LOW, но светодиод не выключается а просто тускнеет.
В чем причина?
Кодint led_pin = 13; // пин, к которому подключен светодиод
int switch_pin = 3; // пин, к которому подключен датчик
int val; // переменная для хранения считанного значения
void setup() {
pinMode(led_pin, OUTPUT); // настройка пина светодиода как выходного
pinMode(switch_pin, INPUT); // настройка пина датчика как входного
}
void loop() {
val = digitalRead(switch_pin); // чтение значения с пина датчика
if(val == HIGH) { // если с датчика поступает высокий уровень
digitalWrite(led_pin, HIGH); // включить светодиод
} else {
digitalWrite(led_pin, LOW); // выключить светодиод
}
}
UPD: Дело было в подтягивающем резисторе. Решилось соединением логического пина с землей резистором на 10кОм. Всем спасибо.