1/* 2 Running shell commands using Process class. 3 4 This sketch demonstrate how to run linux shell commands 5 using an Arduino Yún. It runs the wifiCheck script on the Linux side 6 of the Yún, then uses grep to get just the signal strength line. 7 Then it uses parseInt() to read the wifi signal strength as an integer, 8 and finally uses that number to fade an LED using analogWrite(). 9 10 The circuit: 11 * Arduino Yún with LED connected to pin 9 12 13 created 12 Jun 2013 14 by Cristian Maglie 15 modified 25 June 2013 16 by Tom Igoe 17 18 This example code is in the public domain. 19 20 http://www.arduino.cc/en/Tutorial/ShellCommands 21 22 */ 23 24#include <Process.h> 25 26void setup() { 27 Bridge.begin(); // Initialize the Bridge 28 SerialUSB.begin(9600); // Initialize the Serial 29 30 // Wait until a Serial Monitor is connected. 31 while (!SerialUSB); 32} 33 34void loop() { 35 Process p; 36 // This command line runs the WifiStatus script, (/usr/bin/pretty-wifi-info.lua), then 37 // sends the result to the grep command to look for a line containing the word 38 // "Signal:" the result is passed to this sketch: 39 p.runShellCommand("/usr/bin/pretty-wifi-info.lua | grep Signal"); 40 41 // do nothing until the process finishes, so you get the whole output: 42 while (p.running()); 43 44 // Read command output. runShellCommand() should have passed "Signal: xx&": 45 while (p.available()) { 46 int result = p.parseInt(); // look for an integer 47 int signal = map(result, 0, 100, 0, 255); // map result from 0-100 range to 0-255 48 analogWrite(9, signal); // set the brightness of LED on pin 9 49 SerialUSB.println(result); // print the number as well 50 } 51 delay(5000); // wait 5 seconds before you do it again 52} 53 54 55