pullup вместо резистора для кнопки
- Войдите на сайт для отправки комментариев
Чт, 03/07/2014 - 11:28
Добрый день!
Требуется подключить кнопку, и слушать ее состояние, обычно она замкнута, по обычной схеме, как я понял рекомендуется возврат с кнопки (который входит в ногу (D2)) подтянуть к GND через резистор 2,2-10кОм. Но вроде можно сконфигурировать pullup программно?
pinMode(pin, INPUT); аdigitalWrite(pin, LOW);
Можно ли так пользоваться, или не зря рисуют отдельный резистор?
P.S. Arduino Nano
Задачу решил по другому:
Кнопку подключил к GND и D2 и сделал pullup к 5В, теперь при замыкании она падает в 0, а резистора pullup имхо хватит для КЗ между GND и 5В
P.S. комментарии бы всё же послушал, мало ли ошибаюсь
А что тут комментировать? Стандартное использование подтягивающего резистора. Стандартней не придумаешь. Вообщем-то на этом примере и объясняют зачем нужен встроенный подтягивающий. Да и в любом детальном тутореале про кнопки это есть. Скажем в прикрепленной ветке для новичков про кнопки.
Непонятно только зачем вы обозвали это "хватит для КЗ между GND и 5В", так как его предназначение прямо противоположное: cделать подтяжку, но что-бы небыло КЗ в момент нажатия кнопки. C чем он багополучно справляется.
КЗ - это уже аварийное состояние. Это когда можно попалить дуину, USB порт и т.п. И у вас тут его - явно не будет.
Ну разве что pinMode(pin,INPUT) - не обязательно. По умолчанию пины и так на вход включены. Но... лично я тоже предпочитаю лишний раз написать pinMode. Не экономитьп пару нажатий клавиатуры. Явно видно по коду что это вход, и если случайно, где-то выше он включался на OUTPUT - меньше рисков.
Не понимаю почему все упорно отказываются писАть
pinMode(pin,OUTPUT); // выход
pinMode(pin,INPUT); // вход
pinMode(pin,INPUT_PULLUP); // вход с подтяжкой
Не понимаю почему все упорно отказываются писАть
Ну, на 80% - дело привычки и существование большого объема кода где уже написанно "по старому".
К тому же старые версии IDE - еще встречаются. Так я знаю что "будет работать везде".
Да и, к "чистому AVR-ровскому стилю" как-то ближе. Меньше расстояние между ардуиновским кодом и тому что описано в даташите или любому туториалу по портам-ввода/вывода AVR-ки.
Вообщем "так" получается как бы "более осознанно". Лучше понимаешь что происходит и что именно ты делаешь.
Но, конечно, хотите писать INPUT_PULLUP - пишите. А я хочу - раздельно ;)
Кстати название темы "pullup вместо резистора для кнопки" - идеологически неверно.
Так как у нас нет никакого "вместо". Резисторы бывает, смотря по тому куда подтягивают к земле или питанию, pullup и pulldown.
Различаются по тому где физически расположены: внешние и внутренние (встроенные в камень).
Соотвественно, теоретически у нас есть 4-ре комбинации-разновидности:
1. внешний pullup
2. внешний pulldown
3. внутренний pullup
4. внитуренний pulldown
Первый два естественно целиком под нашим контролем. Какой хотим - такой и сделаем. Какой номинал хотим - такой и поставим.
Третий и четвертый, естественно - что производитель камня сделал то и будем пользовать.
В случае AVR-рок восмибитных производитель сделал только "внутренний pullup" (но в других камнях и внутренний pulldown бывает).
Так что никаких "вместо". Мы продолжаем использовать резистор для кнопки. Просто "другой".
Leshak, я понял где твои ты можешь быть страшно полезен. Когда нужно на диске порядок навести, разложить все по папочкам и составить описание.
Вот если бы ты еще писал повеселее, мы бы тебе предложение предложили.
Ты меня пугаешь!
Ты меня пугаешь!
Да я сам себя боюсь.
Leshak - молодец! Как у него только нервы выдержали в теме про 1023 - 1024 , я бы не смог.....
Как то мне значит не везло на примеры, или искал криво. Т.к. у меня кнопка постоянно замкнута, то я от КЗ и спасался, может не однозначно сформулировал...
Не понимаю почему все упорно отказываются писАть
pinMode(pin,OUTPUT); // выход
pinMode(pin,INPUT); // вход
pinMode(pin,INPUT_PULLUP); // вход с подтяжкой
Я использую CyberLib.h, а там (на сколько я знаю) это в любом случае в 2 строчки, поэтому и вопрос так задавал. Как правильно сказали - дело привычки...
Если кнопка постоянно-замкнутая, то лучше использовать внешний резистор.
Для внутренней подтяжки используются слабые резюки, которые дохнут от любого чиха.
И кстати, всё еще интересный вопрос - а в каких случаях имеет смысл задействовать и внутреннюю и внешнюю подтяжку одновременно ? Как в этом случае соединены резисторы- параллельно или посделовательно ???
Если кнопка постоянно-замкнутая, то лучше использовать внешний резистор.
Для внутренней подтяжки используются слабые резюки, которые дохнут от любого чиха.
внутри микросхем сгорает что-то не потому что микросхема дохлая, а потому что снаружи ...
И кстати, всё еще интересный вопрос - а в каких случаях имеет смысл задействовать и внутреннюю и внешнюю подтяжку одновременно ? Как в этом случае соединены резисторы- параллельно или посделовательно ???
косинусом
может вам не стоит заниматься arduino?
Leshak - молодец! Как у него только нервы выдержали в теме про 1023 - 1024 , я бы не смог.....
дык, примерно одинаково рассуждаем - а вот победить в споре нельзя... тока в пари :)
а можно ли програмно подтягивать Rx к плюсу?
а можно ли програмно подтягивать Rx к плюсу?
Клапауций запретил, лет пять тому как уже.
А потом самого Клапуция запретили. Двойное отрицание ;)
А потом самого Клапуция запретили. Двойное отрицание ;)
Ваще сложно стало, блин. Вот как теперь к плюсу подтягивать? :)
а можно ли програмно подтягивать Rx к плюсу?
Клапауций запретил, лет пять тому как уже.
а где об этом можно почитать?
а можно ли програмно подтягивать Rx к плюсу?
Клапауций запретил, лет пять тому как уже.
а где об этом можно почитать?
Да подтягивай, господи, это был сарказм :)
[/quote]
Да подтягивай, господи, это был сарказм :)
[/quote]
я так по началу и подумал, но в соседней теме (этот же вопрос) я уже не понимаю, где сарказм, а где не сарказм)))
я так по началу и подумал, но в соседней теме (этот же вопрос) я уже не понимаю, где сарказм, а где не сарказм)))
Ты UART на этом пине используешь? Если нет - не рефлексируй и юзай внутреннюю подтяжку. Если да - то тоже не рефлексируй и попробуй. У мну UART нормально и штатно работает с включенной внутренней подтяжкой на RX-линии, к слову.
я так по началу и подумал, но в соседней теме (этот же вопрос) я уже не понимаю, где сарказм, а где не сарказм)))
Ты UART на этом пине используешь? Если нет - не рефлексируй и юзай внутреннюю подтяжку. Если да - то тоже не рефлексируй и попробуй. У мну UART нормально и штатно работает с включенной внутренней подтяжкой на RX-линии, к слову.
та в том то и дело, что использую UART. просто rx подключаю не напрямую к tx, а через мосфет (для согласования логических уровней 5 и 12в), в данном случее нужны подтягивающие резисторы.
мне захотелось избавиться от внешнего, вот и решил спросить у знающих, перед тем как эксперементировать)