Сходит с ума ардуино. При подключении к цифровому пину датчика уровня жидкости или джойстика, читаю цифровой пин. Ничего не нажимая и ничего не трогая, на ардуино мега наз в 1,5 сек. цифровой пин самостоятельно меняет 0 на 1 и обратно. На уно происходит тоже самое, но раз в 10 сек. Вот скетч Код (C++): #define BUTTON 3 #define KRAN 4 #define ON LOW #define OFF HIGH void setup() { Serial.begin(9600); pinMode(BUTTON, INPUT); pinMode(KRAN, OUTPUT); digitalWrite(KRAN, OFF); } void loop() { Serial.println(digitalRead(BUTTON)); if(digitalRead(BUTTON) == 0) { digitalWrite(KRAN, ON); } else { digitalWrite(KRAN, OFF); } delay(100); } В чем может быть дело? Платы разные, пины тоже менял, подключаемые устройства тоже разные
В случае с датчиком уровня: один провод к земле, другой к пину. Больше ничего В случае с кнопкой: один провод на землю, другой на +5, третий на 3-й пин.
погуглил "внешнюю подтяжку" и проблему решил добавление в код в setup строчки Код (C++): digitalWrite(BUTTON, HIGH);
У вас кнопка переключатель? Для простых кнопок с двумя контактами испольщуют режим пина INPUT_PULLUP. Кнопку включают между GNDи пином.
Вместо двух строчек: Код (C++): pinMode(BUTTON, INPUT); digitalWrite(BUTTON, HIGH); можно использовать одну: Код (C++): pinMode(BUTTON, INPUT_PULLUP);
Да. Только это не внешняя подтяжка, а встроенная в МК. Одно другому не мешает. Точнее не помогает. Если пин ловит помехи, то прерывания так же спонтанно будут происходить.