Контакты 2 и 3 должны быть соединены?
Я играл с рекламой Arduino и понял, что контакты 2 и 3 каким-то образом связаны. Когда я нажимаю кнопку для контакта 2, для контакта 2 и контакта 3 устанавливается ВЫСОКИЙ уровень, хотя к контакту 3 ничего не подключено. Код, который у меня есть, настроен для контакта 2 и ничего не упоминает о контакте 3, но если я изменю аппаратное обеспечение для подключения его к контакту 3, оно ведет себя так же, как контакт 2. Ни один из других контактов этого не делает. Так и должно быть или что-то не так?
int switchState = 0;
const int led1 = 12;
const int led2 = 8;
const int led3 = 3;
const int button = 2;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
switchState = digitalRead(button);
if(switchState == HIGH){
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led3, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led1, LOW);
delay(500);
}
else{
digitalWrite(led3, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led1, LOW);
}
}
@Josh, 👍1
Обсуждение2 ответа
Вход, который ни к чему не подключен, «плавает». Это даст вам непредсказуемые значения. На это могут влиять близлежащие контакты. Вероятно, это то, что вы видите. (Металлические дорожки двух контактов, вероятно, расположены рядом друг с другом на плате Arduino.)
Вам следует либо заземлить вход с помощью резистора, либо подключить его к +5 В с помощью резистора, либо использовать режим INPUT_PULLUP
, который привязывает его к внутреннему подтягивающему резистору. Любая из этих вещей не позволит входным данным «прыгать» и давать непредсказуемые результаты.
(Обратите внимание, что использование подтягивающего резистора, внутреннего или внешнего, приводит к инвертированию логического состояния, которое вы получаете от этого входа (вы получаете ВЫСОКИЙ уровень, когда вход не подключен к земле, и НИЗКИЙ, когда он подключен на землю.)
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Добро пожаловать в Arduino:SE. Если вы отредактируете свой вопрос, включив в него свой код, это может помочь людям понять, что не так., @sempaiscuba
даже если к контакту 3 ничего не подключено
- узнайте, что такое "плавающий вход"..., @MajenkoУ вас есть подтягивающее или опускающее устройство, подключенное к контакту кнопки?, @Gerben