Учебники

Arduino — клавиатурный выход

В этом примере библиотека Keyboard используется для выхода из сеанса пользователя на компьютере, когда контакт 2 на ARDUINO UNO установлен на землю. Эскиз моделирует нажатие клавиш в последовательности двух или трех клавиш одновременно и после небольшой задержки освобождает их.

Предупреждение. Когда вы используете команду Keyboard.print () , Arduino берет на себя клавиатуру вашего компьютера. Чтобы не потерять контроль над компьютером во время выполнения эскиза с помощью этой функции, настройте надежную систему управления перед вызовом Keyboard.print (). Этот эскиз предназначен для отправки команды клавиатуры только после того, как штифт был заземлен.

Необходимые компоненты

Вам понадобятся следующие компоненты —

  • 1 × макет
  • 1 × Arduino Leonardo, Micro или Due Board
  • 1 × кнопка
  • 1 × перемычка

Процедура

Следуйте электрической схеме и подключите компоненты на макете, как показано на рисунке ниже.

Макет клавиатуры

эскиз

Откройте программное обеспечение Arduino IDE на своем компьютере. Кодирование на языке Arduino будет контролировать вашу схему. Откройте новый файл эскиза, нажав Новый.

Для этого примера вам нужно использовать Arduino IDE 1.6.7

эскиз

Примечание. Вы должны включить библиотеку клавиатуры в файл библиотеки Arduino. Скопируйте и вставьте файл библиотеки клавиатуры внутри файла с именами библиотек (выделены), как показано на следующем снимке экрана.

Файл библиотеки Arduino

Arduino Code

/*
   Keyboard logout
   This sketch demonstrates the Keyboard library.
   When you connect pin 2 to ground, it performs a logout.
   It uses keyboard combinations to do this, as follows:
   On Windows, CTRL-ALT-DEL followed by ALT-l
   On Ubuntu, CTRL-ALT-DEL, and ENTER
   On OSX, CMD-SHIFT-q
   To wake: Spacebar.
   Circuit:
   * Arduino Leonardo or Micro
   * wire to connect D2 to ground.
*/

#define OSX 0
#define WINDOWS 1
#define UBUNTU 2

#include "Keyboard.h"

// change this to match your platform:
int platform = WINDOWS;

void setup() {
   // make pin 2 an input and turn on the
   // pullup resistor so it goes high unless
   // connected to ground:
   
   pinMode(2, INPUT_PULLUP);
   Keyboard.begin();
}

void loop() {
   while (digitalRead(2) == HIGH) {
      // do nothing until pin 2 goes low
      delay(500);
   }
   
   delay(1000);
   
   switch (platform) {
      case OSX:
      Keyboard.press(KEY_LEFT_GUI);
	  
      // Shift-Q logs out:
      Keyboard.press(KEY_LEFT_SHIFT);
      Keyboard.press('Q');
      delay(100);
	  
      // enter:
      Keyboard.write(KEY_RETURN);
      break;
	  
      case WINDOWS:
      // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
      delay(100);
      Keyboard.releaseAll();
	  
      //ALT-l:
      delay(2000);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press('l');
      Keyboard.releaseAll();
      break;
	  
      case UBUNTU:
      // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
	  
      delay(1000);
      Keyboard.releaseAll();
	  
      // Enter to confirm logout:
      Keyboard.write(KEY_RETURN);
      break;
   }
   
   // do nothing:
   while (true);
}

Keyboard.releaseAll();

   // enter:
      Keyboard.write(KEY_RETURN);
      break;
      case WINDOWS:
	  
   // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
      delay(100);
      Keyboard.releaseAll();
	  
   //ALT-l:
      delay(2000);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press('l');
      Keyboard.releaseAll();
      break;
	  
   case UBUNTU:
      // CTRL-ALT-DEL:
      Keyboard.press(KEY_LEFT_CTRL);
      Keyboard.press(KEY_LEFT_ALT);
      Keyboard.press(KEY_DELETE);
      delay(1000);
      Keyboard.releaseAll();
	  
      // Enter to confirm logout:
      Keyboard.write(KEY_RETURN);
      break;
   }
   
// do nothing:
   while (true);
}

Код для заметки

Перед тем, как загрузить программу на свою плату, убедитесь, что вы назначаете правильную ОС, которую вы используете в данный момент, переменной платформы.

Во время выполнения эскиза нажатие кнопки соединит контакт 2 с землей, и плата отправит последовательность выхода на ПК, подключенный через USB.

Результат

Когда вы подключаете контакт 2 к земле, он выполняет операцию выхода из системы.

Для выхода из системы используются следующие комбинации клавиш:

В Windows , CTRL-ALT-DEL, а затем ALT-l

В Ubuntu , CTRL-ALT-DEL и ENTER

На OSX , CMD-SHIFT-q