From cb9686dc33b24d54b395ff2159b5591b9dfb8371 Mon Sep 17 00:00:00 2001 From: Scott Fitzgerald Date: Fri, 8 Nov 2013 18:46:27 +0400 Subject: [PATCH] Updates to a number of Examples removed pachube examples, added xively examples. changes to the Servo examples --- .../examples/TwitterClient/TwitterClient.ino | 136 --------------- .../XivelyClient.ino} | 20 +-- .../XivelyClientString.ino} | 22 +-- .../GSMXivelyClient.ino} | 20 +-- .../GSMXivelyClientString.ino} | 20 +-- .../GsmTwitterClient/GsmTwitterClient.ino | 162 ----------------- libraries/Servo/examples/Knob/Knob.ino | 12 +- libraries/Servo/examples/Sweep/Sweep.ino | 17 +- .../WiFiTwitterClient/WiFiTwitterClient.ino | 163 ------------------ .../WiFiXivelyClient.ino} | 18 +- .../WiFiXivelyClientString.ino} | 18 +- 11 files changed, 78 insertions(+), 530 deletions(-) delete mode 100644 libraries/Ethernet/examples/TwitterClient/TwitterClient.ino rename libraries/Ethernet/examples/{PachubeClient/PachubeClient.ino => XivelyClient/XivelyClient.ino} (90%) rename libraries/Ethernet/examples/{PachubeClientString/PachubeClientString.ino => XivelyClientString/XivelyClientString.ino} (88%) rename libraries/GSM/examples/{GSMPachubeClient/GSMPachubeClient.ino => GSMXivelyClient/GSMXivelyClient.ino} (90%) rename libraries/GSM/examples/{GSMPachubeClientString/GSMPachubeClientString.ino => GSMXivelyClientString/GSMXivelyClientString.ino} (89%) delete mode 100644 libraries/GSM/examples/GsmTwitterClient/GsmTwitterClient.ino delete mode 100644 libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino rename libraries/WiFi/examples/{WiFiPachubeClient/WiFiPachubeClient.ino => WiFiXivelyClient/WiFiXivelyClient.ino} (92%) rename libraries/WiFi/examples/{WiFiPachubeClientString/WiFiPachubeClientString.ino => WiFiXivelyClientString/WiFiXivelyClientString.ino} (91%) diff --git a/libraries/Ethernet/examples/TwitterClient/TwitterClient.ino b/libraries/Ethernet/examples/TwitterClient/TwitterClient.ino deleted file mode 100644 index 9fee1feab..000000000 --- a/libraries/Ethernet/examples/TwitterClient/TwitterClient.ino +++ /dev/null @@ -1,136 +0,0 @@ -/* - Twitter Client with Strings - - This sketch connects to Twitter using an Ethernet shield. It parses the XML - returned, and looks for this is a tweet - - You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield, - either one will work, as long as it's got a Wiznet Ethernet module on board. - - This example uses the DHCP routines in the Ethernet library which is part of the - Arduino core from version 1.0 beta 1 - - This example uses the String library, which is part of the Arduino core from - version 0019. - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 21 May 2011 - modified 9 Apr 2012 - by Tom Igoe - - This code is in the public domain. - - */ -#include -#include - - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network: -byte mac[] = { - 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 }; -IPAddress ip(192,168,1,20); - -// initialize the library instance: -EthernetClient client; - -const unsigned long requestInterval = 60000; // delay between requests - -char serverName[] = "api.twitter.com"; // twitter URL - -boolean requested; // whether you've made a request since connecting -unsigned long lastAttemptTime = 0; // last time you connected to the server, in milliseconds - -String currentLine = ""; // string to hold the text from server -String tweet = ""; // string to hold the tweet -boolean readingTweet = false; // if you're currently reading the tweet - -void setup() { - // reserve space for the strings: - currentLine.reserve(256); - tweet.reserve(150); - - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - - // attempt a DHCP connection: - Serial.println("Attempting to get an IP address using DHCP:"); - if (!Ethernet.begin(mac)) { - // if DHCP fails, start with a hard-coded address: - Serial.println("failed to get an IP address using DHCP, trying manually"); - Ethernet.begin(mac, ip); - } - Serial.print("My address:"); - Serial.println(Ethernet.localIP()); - // connect to Twitter: - connectToServer(); -} - - - -void loop() -{ - if (client.connected()) { - if (client.available()) { - // read incoming bytes: - char inChar = client.read(); - - // add incoming byte to end of line: - currentLine += inChar; - - // if you get a newline, clear the line: - if (inChar == '\n') { - currentLine = ""; - } - // if the current line ends with , it will - // be followed by the tweet: - if ( currentLine.endsWith("")) { - // tweet is beginning. Clear the tweet string: - readingTweet = true; - tweet = ""; - } - // if you're currently reading the bytes of a tweet, - // add them to the tweet String: - if (readingTweet) { - if (inChar != '<') { - tweet += inChar; - } - else { - // if you got a "<" character, - // you've reached the end of the tweet: - readingTweet = false; - Serial.println(tweet); - // close the connection to the server: - client.stop(); - } - } - } - } - else if (millis() - lastAttemptTime > requestInterval) { - // if you're not connected, and two minutes have passed since - // your last connection, then attempt to connect again: - connectToServer(); - } -} - -void connectToServer() { - // attempt to connect, and wait a millisecond: - Serial.println("connecting to server..."); - if (client.connect(serverName, 80)) { - Serial.println("making HTTP request..."); - // make HTTP GET request to twitter: - client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino&count=1 HTTP/1.1"); - client.println("HOST: api.twitter.com"); - client.println("Connection: close"); - client.println(); - } - // note the time of this connect attempt: - lastAttemptTime = millis(); -} - diff --git a/libraries/Ethernet/examples/PachubeClient/PachubeClient.ino b/libraries/Ethernet/examples/XivelyClient/XivelyClient.ino similarity index 90% rename from libraries/Ethernet/examples/PachubeClient/PachubeClient.ino rename to libraries/Ethernet/examples/XivelyClient/XivelyClient.ino index dfd2d4010..23ae72fec 100644 --- a/libraries/Ethernet/examples/PachubeClient/PachubeClient.ino +++ b/libraries/Ethernet/examples/XivelyClient/XivelyClient.ino @@ -1,12 +1,12 @@ /* - Pachube sensor client + Xively sensor client - This sketch connects an analog sensor to Pachube (http://www.pachube.com) + This sketch connects an analog sensor to Xively (http://www.xively.com) using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield, either one will work, as long as it's got a Wiznet Ethernet module on board. - This example has been updated to use version 2.0 of the Pachube.com API. + This example has been updated to use version 2.0 of the Xively.com API. To make it work, create a feed with a datastream, and give it the ID sensor1. Or change the code below to match your feed. @@ -19,7 +19,7 @@ modified 9 Apr 2012 by Tom Igoe with input from Usman Haque and Joe Saavedra -http://arduino.cc/en/Tutorial/PachubeClient +http://arduino.cc/en/Tutorial/XivelyClient This code is in the public domain. */ @@ -27,7 +27,7 @@ http://arduino.cc/en/Tutorial/PachubeClient #include #include -#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here +#define APIKEY "YOUR API KEY GOES HERE" // replace your xively api key here #define FEEDID 00000 // replace your feed ID #define USERAGENT "My Project" // user agent is the project name @@ -45,12 +45,12 @@ EthernetClient client; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: -IPAddress server(216,52,233,122); // numeric IP for api.pachube.com -//char server[] = "api.pachube.com"; // name address for pachube API +IPAddress server(216,52,233,122); // numeric IP for api.xively.com +//char server[] = "api.xively.com"; // name address for xively API unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 10*1000; //delay between updates to Pachube.com +const unsigned long postingInterval = 10*1000; //delay between updates to Xively.com void setup() { // Open serial communications and wait for port to open: @@ -107,8 +107,8 @@ void sendData(int thisData) { client.print("PUT /v2/feeds/"); client.print(FEEDID); client.println(".csv HTTP/1.1"); - client.println("Host: api.pachube.com"); - client.print("X-PachubeApiKey: "); + client.println("Host: api.xively.com"); + client.print("X-XivelyApiKey: "); client.println(APIKEY); client.print("User-Agent: "); client.println(USERAGENT); diff --git a/libraries/Ethernet/examples/PachubeClientString/PachubeClientString.ino b/libraries/Ethernet/examples/XivelyClientString/XivelyClientString.ino similarity index 88% rename from libraries/Ethernet/examples/PachubeClientString/PachubeClientString.ino rename to libraries/Ethernet/examples/XivelyClientString/XivelyClientString.ino index 26472d12f..4df79b706 100644 --- a/libraries/Ethernet/examples/PachubeClientString/PachubeClientString.ino +++ b/libraries/Ethernet/examples/XivelyClientString/XivelyClientString.ino @@ -1,12 +1,12 @@ /* - Pachube sensor client with Strings + Xively sensor client with Strings - This sketch connects an analog sensor to Pachube (http://www.pachube.com) + This sketch connects an analog sensor to Xively (http://www.xively.com) using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or the Adafruit Ethernet shield, either one will work, as long as it's got a Wiznet Ethernet module on board. - This example has been updated to use version 2.0 of the pachube.com API. + This example has been updated to use version 2.0 of the xively.com API. To make it work, create a feed with two datastreams, and give them the IDs sensor1 and sensor2. Or change the code below to match your feed. @@ -23,7 +23,7 @@ modified 8 September 2012 by Scott Fitzgerald - http://arduino.cc/en/Tutorial/PachubeClientString + http://arduino.cc/en/Tutorial/XivelyClientString This code is in the public domain. */ @@ -32,7 +32,7 @@ #include -#define APIKEY "YOUR API KEY GOES HERE" // replace your Pachube api key here +#define APIKEY "YOUR API KEY GOES HERE" // replace your Xively api key here #define FEEDID 00000 // replace your feed ID #define USERAGENT "My Project" // user agent is the project name @@ -51,12 +51,12 @@ EthernetClient client; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: -IPAddress server(216,52,233,121); // numeric IP for api.pachube.com -//char server[] = "api.pachube.com"; // name address for pachube API +IPAddress server(216,52,233,121); // numeric IP for api.xively.com +//char server[] = "api.xively.com"; // name address for xively API unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 10*1000; //delay between updates to pachube.com +const unsigned long postingInterval = 10*1000; //delay between updates to xively.com void setup() { // Open serial communications and wait for port to open: @@ -85,7 +85,7 @@ void loop() { dataString += sensorReading; // you can append multiple readings to this String if your - // pachube feed is set up to handle multiple values: + // xively feed is set up to handle multiple values: int otherSensorReading = analogRead(A1); dataString += "\nsensor2,"; dataString += otherSensorReading; @@ -125,8 +125,8 @@ void sendData(String thisData) { client.print("PUT /v2/feeds/"); client.print(FEEDID); client.println(".csv HTTP/1.1"); - client.println("Host: api.pachube.com"); - client.print("X-pachubeApiKey: "); + client.println("Host: api.xively.com"); + client.print("X-xivelyApiKey: "); client.println(APIKEY); client.print("User-Agent: "); client.println(USERAGENT); diff --git a/libraries/GSM/examples/GSMPachubeClient/GSMPachubeClient.ino b/libraries/GSM/examples/GSMXivelyClient/GSMXivelyClient.ino similarity index 90% rename from libraries/GSM/examples/GSMPachubeClient/GSMPachubeClient.ino rename to libraries/GSM/examples/GSMXivelyClient/GSMXivelyClient.ino index 2885c9bba..4253c814b 100644 --- a/libraries/GSM/examples/GSMPachubeClient/GSMPachubeClient.ino +++ b/libraries/GSM/examples/GSMXivelyClient/GSMXivelyClient.ino @@ -1,10 +1,10 @@ /* - GSM Pachube client + GSM Xively client - This sketch connects an analog sensor to Pachube (http://www.pachube.com) + This sketch connects an analog sensor to Xively (http://www.xively.com) using a Telefonica GSM/GPRS shield. - This example has been updated to use version 2.0 of the Pachube.com API. + This example has been updated to use version 2.0 of the Xively.com API. To make it work, create a feed with a datastream, and give it the ID sensor1. Or change the code below to match your feed. @@ -19,15 +19,15 @@ This code is in the public domain. - http://arduino.cc/en/Tutorial/GSMExamplesPachubeClient + http://arduino.cc/en/Tutorial/GSMExamplesXivelyClient */ // libraries #include -// Pachube Client data -#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here +// Xively Client data +#define APIKEY "YOUR API KEY GOES HERE" // replace your xively api key here #define FEEDID 00000 // replace your feed ID #define USERAGENT "My Project" // user agent is the project name @@ -46,12 +46,12 @@ GSM gsmAccess; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: -// IPAddress server(216,52,233,121); // numeric IP for api.pachube.com -char server[] = "api.pachube.com"; // name address for pachube API +// IPAddress server(216,52,233,121); // numeric IP for api.xively.com +char server[] = "api.xively.com"; // name address for xively API unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 10*1000; //delay between updates to Pachube.com +const unsigned long postingInterval = 10*1000; //delay between updates to Xively.com void setup() { @@ -126,7 +126,7 @@ void sendData(int thisData) client.print("PUT /v2/feeds/"); client.print(FEEDID); client.println(".csv HTTP/1.1"); - client.println("Host: api.pachube.com"); + client.println("Host: api.xively.com"); client.print("X-ApiKey: "); client.println(APIKEY); client.print("User-Agent: "); diff --git a/libraries/GSM/examples/GSMPachubeClientString/GSMPachubeClientString.ino b/libraries/GSM/examples/GSMXivelyClientString/GSMXivelyClientString.ino similarity index 89% rename from libraries/GSM/examples/GSMPachubeClientString/GSMPachubeClientString.ino rename to libraries/GSM/examples/GSMXivelyClientString/GSMXivelyClientString.ino index 9f6ea531d..d07b3ffdf 100644 --- a/libraries/GSM/examples/GSMPachubeClientString/GSMPachubeClientString.ino +++ b/libraries/GSM/examples/GSMXivelyClientString/GSMXivelyClientString.ino @@ -1,10 +1,10 @@ /* - Pachube client with Strings + Xively client with Strings - This sketch connects two analog sensors to Pachube (http://www.pachube.com) + This sketch connects two analog sensors to Xively (http://www.xively.com) through a Telefonica GSM/GPRS shield. - This example has been updated to use version 2.0 of the Pachube.com API. + This example has been updated to use version 2.0 of the Xively.com API. To make it work, create a feed with two datastreams, and give them the IDs sensor1 and sensor2. Or change the code below to match your feed. @@ -27,8 +27,8 @@ // Include the GSM library #include -// Pachube login information -#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here +// Xively login information +#define APIKEY "YOUR API KEY GOES HERE" // replace your xively api key here #define FEEDID 00000 // replace your feed ID #define USERAGENT "My Project" // user agent is the project name @@ -47,12 +47,12 @@ GSM gsmAccess; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: -// IPAddress server(216,52,233,121); // numeric IP for api.pachube.com -char server[] = "api.pachube.com"; // name address for Pachube API +// IPAddress server(216,52,233,121); // numeric IP for api.xively.com +char server[] = "api.xively.com"; // name address for Xively API unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 10*1000; // delay between updates to Pachube.com +const unsigned long postingInterval = 10*1000; // delay between updates to Xively.com void setup() { @@ -92,7 +92,7 @@ void loop() dataString += sensorReading; // you can append multiple readings to this String to - // send the pachube feed multiple values + // send the xively feed multiple values int otherSensorReading = analogRead(A1); dataString += "\nsensor2,"; dataString += otherSensorReading; @@ -138,7 +138,7 @@ void sendData(String thisData) client.print("PUT /v2/feeds/"); client.print(FEEDID); client.println(".csv HTTP/1.1"); - client.println("Host: api.pachube.com"); + client.println("Host: api.xively.com"); client.print("X-ApiKey: "); client.println(APIKEY); client.print("User-Agent: "); diff --git a/libraries/GSM/examples/GsmTwitterClient/GsmTwitterClient.ino b/libraries/GSM/examples/GsmTwitterClient/GsmTwitterClient.ino deleted file mode 100644 index 30321417e..000000000 --- a/libraries/GSM/examples/GsmTwitterClient/GsmTwitterClient.ino +++ /dev/null @@ -1,162 +0,0 @@ -/* - GSM Twitter Client with Strings - - This sketch connects to Twitter using an Arduino GSM shield. - It parses the XML returned, and looks for the string this is a tweet - - This example uses the String library, which is part of the Arduino core from - version 0019. - - Circuit: - * GSM shield attached to an Arduino - * SIM card with a data plan - - created 8 Mar 2012 - by Tom Igoe - - http://arduino.cc/en/Tutorial/GSMExamplesTwitterClient - - This code is in the public domain. - - */ - -// libraries -#include - -// PIN Number -#define PINNUMBER "" - -// APN data -#define GPRS_APN "APN" // replace your GPRS APN -#define GPRS_LOGIN "LOGIN" // replace with your GPRS login -#define GPRS_PASSWORD "PASSWORD" // replace with your GPRS password - -// initialize the library instance -GSMClient client; -GPRS gprs; -GSM gsmAccess; - -const unsigned long requestInterval = 30*1000; // delay between requests: 30 seconds - -// API Twitter URL -char server[] = "api.twitter.com"; - -boolean requested; // whether you've made a request since connecting -unsigned long lastAttemptTime = 0; // last time you connected to the server, in milliseconds - -String currentLine = ""; // string to hold the text from server -String tweet = ""; // string to hold the tweet -boolean readingTweet = false; // if you're currently reading the tweet - -void setup() -{ - // reserve space for the strings: - currentLine.reserve(256); - tweet.reserve(150); - - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - // connection state - boolean notConnected = true; - - // After starting the modem with GSM.begin() - // attach the shield to the GPRS network with the APN, login and password - while(notConnected) - { - if((gsmAccess.begin(PINNUMBER)==GSM_READY) & - (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD)==GPRS_READY)) - notConnected = false; - else - { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("Connected to GPRS network"); - - Serial.println("connecting..."); - connectToServer(); -} - - - -void loop() -{ - char c; - if (client.connected()) - { - if (client.available()) - { - // read incoming bytes: - char inChar = client.read(); - - // add incoming byte to end of line: - currentLine += inChar; - - // if you get a newline, clear the line: - if (inChar == '\n') - { - currentLine = ""; - } - - // if the current line ends with , it will - // be followed by the tweet: - if (currentLine.endsWith("")) - { - // tweet is beginning. Clear the tweet string: - readingTweet = true; - tweet = ""; - } - - // if you're currently reading the bytes of a tweet, - // add them to the tweet String: - if (readingTweet) - { - if (inChar != '<') - { - tweet += inChar; - } - else - { - // if you got a "<" character, - // you've reached the end of the tweet: - readingTweet = false; - Serial.println(tweet); - - // close the connection to the server: - client.stop(); - } - } - } - } - else if (millis() - lastAttemptTime > requestInterval) - { - // if you're not connected, and two minutes have passed since - // your last connection, then attempt to connect again: - connectToServer(); - } -} - -/* - Connect to API Twitter server and do a request for timeline -*/ -void connectToServer() -{ - // attempt to connect, and wait a millisecond: - Serial.println("connecting to server..."); - if (client.connect(server, 80)) - { - Serial.println("making HTTP request..."); - // make HTTP GET request to twitter: - client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino&count=1 HTTP/1.1"); - client.println("HOST: api.twitter.com"); - client.println(); - } - // note the time of this connect attempt: - lastAttemptTime = millis(); -} diff --git a/libraries/Servo/examples/Knob/Knob.ino b/libraries/Servo/examples/Knob/Knob.ino index 886e107f8..028d06772 100644 --- a/libraries/Servo/examples/Knob/Knob.ino +++ b/libraries/Servo/examples/Knob/Knob.ino @@ -1,5 +1,11 @@ -// Controlling a servo position using a potentiometer (variable resistor) -// by Michal Rinott +/* + Controlling a servo position using a potentiometer (variable resistor) + by Michal Rinott + + modified on 8 Nov 2013 + by Scott Fitzgerald + http://arduino.cc/en/Tutorial/Knob +*/ #include @@ -16,7 +22,7 @@ void setup() void loop() { val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023) - val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180) + val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo (value between 0 and 180) myservo.write(val); // sets the servo position according to the scaled value delay(15); // waits for the servo to get there } diff --git a/libraries/Servo/examples/Sweep/Sweep.ino b/libraries/Servo/examples/Sweep/Sweep.ino index fb326e7e7..0c2e8edca 100644 --- a/libraries/Servo/examples/Sweep/Sweep.ino +++ b/libraries/Servo/examples/Sweep/Sweep.ino @@ -1,12 +1,16 @@ -// Sweep -// by BARRAGAN -// This example code is in the public domain. +/* Sweep + by BARRAGAN + This example code is in the public domain. + modified 8 Nov 2013 + by Scott Fitzgerald + http://arduino.cc/en/Tutorial/Sweep +*/ #include Servo myservo; // create servo object to control a servo - // a maximum of eight servo objects can be created + // twelve servo objects can be created on most boards int pos = 0; // variable to store the servo position @@ -15,15 +19,14 @@ void setup() myservo.attach(9); // attaches the servo on pin 9 to the servo object } - void loop() { - for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees + for(pos = 0; pos <= 180; pos += 1) // goes from 0 degrees to 180 degrees { // in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position } - for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees + for(pos = 180; pos>=0; pos-=1) // goes from 180 degrees to 0 degrees { myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position diff --git a/libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino b/libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino deleted file mode 100644 index d500cfb9b..000000000 --- a/libraries/WiFi/examples/WiFiTwitterClient/WiFiTwitterClient.ino +++ /dev/null @@ -1,163 +0,0 @@ -/* - Wifi Twitter Client with Strings - - This sketch connects to Twitter using using an Arduino WiFi shield. - It parses the XML returned, and looks for this is a tweet - - This example is written for a network using WPA encryption. For - WEP or WPA, change the Wifi.begin() call accordingly. - - This example uses the String library, which is part of the Arduino core from - version 0019. - - Circuit: - * WiFi shield attached to pins 10, 11, 12, 13 - - created 23 apr 2012 - modified 31 May 2012 - by Tom Igoe - - This code is in the public domain. - - */ -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "password"; // your network password (use for WPA, or use as key for WEP) -int keyIndex = 0; // your network key Index number (needed only for WEP) - -int status = WL_IDLE_STATUS; // status of the wifi connection - -// initialize the library instance: -WiFiClient client; - -const unsigned long requestInterval = 30*1000; // delay between requests; 30 seconds - -// if you don't want to use DNS (and reduce your sketch size) -// use the numeric IP instead of the name for the server: -//IPAddress server(199,59,149,200); // numeric IP for api.twitter.com -char server[] = "api.twitter.com"; // name address for twitter API - -boolean requested; // whether you've made a request since connecting -unsigned long lastAttemptTime = 0; // last time you connected to the server, in milliseconds - -String currentLine = ""; // string to hold the text from server -String tweet = ""; // string to hold the tweet -boolean readingTweet = false; // if you're currently reading the tweet - -void setup() { - // reserve space for the strings: - currentLine.reserve(256); - tweet.reserve(150); - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while(true); - } - - // attempt to connect to Wifi network: - while ( status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - // you're connected now, so print out the status: - printWifiStatus(); - connectToServer(); -} - -void loop() -{ - if (client.connected()) { - if (client.available()) { - // read incoming bytes: - char inChar = client.read(); - - // add incoming byte to end of line: - currentLine += inChar; - - // if you get a newline, clear the line: - if (inChar == '\n') { - currentLine = ""; - } - // if the current line ends with , it will - // be followed by the tweet: - if ( currentLine.endsWith("")) { - // tweet is beginning. Clear the tweet string: - readingTweet = true; - tweet = ""; - // break out of the loop so this character isn't added to the tweet: - return; - } - // if you're currently reading the bytes of a tweet, - // add them to the tweet String: - if (readingTweet) { - if (inChar != '<') { - tweet += inChar; - } - else { - // if you got a "<" character, - // you've reached the end of the tweet: - readingTweet = false; - Serial.println(tweet); - // close the connection to the server: - client.stop(); - } - } - } - } - else if (millis() - lastAttemptTime > requestInterval) { - // if you're not connected, and two minutes have passed since - // your last connection, then attempt to connect again: - connectToServer(); - } -} - -void connectToServer() { - // attempt to connect, and wait a millisecond: - Serial.println("connecting to server..."); - if (client.connect(server, 80)) { - Serial.println("making HTTP request..."); - // make HTTP GET request to twitter: - client.println("GET /1/statuses/user_timeline.xml?screen_name=arduino HTTP/1.1"); - client.println("Host: api.twitter.com"); - client.println("Connection: close"); - client.println(); - } - // note the time of this connect attempt: - lastAttemptTime = millis(); -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - - - - diff --git a/libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino b/libraries/WiFi/examples/WiFiXivelyClient/WiFiXivelyClient.ino similarity index 92% rename from libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino rename to libraries/WiFi/examples/WiFiXivelyClient/WiFiXivelyClient.ino index f8ffc0745..b6ab82f18 100644 --- a/libraries/WiFi/examples/WiFiPachubeClient/WiFiPachubeClient.ino +++ b/libraries/WiFi/examples/WiFiXivelyClient/WiFiXivelyClient.ino @@ -1,13 +1,13 @@ /* - Wifi Pachube sensor client + Wifi Xively sensor client - This sketch connects an analog sensor to Pachube (http://www.pachube.com) + This sketch connects an analog sensor to Xively (http://www.xively.com) using an Arduino Wifi shield. This example is written for a network using WPA encryption. For WEP or WPA, change the Wifi.begin() call accordingly. - This example has been updated to use version 2.0 of the Pachube API. + This example has been updated to use version 2.0 of the Xively API. To make it work, create a feed with a datastream, and give it the ID sensor1. Or change the code below to match your feed. @@ -18,7 +18,7 @@ created 13 Mar 2012 modified 31 May 2012 by Tom Igoe - modified 8 Sept 2012 + modified 8 Nov 2013 by Scott Fitzgerald This code is in the public domain. @@ -27,7 +27,7 @@ #include #include -#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here +#define APIKEY "YOUR API KEY GOES HERE" // replace your xively api key here #define FEEDID 00000 // replace your feed ID #define USERAGENT "My Arduino Project" // user agent is the project name @@ -40,12 +40,12 @@ int status = WL_IDLE_STATUS; WiFiClient client; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: -IPAddress server(216,52,233,121); // numeric IP for api.pachube.com -//char server[] = "api.pachube.com"; // name address for pachube API +IPAddress server(216,52,233,121); // numeric IP for api.xively.com +//char server[] = "api.xively.com"; // name address for xively API unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 10*1000; //delay between updates to pachube.com +const unsigned long postingInterval = 10*1000; //delay between updates to xively.com void setup() { //Initialize serial and wait for port to open: @@ -115,7 +115,7 @@ void sendData(int thisData) { client.print("PUT /v2/feeds/"); client.print(FEEDID); client.println(".csv HTTP/1.1"); - client.println("Host: api.pachube.com"); + client.println("Host: api.xively.com"); client.print("X-ApiKey: "); client.println(APIKEY); client.print("User-Agent: "); diff --git a/libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino b/libraries/WiFi/examples/WiFiXivelyClientString/WiFiXivelyClientString.ino similarity index 91% rename from libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino rename to libraries/WiFi/examples/WiFiXivelyClientString/WiFiXivelyClientString.ino index 243fe8383..c2ee75f3d 100644 --- a/libraries/WiFi/examples/WiFiPachubeClientString/WiFiPachubeClientString.ino +++ b/libraries/WiFi/examples/WiFiXivelyClientString/WiFiXivelyClientString.ino @@ -1,13 +1,13 @@ /* - Wifi Pachube sensor client with Strings + Wifi Xively sensor client with Strings - This sketch connects an analog sensor to Pachube (http://www.pachube.com) + This sketch connects an analog sensor to Xively (http://www.xively.com) using a Arduino Wifi shield. This example is written for a network using WPA encryption. For WEP or WPA, change the Wifi.begin() call accordingly. - This example has been updated to use version 2.0 of the pachube.com API. + This example has been updated to use version 2.0 of the xively.com API. To make it work, create a feed with a datastream, and give it the ID sensor1. Or change the code below to match your feed. @@ -31,7 +31,7 @@ #include #include -#define APIKEY "YOUR API KEY GOES HERE" // replace your pachube api key here +#define APIKEY "YOUR API KEY GOES HERE" // replace your xively api key here #define FEEDID 00000 // replace your feed ID #define USERAGENT "My Arduino Project" // user agent is the project name @@ -45,12 +45,12 @@ WiFiClient client; // if you don't want to use DNS (and reduce your sketch size) // use the numeric IP instead of the name for the server: -//IPAddress server(216,52,233,121); // numeric IP for api.pachube.com -char server[] = "api.pachube.com"; // name address for pachube API +//IPAddress server(216,52,233,121); // numeric IP for api.xively.com +char server[] = "api.xively.com"; // name address for xively API unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds boolean lastConnected = false; // state of the connection last time through the main loop -const unsigned long postingInterval = 10*1000; //delay between updates to pachube.com +const unsigned long postingInterval = 10*1000; //delay between updates to xively.com void setup() { //Initialize serial and wait for port to open: @@ -89,7 +89,7 @@ void loop() { dataString += sensorReading; // you can append multiple readings to this String if your - // pachube feed is set up to handle multiple values: + // xively feed is set up to handle multiple values: int otherSensorReading = analogRead(A1); dataString += "\nsensor2,"; dataString += otherSensorReading; @@ -129,7 +129,7 @@ void sendData(String thisData) { client.print("PUT /v2/feeds/"); client.print(FEEDID); client.println(".csv HTTP/1.1"); - client.println("Host: api.pachube.com"); + client.println("Host: api.xively.com"); client.print("X-ApiKey: "); client.println(APIKEY); client.print("User-Agent: ");