Чому ця кнопка не працює?

Here is my circuit: enter image description here

і ось мій код:

int LED = 13;
int BTN = 7;

void setup() {
pinMode(LED,OUTPUT);
pinMode(BTN,INPUT);
}
void loop() {
if(digitalRead(BTN) == HIGH) {
digitalWrite(LED,LOW);
}
else{
digitalWrite(LED,HIGH);
}
}

Коли я натискаю кнопку, світлодіод повинен знижуватися, але це не так. Що не так з цією схемою/кодом?

0
У мене є книга, яка має цю схему ...
додано Автор Kevin Dangoor, джерело
Де ти базував підключення на кнопці? Мені здається, що це завжди пов'язано з GND. Натискання кнопки відправить електроенергію на GND, через резистор, навряд чи він потрапляє в контактний, так як він має вищий опір (наскільки я знаю).
додано Автор dotnetengineer, джерело
Можливо, варто пошукати підручники з електроніки та/або основні підручники Arduino. Під час (гарного) підручника вони пояснять, як налаштувати електроніку (і чому це працює). Просто підключення матеріалу, який, на ваш погляд, буде працювати, спричинить головний біль або гірше;)
додано Автор dotnetengineer, джерело
Макс - дійсно корисний сайт для вас може бути 123d.circuits.io , що дозволяє вибухувати компоненти практично . Це дає змогу імітувати ваші схеми (і код) і означає, що ви не обсмаживаєте справжніх Unos, які вам цілком можуть зробити. Я ніколи ще не встиг смажити кожен компонент в схемі на 123d, але я продовжую намагатися :)
додано Автор Thomas Myron, джерело

4 Відповіді

Павло вірний. Ваша кнопка неправильно підключена. Гніздо GPIO слід з'єднати з тією ж стороною, що і резистор. Також кнопка має обертатися на 90 градусів.

Також перевірте, як індикатор підключено до мережі. На даний момент вона виглядає так, що вона налаштована так, що GPIO зменшує поточний (LOW вимикає світлодіодний індикатор), але світлодіодний вигляд виглядає так, що це пов'язано неправильним шляхом.

Фактично, я не можу знайти нічого правий про цю схему ...

1
додано
Добре помічено Оновлений відповідь.
додано Автор Majenko, джерело
Та й кнопка, схоже, також скорочена на макеті
додано Автор Hailwood, джерело

На додаток до відповідей від Метта та Майенко, ви використовуєте неправильний PIN-код для світлодіодів.

У вас є int LED = 13; , тоді як ваш світлодіод підключений до шпильки 6.

NB: Pin 13 підключено до світлодіоду, припареним до дошки Arduino - як це видно на зображенні нижче.

enter image description here

0
додано

Вхідний порт завжди буде в Gnd, тому що ви підключили його до землі. Вибачте, що викладені в таких основних умовах, але це я розумію. На виході з кнопки важче підійти до землі, ніж доти, доки ви не отримаєте PIN-код для BTN. Тому поставте більший резистор (1K-10K) замість вашої жовтої дроту між кнопкою та землею.

І ваш індикатор не є правильним шляхом на схемі.

(І Маєнко швидше машиниста, ніж я! :))

0
додано

Ваш код та схематичне зображення здаються помилковими.

Спробуйте цю схему:

schematic

А потім код:

const int kPinLed = 6;//LED - Pin 6
const int kPinBtn = 7;//Push Button - Pin 7

void setup()
{
  pinMode(kPinLed, OUTPUT);      //LED as OUTPUT
  pinMode(kPinBtn, INPUT_PULLUP);//Push Button as INPUT wiith pullup
}

void loop()
{
  if(digitalRead(kPinBtn) == LOW) //When Push Button is pressed
  {
    digitalWrite(kPinLed, HIGH);  //LED ON
  }
  else digitalWrite(kPinLed, LOW);//LED OFF
}
0
додано