Дебютирование базового оборудования
Я смотрел серию учебников по Arduino Джереми Блума, и он объяснил необходимость дебюта в простой схеме, включающей кнопку. Нажатие кнопки один раз должно означать, что светодиод остается включенным, а нажатие кнопки снова должно означать, что светодиод должен оставаться выключенным, и так далее.
Он реализовал аппаратную разгерметизацию этой схемы: использовал RC-схему вместе с инвертирующим триггером Шмитта.
https://www.youtube.com/watch?v=CRJUdf5TTQQ&list=PLA567CE235D39FA84&index=10 2:45-8:45.
Однако схема работает не так, как ожидалось, когда я внедрил денбункинг. Он ведет себя так, как будто дебоширование не имеет никакого эффекта:-
Если кто-нибудь захочет посмотреть симуляцию:- https://www.tinkercad.com/things/dniOQmnxJPY
Где именно я ошибся? Я несколько раз проверял все соединения, похоже, именно это было у Джереми Блюма в его видео...
@satan 29, 👍0
Обсуждение1 ответ
Лучший ответ:
Вы не изменили последнюю кнопку, но сравнили ее с ВЫСОКОЙ. Измените свой код на следующий.
Вы можете легче избежать таких ошибок, если поставите пробелы вокруг операторов.
//sp is switchpin, lp is ledpin
int sp=2; //pin с включенным прерыванием (interrupt 0)
bool ledon=LOW;
bool lastbutton=LOW;
int lp=9;
void setup()
{
Serial.begin(9600);
pinMode(sp, INPUT);
pinMode(lp,OUTPUT);
}
void loop()
{
if (digitalRead(sp)==HIGH && lastbutton==LOW){
ledon=!ledon;
lastbutton = HIGH; // ранее здесь был lastbutton==HIGH;
}
else {
lastbutton=digitalRead(sp);
}
Serial.println(ledon);
digitalWrite(lp,ledon);
}
Ах да. Спасибо! Дебютирование сейчас работает отлично. Но по какой-то странной причине светодиод включается в начале моделирования.... без нажатия переключателя или чего-либо еще....есть идеи, почему?, @satan 29
Я думаю, из-за твоего фильтра. Требуется некоторое время, чтобы зарядить этот конденсатор, что означает, что ваш инвертирующий триггер Шмитта начинает работать с низким уровнем, и при первом запуске цикла ваш вывод 2 начинает работать с высоким. Если вы сделаете небольшую задержку в своей " настройке ()", индикатор погаснет., @Kerbolosh
действительно. задержка(100) исправляет это . Большое спасибо!, @satan 29
- Устранение дребезга кнопки с помощью прерывания
- Хорошая кнопка debouncing/Библиотека StateChange
- Управление несколькими светодиодами с помощью нескольких кнопок
- Будет ли простой RC-фильтр работать с механическим поворотным энкодером или понадобится триггер Шмитта?
- Кодировщик + Библиотека Bounce2
- Прерывание при нажатии кнопки + устранение дребезга
- Прерывание срабатывает дважды при установке на ПАДЕНИЕ
- Чтение поворотного энкодера с использованием цифровых контактов Mega 2560 напрямую с помощью регистров порта?
Я изменил "отладку" в названии на "отмену", потому что, очевидно, вы это имели в виду. Также "аппаратная отладка" имеет особое значение для микроконтроллеров. Это привело бы только к путанице, @chrisl
При переходе по ссылке для вашей симуляции мне необходимо войти в систему. Может быть, вам нужно как-то обнародовать симуляцию, прежде чем кто-нибудь сможет ее увидеть., @chrisl
Понятно, спасибо, что дали мне знать, @satan 29
@chrisl Я обнародовал это сейчас., @satan 29
@chrisl я отредактировал ссылку, @satan 29
@PythonSchlange Я Гейб отредактировал ссылку/, @satan 29
@jsotola это означает, что схема ведет себя так же, как она вела себя до отключения., @satan 29
Вы укоротили нижний и верхний штифты 74HC14, нет?, @SBF
@SBF как я его закоротил?, @satan 29
что соединяет верхний правый резистор со светодиодом?, @jsotola
@jsotola Я не ... понял твой вопрос.... Катод светодиода подключен к заземлению через резистор..., @satan 29
что делает связь между резистором и светодиодом?, @jsotola
@jsotola металлические рельсы макета....?, @satan 29
да, это верно ... теперь посмотрите, куда вы подключили свой IC, @jsotola
@satan29 То, что SBF имел в виду, заключается в следующем: 74HC14 имеет 2 ряда штырей, которые вы поместили на одну сторону макета. Это означает, что первый в левом ряду выводов чипа и первый в правом ряду-это соединение. Аналогично для всех других контактов. Такие чипы необходимо размещать прямо посередине макета, чтобы между сторонами не было электрического соединения. Это твоя проблема., @chrisl
Вы должны посмотреть учебник на YouTube о том, как использовать макет. В вашей конфигурации есть серьезные проблемы. К вашему сведению, на вашем 74hc14 контакт 7 заземлен, а контакт 14-Vcc (питание). У вас есть питание, идущее на контакты 1 и 14, и заземление, идущее на контакты 7 и 8. У вас также есть другие противоположные штыри, соединенные друг с другом., @lurker
о, я понимаю, @chrisl, спасибо., @satan 29
@lurker tinkercad предлагает сообщить вам, какой контакт что делает в IC. Я знаю, как пользоваться макетной платой! но я мало работал с IC, и я действительно понимаю ошибку, на которую указал Крисл., @satan 29