Настройка pinMode(pin, input/output) в соответствии с требованиями пользователя
Я работаю на arduino IDE и esp8266 nodemcu. Изучая IDE, я увидел, что существует структура void loop() и void setup(), а все примеры в Интернете включают определение pinModes внутри блока void setup(). Я хочу создать программу, в которой через mqtt или http пользователь будет вводить данные о том, какой тип устройства он/она хочет подключить к esp8266, поэтому на основе этого мне придется установить состояние ВХОДА/ВЫХОДА на следующих контактах.
Моей первоначальной идеей было:
void setup()
{
connectwifi();
}
void loop()
{
call_some_function();
}
где call_some_function()
получит требования от пользователя по http. Например, он хочет свет на pin3, поэтому pinMode(pin3,OUTPUT);
Теперь я хотел, чтобы было,
вызывать метод - call_some_function()
всякий раз, когда пользователю нужно добавить к нему дополнительное устройство, что означает, что изначально, когда мы хотели добавить 4 лампы к esp8266, мы напишем
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);
Но теперь, когда у меня есть ввод, определенный пользователем, мой код станет примерно таким,
call_some_function()
{
pin=(user gave me the pin no);
state=(based on the device the server will send the state i.e IN/OUT);
pinMode(pin,state);
}
Теперь у меня вопрос: вызов этой функции 4 раза и написание функции pinMode()
4 раза приведет к одному и тому же результату или к разным результатам?
И возможно ли это, могу ли я написать вот так?
Я буду вызывать эту функцию из void loop()
вместо if void setup()
, так как я постоянно слушаю пользовательский ввод,
Потому что я не могу найти другого способа сделать пользовательский ввод
@Wan Street, 👍2
Обсуждение2 ответа
Лучший ответ:
Теперь у меня вопрос: вызов этой функции 4 раза и написание функции pinMode() 4 раза приведет к одному и тому же результату или к разным? Также это выполнимо, например, могу ли я написать так?
Вы можете вызвать pinMode в любое время
И чтобы добавить что-то еще к pinMode. Это не просто некоторая подготовка пина. Это меняет вещи для подключенной схемы. Установка на INPUT позволяет присоединенной схеме управлять. Если есть подтягивающая схема, состояние будет HIGH, если pull-down — LOW. INPUT_PULLUP сохраняет состояние HIGH, но позволяет присоединенной схеме потянуть его вниз. pinMode OUTPUT устанавливает вывод LOW.
В двух случаях на данный момент я использую установку вывода в положение ВЫХОД только на время, когда я хочу управлять присоединенной схемой, а затем я устанавливаю его обратно в положение ВХОД. В первом случае я сбрасываю esp8266 с подключенным выводом EN, устанавливая вывод LOW, затем я позволяю внешнему подтягивающему резистору удерживать вывод EN в положении HIGH. Второй случай — это модуль усилителя для функции tone(). Я устанавливаю вывод в положение ВХОД после tone(), иначе он улавливает шум.
pinMode()
обычно вызывается из setup()
, поскольку в большинстве случаев режим пина остается неизменным на протяжении всего выполнения. Иногда есть причина изменить его во время выполнения, как в вашем примере, и вы можете вызвать pinMode()
в любое подходящее время для этого.
Хорошо, ты... Джурадж первым дал правильный ответ, поэтому я отмечу его ответ., @Wan Street
- Как определить размер Flash?
- В ESP-12E NodeMCU, какой выход PIN A0?
- Преобразование byte* в int в Arduino
- Каково использование зарезервированных контактов и контактов SDD2, SDD3 NodeMCU?
- NodeMCU (Arduino IDE) «DynamicJsonBuffer» не был объявлен в этой области
- NodeMCU поддерживает внедрение ключей?
- Датчик движения PIR (HC-SR501) ложные результаты с NodeMCU
- Как получить текущую дату
Вы можете вызвать pinMode в любое время, @Juraj
Можете ли вы сделать свой комментарий «ответом на свой вопрос», потому что если дальнейшее обсуждение окажется ответом, то я смогу отметить его как ответ., @Wan Street