Mark Easley
Published

Connect the TI LaunchPad on Adafruit IO and IFTTT

In this tutorial we will connect the MSP432 and CC3100 Wi-Fi to the Adafruit IO service and then connect that to IFTTT

BeginnerProtip1 hour404
Connect the TI LaunchPad on Adafruit IO and IFTTT

Things used in this project

Story

Read more

Code

CustomEduBPTest.ino

Arduino
Test your BoosterPack with this code
/*  
CustomEduBPTest for MSP432 
This example is based off the EduBP_mkii_Production_Test code  
for Energia IDE. Checks various functions of the BoosterPack. 
Hardware Required:  
* LaunchPad  
* Educational BoosterPack MKII 
This example code is in the public domain.  
*/ 
#include <itoa.h> 
#include <Wire.h> 
#define USE_USCI_B1  
//#define USING_MSP430F5529_LAUNCHPAD 
//#define USING_TIVA_C_LAUNCHPAD 
// Core library for code-sense 
#include "Energia.h" 
// Include application, user and local libraries 
#include "SPI.h" 
//#include "OPT3001.h" 
// Screen selection 
#define HX8353E // HX8353E K35 HI32 W32 ILI9225B HY28A ST7735 PicasoSPE PicasoSGC 
#include "Screen_HX8353E.h" 
Screen_HX8353E myScreen; 
// Define variables and constants 
//uint32_t chrono; 
/// 
/// @brief      protocolSquare 
/// @details    measure time to draw a square with side=pixels 
/// @param      pixels number of pixels of one side 
/// 
void protocolSquare(uint16_t pixels) 
{ 
   if ((pixels < myScreen.screenSizeX()) && (pixels < myScreen.screenSizeY()) && (pixels > 48)) { 
       myScreen.setOrientation(0); 
       myScreen.setPenSolid(false); 
       uint16_t x100 = (myScreen.screenSizeX()-pixels)/2; 
       uint16_t y100 = (myScreen.screenSizeY()-pixels)/2; 
       myScreen.dRectangle(x100-1, y100-1, pixels+2, pixels+2, whiteColour); 
       myScreen.setPenSolid(true); 
       uint32_t chrono = millis(); 
       myScreen.dRectangle(x100, y100, pixels, pixels, grayColour); 
       chrono = millis() - chrono; 
       myScreen.setFontSize(myScreen.fontMax()); 
       myScreen.gText(x100 +2, y100 +2, "(" + i32toa(pixels) + ")"); 
       myScreen.gText(x100 +2, y100 +pixels -myScreen.fontSizeY() -2, i32toa(chrono) + " ms"); 
       Serial.print("Square("); 
       Serial.print(pixels, DEC); 
       Serial.print(")\t"); 
       Serial.println(chrono, DEC); 
   } 
} 
/// 
/// @brief      protocolCopyPaste 
/// @details    measure time to copy-paste a 64x64 area 
/// @param      orientation default=1 
/// 
void protocolCopyPaste(uint8_t orientation = 1) 
{ 
   uint32_t chrono; 
   myScreen.clear(); 
   myScreen.setOrientation(orientation); 
   // Image 
   chrono = millis(); 
   for (uint8_t i=0; i<64; i++) { 
       for (uint8_t j=0; j<64; j++) { 
           myScreen.point(i, j, myScreen.calculateColour(4*i, 4*j, 254-2*i-2*j)); 
       } 
   } 
   myScreen.setPenSolid(false); 
   myScreen.rectangle(1, 1, 62, 62, blackColour); 
   myScreen.line(0,   0, 63, 63, whiteColour); 
   myScreen.line(32,  0, 63, 63, whiteColour); 
   myScreen.line(0,  32, 63, 63, whiteColour); 
   myScreen.dRectangle(0, 0, 64, 64, whiteColour); 
   chrono = millis() - chrono; 
   myScreen.setFontSize(0); 
   myScreen.gText(0, 66, "0: Original"); 
   myScreen.setFontSize(1); 
   myScreen.gText(0, 76, i32toa(chrono) + " ms"); 
   Serial.print("Original(="); 
   Serial.print(orientation, DEC); 
   Serial.print(")\t"); 
   Serial.println(chrono, DEC); 
   // Method 1 
   chrono = millis(); 
   for (uint16_t i=0; i<64; i++) { 
       for (uint16_t j=0; j<64; j++) { 
           myScreen.point(myScreen.screenSizeX()/2+i, j, myScreen.readPixel(i, j)); 
       } 
   } 
   chrono = millis() - chrono; 
   myScreen.setFontSize(0); 
   myScreen.gText(myScreen.screenSizeX()/2, 66, "1. point readPixel"); 
   myScreen.setFontSize(1); 
   myScreen.gText(myScreen.screenSizeX()/2, 76, i32toa(chrono) + " ms"); 
   Serial.print("point(readPixel())\t"); 
   Serial.println(chrono, DEC); 
   // Method 2 
   chrono = millis(); 
   myScreen.copyPaste(0, 0, 0, myScreen.screenSizeY()/2, 64, 64); 
   chrono = millis() - chrono; 
   myScreen.setFontSize(0); 
   myScreen.gText(0, myScreen.screenSizeY()/2 +66, "2. copyPaste"); 
   myScreen.setFontSize(1); 
   myScreen.gText(0, myScreen.screenSizeY()/2 +76, i32toa(chrono) + " ms"); 
   Serial.print("copyPaste()\t"); 
   Serial.println(chrono, DEC); 
   // Method 3 
   if (myScreen.isStorage()) { 
       uint32_t address; 
       chrono = millis(); 
       address = 100; 
       myScreen.copyArea(0, 0, 64, 64, address); 
       address = 100; 
       myScreen.pasteArea(myScreen.screenSizeX()/2, myScreen.screenSizeY()/2, 64, 64, address); 
       chrono = millis() - chrono; 
       myScreen.setFontSize(0); 
       myScreen.gText(myScreen.screenSizeX()/2, myScreen.screenSizeY()/2 +66, "3. copy-paste SRAM"); 
       myScreen.setFontSize(1); 
       myScreen.gText(myScreen.screenSizeX()/2, myScreen.screenSizeY()/2 +76, i32toa(chrono) + " ms"); 
       Serial.print("copyArea()+pasteArea() SRAM\t"); 
       Serial.println(chrono, DEC); 
   } 
} 
/// 
/// @brief      protocolText 
/// @details    measure time to draw text in 3 fonts, 4 orientations, 10x 
/// 
void protocolText() 
{ 
   uint32_t chrono1, chrono2; 
   uint16_t colour; 
   uint8_t k = 0; 
   // Serial.print("fast gText... "); 
   myScreen.clear(grayColour); 
   myScreen.setFontSolid(true); 
   chrono1 = millis(); 
   for (uint8_t j=0; j<10; j++) { 
       for (uint8_t i=0; i<4; i++) { 
           if (k==1) colour = redColour; 
           else if (k==2) colour = yellowColour; 
           else if (k==3) colour = greenColour; 
           else if (k==4) colour = cyanColour; 
           else if (k==5) colour = blueColour; 
           else  colour = violetColour; 
           k++; 
           k %= 7; 
           myScreen.setPenSolid(false); 
           myScreen.dRectangle(0, 0, myScreen.screenSizeX(), myScreen.screenSizeY(), colour); 
           myScreen.setOrientation(i); 
           myScreen.setFontSize(0); 
           myScreen.gText(4, 4, "font 0 on " + String(i), colour); 
           myScreen.setFontSize(1); 
           myScreen.gText(4, 14, "font 1 on " + String(i), colour); 
           myScreen.setFontSize(2); 
           myScreen.gText(4, 34, "font 2 on " + String(i), colour); 
       } 
   } 
   chrono1 = millis()-chrono1; 
   Serial.print("10xFontSolid(true)\t"); 
   Serial.println(chrono1, DEC); 
   // Serial.print("slow gText... "); 
   myScreen.clear(grayColour); 
   myScreen.setFontSolid(false); 
   chrono2 = millis(); 
   for (uint8_t j=0; j<10; j++) { 
       for (uint8_t i=0; i<4; i++) { 
           if (k==1) colour = redColour; 
           else if (k==2) colour = yellowColour; 
           else if (k==3) colour = greenColour; 
           else if (k==4) colour = cyanColour; 
           else if (k==5) colour = blueColour; 
           else  colour = violetColour; 
           k++; 
           k %= 7; 
           myScreen.setPenSolid(false); 
           myScreen.dRectangle(0, 0, myScreen.screenSizeX(), myScreen.screenSizeY(), colour); 
           myScreen.setOrientation(i); 
           myScreen.setFontSize(0); 
           myScreen.gText(4, 4, "font 0 on " + String(i), colour); 
           myScreen.setFontSize(1); 
           myScreen.gText(4, 14, "font 1 on " + String(i), colour); 
           myScreen.setFontSize(2); 
           myScreen.gText(4, 34, "font 2 on " + String(i), colour); 
       } 
   } 
   chrono2 = millis()-chrono2; 
   Serial.print("10xFontSolid(false)\t"); 
   Serial.println(chrono2, DEC); 
   Serial.print("Ratio%\t"); 
   Serial.println((uint32_t)((uint64_t)(chrono1*100)/chrono2), DEC); 
} 
const int JOY_X = 2; 
const int JOY_Y = 26; 
const int SEL = 5; //will not work with CC3100 connected
//MIC 
const int MIC = 6; 
//ACCELEROMETER 
const int ACC_X = 23; 
const int ACC_Y = 24; 
const int ACC_Z = 25; 
//SWITCHES 
const int SW1 = 33; 
const int SW2 = 32; 
//BUZZER 
const int BUZZ = 40; 
//RGB LED 
const int RGB_RED = 39; 
const int RGB_GRN = 38; 
const int RGB_BLU = 37; 

// notes in the melody: 
#define NOTE_C4_1 260 
#define NOTE_B0  31 
#define NOTE_C1  33 
#define NOTE_CS1 35 
#define NOTE_D1  37 
#define NOTE_DS1 39 
#define NOTE_E1  41 
#define NOTE_F1  44 
#define NOTE_FS1 46 
#define NOTE_G1  49 
#define NOTE_GS1 52 
#define NOTE_A1  55 
#define NOTE_AS1 58 
#define NOTE_B1  62 
#define NOTE_C2  65 
#define NOTE_CS2 69 
#define NOTE_D2  73 
#define NOTE_DS2 78 
#define NOTE_E2  82 
#define NOTE_F2  87 
#define NOTE_FS2 93 
#define NOTE_G2  98 
#define NOTE_GS2 104 
#define NOTE_A2  110 
#define NOTE_AS2 117 
#define NOTE_B2  123 
#define NOTE_C3  131 
#define NOTE_CS3 139 
#define NOTE_D3  147 
#define NOTE_DS3 156 
#define NOTE_E3  165 
#define NOTE_F3  175 
#define NOTE_FS3 185 
#define NOTE_G3  196 
#define NOTE_GS3 208 
#define NOTE_A3  220 
#define NOTE_AS3 233 
#define NOTE_B3  247 
#define NOTE_C4  262 
#define NOTE_CS4 277 
#define NOTE_D4  294 
#define NOTE_DS4 311 
#define NOTE_E4  330 
#define NOTE_F4  349 
#define NOTE_FS4 370 
#define NOTE_G4  392 
#define NOTE_GS4 415 
#define NOTE_A4  440 
#define NOTE_AS4 466 
#define NOTE_B4  494 
#define NOTE_C5  523 
#define NOTE_CS5 554 
#define NOTE_D5  587 
#define NOTE_DS5 622 
#define NOTE_E5  659 
#define NOTE_F5  698 
#define NOTE_FS5 740 
#define NOTE_G5  784 
#define NOTE_GS5 831 
#define NOTE_A5  880 
#define NOTE_AS5 932 
#define NOTE_B5  988 
#define NOTE_C6  1047 
#define NOTE_CS6 1109 
#define NOTE_D6  1175 
#define NOTE_DS6 1245 
#define NOTE_E6  1319 
#define NOTE_F6  1397 
#define NOTE_FS6 1480 
#define NOTE_G6  1568 
#define NOTE_GS6 1661 
#define NOTE_A6  1760 
#define NOTE_AS6 1865 
#define NOTE_B6  1976 
#define NOTE_C7  2093 
#define NOTE_CS7 2217 
#define NOTE_D7  2349 
#define NOTE_DS7 2489 
#define NOTE_E7  2637 
#define NOTE_F7  2794 
#define NOTE_FS7 2960 
#define NOTE_G7  3136 
#define NOTE_GS7 3322 
#define NOTE_A7  3520 
#define NOTE_AS7 3729 
#define NOTE_B7  3951 
#define NOTE_C8  4186 
#define NOTE_CS8 4435 
#define NOTE_D8  4699 
#define NOTE_DS8 4978 
// OPT3001 
//opt3001 opt3001; 

unsigned long readings = 0; 
int melody[] = { 
  NOTE_C4_1,NOTE_C4, NOTE_D4, NOTE_C4,NOTE_F4,NOTE_E4, 
  NOTE_C4_1,NOTE_C4,NOTE_D4,NOTE_C4,NOTE_G4,NOTE_F4, 
  NOTE_C4_1,NOTE_C4,NOTE_C5,NOTE_A4,NOTE_F4,NOTE_F4, NOTE_E4,NOTE_D4, 
  NOTE_AS4,NOTE_AS4,NOTE_A4,NOTE_F4,NOTE_G4,NOTE_F4}; 
// note durations: 4 = quarter note, 8 = eighth note, etc.: 
int noteDurations[] = { 
 4, 4, 2, 2,2,1, 
 4, 4, 2, 2,2,1, 
 4, 4, 2, 2,4,4,2,1,  
 4, 4, 2, 2,2,1}; 
void setup() 
{ 
 // put your setup code here, to run once: 
 Serial.begin(9600); 
 delay(300); 
 analogReadResolution(12); // 12-bit ADC resolution, default is 8-bit
 pinMode(SW1, INPUT); 
 pinMode(SW2, INPUT); 
 pinMode(BUZZ, OUTPUT); 
 Serial.println("Welcome to the Educational BoosterPack MKII Custom Test:"); 
//  opt3001.begin();  
} 
char *ftoa(char *a, float f, int precision) 
{ 
 long p[] = {0,10,100,1000,10000,100000,1000000,10000000,100000000}; 
 char *ret = a; 
 long heiltal = (long)f; 
 itoa(heiltal, a, 10); 
 while (*a != '\0') a++; 
 *a++ = '.'; 
 long desimal = abs((long)((f - heiltal) * p[precision])); 
 itoa(desimal, a, 10); 
 return ret; 
} 
void loop() 
{ 
   int16_t i; 
   uint16_t colour; 
   Serial.println("*** LCD_screen test ****"); 
   Serial.println("(All times in ms)"); 
   myScreen.begin(); 
   Serial.println(myScreen.WhoAmI()); 
   Serial.print(myScreen.screenSizeX(), DEC); 
   Serial.print("x"); 
   Serial.println(myScreen.screenSizeY(), DEC); 
   myScreen.setFontSize(myScreen.fontMax()); 
   myScreen.clear(darkGrayColour); 
   protocolSquare(300); 
   protocolSquare(200); 
   protocolSquare(100); 
   protocolSquare(50); 
   delay(2000); 
   protocolText(); 
   delay(2000); 
   if (myScreen.isReadable()) { 
       protocolCopyPaste(1); 
       delay(2000); 
   } 
   myScreen.clear(); 
   Serial.println("-END OF SCREEN TEST--"); 
   Serial.println(); 
   myScreen.clear(grayColour); 
   myScreen.setFontSolid(false); 
   colour = redColour; 
	myScreen.setOrientation(i); 
	myScreen.setFontSize(2); 
 
//Test out the joystick 
 myScreen.gText(0, 0, "  JoyStick Test", blueColour); 
 myScreen.gText(0, 15, "  Press btn S2", blueColour); 
 myScreen.gText(0, 30, "  to exit ", blueColour); 
 int joycountr = 0;
 int joycountl = 0;
 int joycountu = 0;
 int joycountd = 0;
 int joycountc = 0;
 while(digitalRead(SW2)==1){ 
   if(analogRead(JOY_X)>3500){ 
     myScreen.gText(0, 45, "Right", colour); 
     Serial.println("Right direction joystick test");
     joycountr = 1;
   } 
   else if(analogRead(JOY_X)<500){ 
     myScreen.gText(0, 55, "Left ", colour);
     Serial.println("Left direction joystick test"); 
     joycountl = 1;
   } 
   else if(analogRead(JOY_Y)>3500){ 
     myScreen.gText(0, 65, "Up", colour); 
     Serial.println("Up direction joystick test");
     joycountu = 1;
   } 
   else if(analogRead(JOY_Y)<500){ 
     myScreen.gText(0, 75, "Down", colour); 
     Serial.println("Down direction joystick test");
     joycountd = 1;
   } 
   else { 
     myScreen.gText(0,85, "Center", colour); 
     Serial.println("Center direction joystick test");
     joycountc = 1;
   } 
   if(joycountr + joycountl + joycountu + joycountd + joycountc == 5) {
     myScreen.gText(50,100, " PASSED!!", greenColour); 
   }
 } 
 delay(400); 
 
 //Test out the microphone 
 myScreen.clear(grayColour); 
 myScreen.gText(0,0, "   Tap  Mic", blueColour); 
 while(analogRead(MIC) > 100); 
 myScreen.gText(50,10, " Passed!", colour); 
 
 //Test out button 1 
 myScreen.gText(0,20, "  Button Tests", blueColour); 
 myScreen.gText(0,40, "Press S1", colour); 
 while(digitalRead(SW1) == 1); 
 myScreen.gText(50,40, " > Passed!", colour); 
 
 //Test out button 2 
 myScreen.gText(0,55, "Press S2", colour); 
 while(digitalRead(SW2) == 1); 
 myScreen.gText(50,55, " > Passed!", colour); 

 //Test out buzzer 
 myScreen.gText(0,70, "  Buzzer Test", blueColour); 
 myScreen.gText(0,85, "hold S1 to skip", blueColour); 
 delay(2000); 
 if(digitalRead(SW1) == 1){ 
   for (int thisNote = 0; thisNote < 26; thisNote++) { 
     // to calculate the note duration, take one second  
     // divided by the note type. 
     //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc. 
     int noteDuration = 1000/noteDurations[thisNote]; 
     tone(BUZZ, melody[thisNote],noteDuration); 
     int pauseBetweenNotes = noteDuration + 50;      //delay between pulse 
     delay(pauseBetweenNotes>>2); 
     noTone(BUZZ);                // stop the tone playing 
   } 
 myScreen.gText(0,105, "S1&S2 if sound", colour); 
 while(digitalRead(SW2) == 1 || digitalRead(SW1) == 1); 
 myScreen.gText(50,115, " PASSED!!", greenColour); 
 delay(400); 
 } 

 //Test out 3-axis analog accelerometer 
 // 1200 ~ -1G / 2000 ~ 0G / 2800 ~ +1G 
 myScreen.clear(grayColour); 
 myScreen.gText(0, 0, "  Accelerometer Test", blueColour); 
 myScreen.gText(0, 15, "  Press btn S2", blueColour); 
 myScreen.gText(0, 30, "  to exit ", blueColour); 
 while(digitalRead(SW2)==1){
   myScreen.gText(0,60, "Flat", colour); 
   if((analogRead(ACC_X) - 2048) < 500 && (analogRead(ACC_Y) - 2048) < 500 && (analogRead(ACC_Z) - 2048) > 500) { 
     myScreen.gText(50,60, " > Passed!", colour); 
     myScreen.gText(0,70, "Left", colour); 
   }
   else if((analogRead(ACC_X) - 2048) < -500 && (analogRead(ACC_Y) - 2048) < 500 && (analogRead(ACC_Z) - 2048) < 500) {
     myScreen.gText(50,70, " > Passed!", colour); 
     myScreen.gText(0,80, "Right", colour); 
   }
   else if((analogRead(ACC_X) - 2048) > 500 && (analogRead(ACC_Y) - 2048) < 500 && (analogRead(ACC_Z) - 2048) < 0) { 
     myScreen.gText(50,80, " > Passed!", colour); 
     myScreen.gText(0,90, "Away", colour); 
   }
   else if((analogRead(ACC_X) - 2048) < 500 && (analogRead(ACC_Y) - 2048) > 500 && (analogRead(ACC_Z) - 2048) < 500) { 
     myScreen.gText(50,90, " > Passed!", colour); 
     myScreen.gText(0,100, "To you", colour); 
   }
   else if((analogRead(ACC_X) - 2048) < 500 && (analogRead(ACC_Y) - 2048) < -500 && (analogRead(ACC_Z) - 2048) < 500) {
     myScreen.gText(50,100, " > Passed!", colour); 
     myScreen.gText(0,110, "Upside Down", colour); 
   }
   else if((analogRead(ACC_X) - 2048) < 500 && (analogRead(ACC_Y) - 2048) < 500 && (analogRead(ACC_Z) - 2048) < -500) {
     myScreen.gText(50,120, "    PASSED!!", greenColour); 
   }
   
 }
 delay(400); 
 myScreen.clear(grayColour); 
 
 //TEST OPT3001 LIGHT SENSOR 
 //To be enabled once OPT3001 is added to future Edu BP MK II Rev. 
 // Serial.println("Cover the light sensor to test the OPT3001."); 
 // while(opt3001.readResult() > 30); 
 // Serial.println("Shine flashlight onto the light sensor "); 
 // while(opt3001.readResult() < 1000); 
 // Serial.println("OPT3001 testing successful!"); 

 //TEST RGB LED 
 myScreen.gText(0,40, "   RGB LED Test", blueColour); 
 i = 0; 
 int brightness = 0; 
 int fadeAmount = 5; 
 for(brightness = 0; brightness<255; brightness+=fadeAmount){ 
   analogWrite(RGB_RED, brightness);     
   // wait for 30 milliseconds to see the dimming effect     
   delay(10);  
 } 
 for(brightness = 255; brightness>=0; brightness-=fadeAmount){ 
   analogWrite(RGB_RED, brightness);     
   // wait for 30 milliseconds to see the dimming effect     
   delay(10);  
 }   
 for(brightness = 0; brightness<255; brightness+=fadeAmount){ 
   analogWrite(RGB_GRN, brightness);     
   // wait for 30 milliseconds to see the dimming effect     
   delay(10);  
 } 
 for(brightness = 255; brightness>=0; brightness-=fadeAmount){ 
   analogWrite(RGB_GRN, brightness);     
   // wait for 30 milliseconds to see the dimming effect     
   delay(10);  
 }   
 for(brightness = 0; brightness<255; brightness+=fadeAmount){ 
   analogWrite(RGB_BLU, brightness);     
   // wait for 30 milliseconds to see the dimming effect     
   delay(10);  
 } 
 for(brightness = 255; brightness>=0; brightness-=fadeAmount){ 
   analogWrite(RGB_BLU, brightness);     
   // wait for 30 milliseconds to see the dimming effect     
   delay(10);  
 } 
 myScreen.gText(0,70, "S1 to Finish", colour); 
 while(digitalRead(SW1) == 1); 
 myScreen.gText(0,90, "ALL TESTS PASSED", greenColour); 
 while(1); 
}

IFTTTWebClient.ino

Arduino
Send one trigger to IFTTT webhook service. Fill in with your information.
/*
 IFTTT Web client

 This sketch connects to a website (https://maker.iffttt.com)
 using a WiFi BoosterPack and uses button trigger from 
 Educational BoosterPack MK II

 This example is written for a network using WPA encryption. For
 WEP or WPA, change the Wifi.begin() call accordingly.

 Circuit:
 * WiFi BoosterPack attached
 * Educational BoosterPack MK II attached

 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 modified 22 June 2020
 by Mark Easley
 */


#include <SPI.h>
#include <WiFi.h>

//SWITCHES 
const int SW1 = 33; // won't work with CC3100 attached
const int SW2 = 32;

// your network name also called SSID
char ssid[] = "YOUR_SSID";
// your network password
char password[] = "YOUR_AP_PASSWORD";

// 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(50,62,217,1);  // numeric IP for Google or whatever website yu want (no DNS)
char server[] = "maker.ifttt.com";    // name address for Google or whatever website you want (using DNS)

// Initialize the Wi-Fi client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
WiFiClient client;

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(115200);

  pinMode(SW1, INPUT); 
  pinMode(SW2, INPUT);

  // attempt to connect to Wifi network:
  Serial.print("Attempting to connect to Network named: ");
  // print the network name (SSID);
  Serial.println(ssid); 
  // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
  WiFi.begin(ssid, password);
  while ( WiFi.status() != WL_CONNECTED) {
    // print dots while we wait to connect
    Serial.print(".");
    delay(300);
  }
  
  Serial.println("\nYou're connected to the network");
  Serial.println("Waiting for an ip address");
  
  while (WiFi.localIP() == INADDR_NONE) {
    // print dots while we wait for an ip addresss
    Serial.print(".");
    delay(300);
  }

  Serial.println("\nIP Address obtained");
  printWifiStatus();

  Serial.println("\nWaiting for button press...");
  Serial.println("\nS2 to trigger...");
  Serial.println("\nS1 to exit...");

}

void loop() {

  while(1){
      // loop until SW2 pressed
      if(digitalRead(SW2)==0) break;
  }
    
  // if you get a connection, report back via serial:
  if (client.connect(server, 80)) {
    Serial.println("\nStarting connection to server...");
    Serial.println("connected to server");
    // Make a HTTP request:
    client.println("GET /trigger/button1_pressed/with/key/[YOUR_KEY] HTTP/1.1");
    client.println("Host: maker.ifttt.com");
    client.println("Connection: close");
    client.println();
  }
  
  // if there are incoming bytes available
  // from the server, read them and print them:
  while (client.available()) {
    char c = client.read();
    Serial.write(c);
  }
  
  // if the server's disconnected, stop the client:
  if (!client.connected()) {
    Serial.println();
    Serial.println("disconnecting from server.");
    client.stop();

    // do nothing forevermore:
    while (true);
  }
}


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");
}

Credits

Mark Easley

Mark Easley

65 projects • 137 followers
Texas Instruments LaunchPad SW Engineer

Comments