Почему светодиод всегда горит в proteus?
Я моделирую схему с помощью arduino, которая определяет, есть ли ток на входе, а затем включает светодиод на выходе. Проблема в том, что индикатор всегда горит, даже когда кнопка на входе открыта.
Это мой код:
void setup() {
pinMode(7, OUTPUT);
pinMode(8, INPUT);
digitalWrite(7, LOW);
}
void loop() {
int on = digitalRead(8);
digitalWrite(7, on);
}
Почему это происходит и как мне это решить?
Любая помощь будет оценена по достоинству.
@Becker, 👍0
Обсуждение1 ответ
Лучший ответ:
Входы микроконтроллера не обнаруживают наличия тока. Они сравнивают напряжение с пороговым значением.
На самом деле входной вывод находится ближе всего к конденсатору. Вы нажимаете кнопку, и он заряжает этот конденсатор до напряжения, превышающего пороговое значение для "ВЫСОКОГО". Затем вы отпускаете кнопку, но этот конденсатор остается заряженным и по-прежнему показывает "ВЫСОКИЙ". Вам нужно что-то, чтобы уменьшить заряд на этом конденсаторе до уровня ниже "НИЗКОГО" порогового напряжения.
Обычно это делается с помощью резистора между выводом GPIO и GND, который "сбрасывает" этот заряд и выдает НИЗКОЕ значение при отпускании кнопки.
Это "понижающий" резистор (вы также можете поменять его местами и подключить "повышающий" резистор и кнопку, подключенную к GND), и он является неотъемлемой частью любого входа, который сам по себе не генерирует как ВЫСОКОЕ, так и НИЗКОЕ требуемое напряжение (любой переключатель или кнопка).
Кроме того, 10 В на выводе GPIO уничтожит ваш Arduino.
Я добавил резистор 10 Ком, который соединяет заземление и входной контакт, как предлагаете вы и Крисл, и он работает хорошо. Но что касается источника 10 В, почему моя схема все еще работает, почему proteus не предупреждает меня об этом?, @Becker
@Becker Это всего лишь симуляция - приближение. Вероятно, они просто не думали, что люди будут делать такие вещи, и не запрограммировали это, чтобы предупредить вас., @Majenko
Я понимаю это. Большое спасибо за ваш ответ., @Becker
- Arduino Uno - Аналоговый симулятор схем
- Можно ли заставить Arduino Uno Rev3 притворяться джойстиком?
- Схема светодиодной ленты правильная?
- Моделирование схемы ARDUINO с фотоэлектрической панелью
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
Что происходит, когда вы добавляете выпадающий резистор к своему входному контакту (резистор, например, 10 Ком от входного контакта до земли), @chrisl
И вы пытаетесь подключить 10 В к входу Arduino? Это плохо. На самом деле это привело бы к разрушению аппаратного обеспечения входного вывода, @chrisl
@chrisl я понимаю. Но на самом деле, работает ли это случайным образом, как в симуляции, или входной вывод просто сразу умирает?, @Becker
Я бы предположил, что при 10 В: Да, он умрет немедленно. Насколько я помню, в аппаратные средства контактов встроены зажимные диоды, которые позволяют рассеивать избыточное напряжение. Они будут уничтожены, хотя мы не можем знать, потерпят ли они неудачу или нет, @chrisl