Невозможно сделать действительно основную работу скетча
Я учился инкапсулировать свой код в функции, и один из примеров, над которым я работал, - это простая кнопка INPUT_PULLUP. Когда я загружаю скетч с сайта arduino, все работает, поэтому я знаю, что это не аппаратная проблема. Однако с кодом ниже кнопка просто не опустится низко.
Я просто не вижу, в чем проблема, и я чувствую себя действительно безнадежно, что я даже не могу сделать простую вещь. Буду благодарен за любой совет.
int button_pin = 2;
int button_state = 0;
void setup() {
Serial.begin(9600);
pinMode(button_pin, INPUT_PULLUP);
}
void loop() {
Button();
}
void Button() {
// Read button(s)
button_state = digitalRead(button_pin);
if (button_state = LOW) {
Serial.println(button_state);
};
};
1 ответ
Лучший ответ:
#define button_pin 2 //определение контакта кнопки как pin 2
bool button_state = 0; //состояние кнопки равно либо 0/1, поэтому используйте bool
void Button();
void setup()
{
Serial.begin(9600);
pinMode(button_pin, INPUT_PULLUP); //Настройка ввода в качестве подтягивания ввода
}
void loop()
{
Button();
}
void Button()
{
button_state = digitalRead(button_pin); //Считывает состояние кнопки
if (button_state == LOW)
{
Serial.println(button_state); //состояние кнопки печати при ее низком уровне
}
}
В своем коде вы использовали оператор = вместо
==
в цикле if. Просто, если вы измените его, он начнет работать, также вы можете использовать мой приведенный выше код, он такой же, как и ваш, просто я внес некоторые незначительные изменения, такие как использование bool
вместо int и использование #define
вместо объявления ПИН, где вы использовали int
Большое вам спасибо, что нашли время ответить. Это действительно полезно, и я ценю это., @Zhelyazko Grudov
@Желязкогрудов Я рад, что это тебе помогло. Удачи :), @Maaz Sk
- Нужен ли подтягивающий/понижающий резистор для цепи светодиода кнопки?
- Как узнать сопротивление внутреннего подтягивающего резистора?
- Невозможно использовать аналоговые контакты в качестве цифровых входов
- Входной сигнал сильно колеблется
- Использование вывода светодиода для ввода
- Что происходит, когда digitalWrite(pinname, LOW) вызывается после pinMode(pinname, INPUT_PULLUP)?
- Arduino Pro Micro не распознает INPUT или INPUT_PULLUP
- Как мне подключить 5 кнопок к ардуино, чтобы я мог использовать наименьшее количество входов, все кнопки подключены к земле
У вас есть ошибка в операторе if. Для проверки равенства вам нужно использовать
==
(двойной знак равенства). Единственное= " - это присвоение. Таким образом, вы фактически присваиваете НИЗКОЕ значение " button_state
. И присвоение вернет значение, которое вы присвоили, в данном случае НИЗКОЕ, оно же 0, оно же ложь. Таким образом, оператор if никогда не будет введен, @chrislСпасибо, Крис, я попробую это сделать и сообщу. Я не знаю, что бы я делал без вас, люди. Вчера я потратил на это несколько часов, перепробовав все, что мог придумать, но безуспешно., @Zhelyazko Grudov