CraftDuino v2.0
  • - это CraftDuino - наш вариант полностью Arduino-совместимой платы.
  • CraftDuino - настоящий конструктор, для очень быстрого прототипирования и реализации идей.
  • Любая возможность автоматизировать что-то с лёгкостью реализуется с CraftDuino!
Просто добавьте CraftDuino!

Кнопки

Для сообщения контроллеру о событиях во внешнем мире (въехали в стену, пользователь чего-то хочет и т.п.) служат датчики — а самый простой из них — кнопка.
Схема включения может быть такой:

При отпущенной кнопке будет низкий уровень (лог.«0», LOW), при нажатой — появится высокий (лог.«1», HIGH)
Скетч для выдачи в COM-порт состояния кнопки:
//кнопка подключена к цифровому пину #2
const int buttonPin = 2;     // назавём этот пин человеко-понятно, согласно назначению
// заведём переменную для хранения состояния кнопки 
int buttonState = 0; //и сразу запишем туда "0" - не нажата 

void setup() {
  
  Serial.begin(9600); // включим COM-порт
  pinMode(buttonPin, INPUT);  //и настроем наш кнопочный пин, как вход  
}

void loop(){
  buttonState = digitalRead(buttonPin); //читаем состояние кнопочного пина

  if (buttonState == HIGH) {   //и если там лог.1 (кнопка нажата)   
     Serial.println("1");      //печатаем это дело в порт
  } 
  else{                        //в противном случае
   Serial.println("0");        // напишем в порт нолик
  }
  
  delay(200); //что бы значения не летели в порт как сумашедшие - сделаем задержку
}
Соберём схему на макетке:

При запуске «Монитора Порта» (Serial Monitor-а), увидим приблизительно следующее:

Можно включить кнопку и наоборот:

Теперь не нажатая кнопка у нас даёт HIGH, нажатая — LOW
Скетч можно и не переписывать, но результат будет обратный. А ноль при нажатой кнопке, несколько странно=)
//кнопка так же подключена к цифровому пину #2, но уже притянута к земле
const int buttonPin = 2;     // обзавём пин
// переменную состояния кнопки инициализируем уже "1" 
//- теперь она соответствует не нажатому состоянию
int buttonState = 1;  

void setup() {
  
  Serial.begin(9600); // включим COM-порт
  pinMode(buttonPin, INPUT);  //и настроим наш кнопочный пин, как вход  
}

void loop(){
  buttonState = digitalRead(buttonPin); //читаем состояние кнопки

  if (buttonState == LOW) {   //и если там лог.0 (кнопка нажата)   
     Serial.println("1");      //печатаем это дело в порт
  } 
  else{                        //в противном случае
   Serial.println("0");        // напишем в порт нолик
  }
  
  delay(200); //задержка
}
На макетке:

Окно монитора порта теперь будет выглядеть так же как в первом примере.
Кстати, внешний резистор можно и не подключать, а просто включить подтяжку порта к питанию:
pinMode(buttonPin, INPUT_PULLUP);
Попробуйте.
Но правильнее, всё же, с внешним — внутренний резистор довольно высокоомный и в случае сильных помех-наводок или большой длинны проводов, может ловит случайные нажатия.
  • 0
  • 24 сентября 2012, 17:52
  • Zoltberg

Комментарии (0)

RSS свернуть / развернуть

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.