Arduino:Примеры/ShellCommands
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Shell-команды[1]
Этот пример демонстрирует запуск shell-команд Linux на Arduino Yun.
Он запускает на процессоре Linux скрипт wifiCheck (расположен по пути /usr/bin/pretty-wifi-info.lua), а затем при помощи команды grep извлекает информацию об уровне сигнала.
Кроме того, на процессоре 32U4 скетч использует функцию parseInt() для того, чтобы сосчитать данные об уровне WiFi-сигнала в целочисленную переменную. Далее эти данные при помощи функции analogWrite() передаются на светодиод.
Необходимое оборудование
- Плата Arduino Yun;
- 220-омовый резистор;
- Светодиод;
Цепь
Yun подключена к беспроводной сети. Светодиод через 220-омовый резистор подключен к 9-ому цифровому контакту.
Код
Подключаем к скетчу класс Process.
#include <Process.h>
В секции setup() инициализируем Bridge и начинаем последовательную передачу данных. Перед тем, как заняться оставшейся частью скетча, ждем активации последовательного соединения.
void setup() {
Bridge.begin();
Serial.begin(9600);
while (!Serial);
}
Создаем процесс под названием «p» – для запуска скрипта, проверяющего WiFi-статус, и команды grep.
void loop() {
Process p;
В функции runShellCommand() указываем путь к скрипту, который вы хотите запустить, а также дополнительную команду. В данном случае это «grep Signal» – команда, извлекающая информацию об уровне сигнала WiFi-соединения.
p.runShellCommand("/usr/bin/pretty-wifi-info.lua | grep Signal");
Ждем завершения процесса, чтобы получить весь результат полностью.
while(p.running());
После завершения процесса вписываем функцию parseInt() для поиска целого числа, отвечающего за уровень сигнала – оно должно быть в диапазоне от 0 до 100. Затем при помощи функции map() адаптируем этот результат под диапазон от 0 до 255, чтобы передать это значение на светодиод при помощи функции analogWrite(). Далее выводим информацию об уровне сигнала на Serial Monitor и ждем несколько секунд, чтобы начать снова.
while (p.available()) {
int result = p.parseInt();
int signal = map(result, 0, 100, 0, 255);
analogWrite(9, signal);
Serial.println(result);
}
delay(5000);
}
В результате светодиод должен поменять свою яркость в соответствии с изменением уровня WiFi-сигнала.
/*
Запуск shell-команд при помощи класса Process
Этот скетч демонстрирует, как при помощи Arduino Yun запускать shell-команды Linux.
Он запускает скрипт WifiCheck на Linux-части Yun, а затем использует команду grep,
чтобы извлечь информацию о мощности сигнала.
После этого он использует функцию parseInt(),
чтобы записать данные об уровне сигнала в целочисленную переменную и,
наконец, использует это число, чтобы изменить яркость светодиода при помощи функции analogWrite().
Цепь:
* Светодиод, подключенный к 9-ому цифровому контакту
Создан 12 июня 2013 Кристианом Мэгли (Cristian Maglie),
модифицирован 26 июня 2013 Томом Иго (Tom Igoe).
Этот код не защищен авторским правом.
*/
#include <Process.h>
void setup() {
Bridge.begin(); // инициализируем Bridge
Serial.begin(9600); // инициализируем последовательную передачу данных
// Ждем подключения Serial Monitor:
while(!Serial);
}
void loop() {
Process p;
// Эта команда запускает скрипт WifiStatus (/usr/bin/pretty-wifi-info.lua),
// а затем отсылает результат команде grep,
// которая будет искать строку со словом «Signal:»
p.runShellCommand("/usr/bin/pretty-wifi-info.lua | grep Signal");
// Ничего не делаем, пока процесс не завершится, чтобы получить весь результат полностью:
while(p.running());
// Считываем результат, извлеченный командой grep.
// Он должен выглядеть примерно так: «Signal: xx&»:
while (p.available()) {
int result = p.parseInt(); // ищем целое число
int signal = map(result, 0, 100, 0, 255); // адаптируем диапазон 0-100 под диапазон 0-255
analogWrite(9, signal); // задаем яркость для светодиода, подключенного к 9-ому цифровому контакту
Serial.println(result); // выводим результат на Serial Monitor
}
delay(5000); // ждем 5 секунд до того, как начать снова
}
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino