diff --git a/README.md b/README.md index d166c0c..d6e420b 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ![AIOArduino](https://cdn-learn.adafruit.com/assets/assets/000/057/496/original/adafruit_io_AIOA.png?1531335660) -This library provides a simple device independent interface for interacting with [Adafruit IO](https://io.adafruit.com) using Arduino. It allows you to switch between WiFi (ESP8266, ESP32, AirLift, WINC1500, & WICED), Cellular (32u4 FONA), and Ethernet (Ethernet FeatherWing) +This library provides a simple device independent interface for interacting with [Adafruit IO](https://io.adafruit.com) using Arduino. It allows you to switch between WiFi (ESP8266, ESP32, ESP32-S2, Airlift, WINC1500, & WICED), Cellular (32u4 FONA), and Ethernet (Ethernet FeatherWing). ## Documentation diff --git a/examples/adafruitio_26_led_btn/adafruitio_26_led_btn.ino b/examples/adafruitio_26_led_btn/adafruitio_26_led_btn.ino new file mode 100644 index 0000000..e4958ec --- /dev/null +++ b/examples/adafruitio_26_led_btn/adafruitio_26_led_btn.ino @@ -0,0 +1,116 @@ +// Adafruit IO Publish & Subscribe, Digital Input and Output Example +// +// Adafruit invests time and resources providing this open source code. +// Please support Adafruit and open source hardware by purchasing +// products from Adafruit! +// +// Written by Todd Treece for Adafruit Industries +// Modified by Brent Rubell for Adafruit Industries +// Copyright (c) 2020 Adafruit Industries +// Licensed under the MIT license. +// +// All text above must be included in any redistribution. + +/************************** Configuration ***********************************/ + +// edit the config.h tab and enter your Adafruit IO credentials +// and any additional configuration needed for WiFi, cellular, +// or ethernet clients. +#include "config.h" + +/************************ Example Starts Here *******************************/ + +// Button Pin +#define BUTTON_PIN 0 + +// LED Pin +#define LED_PIN LED_BUILTIN + +// button state +bool btn_state = false; +bool prv_btn_state = false; + +// set up the 'led' feed +AdafruitIO_Feed *led = io.feed("led"); + +// set up the 'button' feed +AdafruitIO_Feed *button = io.feed("button"); + +void setup() { + + // set button pin as an input + pinMode(BUTTON_PIN, INPUT); + + // set LED pin as an output + pinMode(LED_PIN, OUTPUT); + + // start the serial connection + Serial.begin(115200); + + // wait for serial monitor to open + while(! Serial); + + Serial.print("Connecting to Adafruit IO"); + + // connect to io.adafruit.com + io.connect(); + + // set up a message handler for the count feed. + // the handleMessage function (defined below) + // will be called whenever a message is + // received from adafruit io. + led->onMessage(handleMessage); + + // wait for a connection + while(io.status() < AIO_CONNECTED) { + Serial.print("."); + delay(500); + } + + // we are connected + Serial.println(); + Serial.println(io.statusText()); + led->get(); + +} + +void loop() { + + // io.run(); is required for all sketches. + // it should always be present at the top of your loop + // function. it keeps the client connected to + // io.adafruit.com, and processes any incoming data. + io.run(); + + // grab the btn_state state of the button. + if(digitalRead(BUTTON_PIN) == LOW) + btn_state = false; + else + btn_state = true; + + // return if the btn state hasn't changed + if(btn_state == prv_btn_state) + return; + + // save the btn_state state to the 'button' feed on adafruit io + Serial.print("sending button -> "); Serial.println(btn_state); + button->save(btn_state); + + // store last button state + prv_btn_state = btn_state; + +} + +// this function is called whenever a 'led' message +// is received from Adafruit IO. it was attached to +// the counter feed in the setup() function above. +void handleMessage(AdafruitIO_Data *data) { + Serial.print("received <- "); + + if(data->toPinLevel() == HIGH) + Serial.println("HIGH"); + else + Serial.println("LOW"); + + digitalWrite(LED_PIN, data->toPinLevel()); +} \ No newline at end of file diff --git a/examples/adafruitio_26_led_btn/config.h b/examples/adafruitio_26_led_btn/config.h new file mode 100644 index 0000000..7440cad --- /dev/null +++ b/examples/adafruitio_26_led_btn/config.h @@ -0,0 +1,67 @@ +/************************ Adafruit IO Config *******************************/ + +// visit io.adafruit.com if you need to create an account, +// or if you need your Adafruit IO key. +#define IO_USERNAME "your_username" +#define IO_KEY "your_key" + +/******************************* WIFI **************************************/ + +// the AdafruitIO_WiFi client will work with the following boards: +// - HUZZAH ESP8266 Breakout -> https://www.adafruit.com/products/2471 +// - Feather HUZZAH ESP8266 -> https://www.adafruit.com/products/2821 +// - Feather HUZZAH ESP32 -> https://www.adafruit.com/product/3405 +// - Feather M0 WiFi -> https://www.adafruit.com/products/3010 +// - Feather WICED -> https://www.adafruit.com/products/3056 +// - Adafruit PyPortal -> https://www.adafruit.com/product/4116 +// - Adafruit Metro M4 Express AirLift Lite -> +// https://www.adafruit.com/product/4000 +// - Adafruit AirLift Breakout -> https://www.adafruit.com/product/4201 + +#define WIFI_SSID "your_ssid" +#define WIFI_PASS "your_pass" + +// uncomment the following line if you are using airlift +//#define USE_AIRLIFT + +// uncomment the following line if you are using winc1500 +// #define USE_WINC1500 + +// comment out the following lines if you are using fona or ethernet +#include "AdafruitIO_WiFi.h" + +#if defined(USE_AIRLIFT) || defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE) || \ + defined(ADAFRUIT_PYPORTAL) +// Configure the pins used for the ESP32 connection +#if !defined(SPIWIFI_SS) // if the wifi definition isnt in the board variant +// Don't change the names of these #define's! they match the variant ones +#define SPIWIFI SPI +#define SPIWIFI_SS 10 // Chip select pin +#define SPIWIFI_ACK 9 // a.k.a BUSY or READY pin +#define ESP32_RESETN 6 // Reset pin +#define ESP32_GPIO0 -1 // Not connected +#endif +AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS, SPIWIFI_SS, + SPIWIFI_ACK, ESP32_RESETN, ESP32_GPIO0, &SPIWIFI); +#else +AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS); +#endif +/******************************* FONA **************************************/ + +// the AdafruitIO_FONA client will work with the following boards: +// - Feather 32u4 FONA -> https://www.adafruit.com/product/3027 + +// uncomment the following two lines for 32u4 FONA, +// and comment out the AdafruitIO_WiFi client in the WIFI section +// #include "AdafruitIO_FONA.h" +// AdafruitIO_FONA io(IO_USERNAME, IO_KEY); + +/**************************** ETHERNET ************************************/ + +// the AdafruitIO_Ethernet client will work with the following boards: +// - Ethernet FeatherWing -> https://www.adafruit.com/products/3201 + +// uncomment the following two lines for ethernet, +// and comment out the AdafruitIO_WiFi client in the WIFI section +// #include "AdafruitIO_Ethernet.h" +// AdafruitIO_Ethernet io(IO_USERNAME, IO_KEY); \ No newline at end of file diff --git a/library.properties b/library.properties index d10fb01..13a064e 100644 --- a/library.properties +++ b/library.properties @@ -1,9 +1,9 @@ name=Adafruit IO Arduino -version=4.0.0 +version=4.0.1 author=Adafruit maintainer=Adafruit sentence=Arduino library to access Adafruit IO. -paragraph=Arduino library to access Adafruit IO using the Adafruit AirLift, ESP8266, ESP32, M0 WINC1500, WICED, MKR1000, Ethernet, or FONA hardware. +paragraph=Arduino library to access Adafruit IO using the Adafruit AirLift, ESP8266, ESP32, ESP32-S2, M0 WINC1500, WICED, MKR1000, Ethernet, or FONA hardware. category=Communication url=https://github.com/adafruit/Adafruit_IO_Arduino architectures=*