Изучаем Arduino: инструметы и методы технического волшебства - [37]

Шрифт
Интервал

У становите курсор на строке в текстовом документе и нажмите кнопку включения режима записи. Вы должны увидеть, что документ начнет заполняться данными.

Закройте ладонью датчик освещенности или возьмите в руку датчик температуры, значения должны измениться. Затем нажмите кнопку еще раз, чтобы остановить отправку данных. После сохранения файла его можно импортировать в электроую таблицу, чтобы построить график. Как это сделать, показано в видеоуроке к главе.

- 147 -

ПРИМЕЧАНИЕ

Посмотрите демонстрационный видеоклип со страницы

http://www.exploringarduino.com/content/ch6.

6.8.2. Отправка команд для управления компьютером

Плата Leonardo пригодна и для эмуляции нажатия комбинаций клавиш. На компьютерах с операционной системой Windows нажатие комбинации клавиш + блокирует экран компьютера (в Linux существует комбинация ++ ). Можно, например, по сигналу от датчика освещенности заблокировать компьютер, когда выключается свет. В OS Х для блокировки компьютера предусмотрены комбинации ++ или ++ +, которые Leonardo не может сформировать, т. к. невозможно смоделировать нажатие клавиш и . Рассмотрим, как заблокировать компьютер с Windows. Подойдет схема, показанная на рис. 6.16, хотя будет использоваться только датчик.

Запустите предыдущую программу при нескольких различных уровнях освещенности и посмотрите на изменение показаний датчика. С учетом полученных данных нужно выбрать пороговое значение освещенности, ниже которого компьютер следует заблокировать (в моей комнате при выключенном свете показания датчика равны 300, а при включенном - 700, я выбрал пороговое значение 500). Когда значение от датчика станет ниже порогового, на компьютер будет отправлена команда блокировки. Возможно, для вашего помещения потребуется другое значение порога.

Загрузите код листинга 6.10 на плату Arduino. Подберите порог срабатывания путем анализа данных при различной освещенности. Если порог окажется неправильным, то компьютер может быть заблокированным, как только вы запустите его!

Листинг 6.10. Блокировка компьютера по сигналу от датчика освещенности - lock_computer.ino

// Блокировка компьютера при выключении света

const int LIGHT=1;//Датчик освещенности на контакт 1

//Значение с датчика освещенности для блокировки компьютера

const int THRESHOLD =500; //


void setup()

{

Keyboard.begin();

}

void loop()

{

int brightness = analogRead(LIGHT); // Чтение данных датчика

- 148 -


if (brightness < THRESHOLD)

{

Keyboard.press(KEY_LEFT_GUI);

Keyboard.press('1');

delay (100);

Keyboard.releaseAll();

}

}

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

ПРИМЕЧАНИЕ

Вы можете посмотреть демонстрационный видеоклип, расположенный на странице http://www.exploringarduino.com/content/ch6.

В этом примере реализованы две новые функции для эмулятора клавиатуры:

Keyboard.press() И Keyboard.releaseAll(). Запуск Keyboard.press() эквивалентен удержанию клавиши нажатой. Если вы хотите сэмулировать нажатие клавиш и , запустите Keyboard.press() для каждой клавиши. Выдержав паузу, вызовите функцию Keyboard. releaseAll(), чтобы завершить нажатие комбинации клавиш. Список специальных клавиш можно найти на сайте http://arduino.cc/en/Reference/KeyboardModifiers.

6.8.3. Эмуляция мыши

С помощью двухкоординатного джойстика и нескольких кнопок можно превратить плату Arduino Leonardo в мышь. Джойстик будет перемещать курсор мыши, а кнопки будут выполнять функции левой, средней и правой кнопок мыши. Как и для клавиатуры, в языке Arduino есть много встроенных функций, позволяющих реализовать функциональность мыши.

Сначала соберите схему с джойстиком и кнопками, как показано на рис. 6.17. Не забывайте, что кнопки нужно снабдить подтягивающими резисторами. Джойстик подключается к аналоговым выводам 0 и 1. Джойстики содержат два потенциометра, присоединенные к рукоятке. При перемещении рукоятки джойстика в направлении х меняется сопротивление одного из потенциометров, в направлении у другого.

На рис. 6.17 изображен джойстик SparkFun, но подойдет любой (в демонстрациоом видеоклипе показан джойстик Parallax). В зависимости от типа джойстика, возможно, потребуется скорректировать диапазон значений функцией map() или поменять х и у в коде программы.

Собрав схему, можно загрузить программу на плату Leonardo. Скопируйте и запустите код листинга 6.1 1 и поуправляйте курсором с помощью джойстика и кнопок; курсор на экране компьютера должен реагировать соответствующим образом.

- 149 -

Рис. 6.17. Схема мыши на основе джойстика и платы Leonardo

Листинг 6.11. Программа управления курсором мыши для Leonardo - mouse.ino

// Создаем мышь !

const int LEFT_BUTTON=4;//Вход для левой кнопки мыши

const int MIDDLE_BUTTON=3;//Вход ДЛЯ средней кнопки мыши

const int RIGHT_BUTTON =2;//Вход для правой кнопки мыши

const int X_AXIS=0;//Аналоговый вход для оси х джойстика

const int Y_AXIS=1;//Аналоговый вход для оси у джойстика


void setup()

{


- 150 -

Mouse.begin();

}


void loop()

{

int xVal=readJoystick(X_AXIS);//Получить отклонение джойстика по оси х