|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /*********************************************************************
- This is an example for our nRF8001 Bluetooth Low Energy Breakout
-
- Pick one up today in the adafruit shop!
- ------> http://www.adafruit.com/products/1697
-
- Adafruit invests time and resources providing this open source code,
- please support Adafruit and open-source hardware by purchasing
- products from Adafruit!
-
- Written by Kevin Townsend/KTOWN for Adafruit Industries.
- MIT license, check LICENSE for more information
- All text above, and the splash screen below must be included in any redistribution
- *********************************************************************/
-
- // This version uses the internal data queing so you can treat it like Serial (kinda)!
-
- #include <SPI.h>
- #include "Adafruit_BLE_UART.h"
-
- // Connect CLK/MISO/MOSI to hardware SPI
- // e.g. On UNO & compatible: CLK = 13, MISO = 12, MOSI = 11
- #define ADAFRUITBLE_REQ 10
- #define ADAFRUITBLE_RDY 2 // This should be an interrupt pin, on Uno thats #2 or #3
- #define ADAFRUITBLE_RST 9
-
- Adafruit_BLE_UART BTLEserial = Adafruit_BLE_UART(ADAFRUITBLE_REQ, ADAFRUITBLE_RDY, ADAFRUITBLE_RST);
- /**************************************************************************/
- /*!
- Configure the Arduino and start advertising with the radio
- */
- /**************************************************************************/
- void setup(void)
- {
- Serial.begin(9600);
- while(!Serial); // Leonardo/Micro should wait for serial init
- Serial.println(F("Adafruit Bluefruit Low Energy nRF8001 Print echo demo"));
-
- // BTLEserial.setDeviceName("NEWNAME"); /* 7 characters max! */
-
- BTLEserial.begin();
- }
-
- /**************************************************************************/
- /*!
- Constantly checks for new events on the nRF8001
- */
- /**************************************************************************/
- aci_evt_opcode_t laststatus = ACI_EVT_DISCONNECTED;
-
- void loop()
- {
- // Tell the nRF8001 to do whatever it should be working on.
- BTLEserial.pollACI();
-
- // Ask what is our current status
- aci_evt_opcode_t status = BTLEserial.getState();
- // If the status changed....
- if (status != laststatus) {
- // print it out!
- if (status == ACI_EVT_DEVICE_STARTED) {
- Serial.println(F("* Advertising started"));
- }
- if (status == ACI_EVT_CONNECTED) {
- Serial.println(F("* Connected!"));
- }
- if (status == ACI_EVT_DISCONNECTED) {
- Serial.println(F("* Disconnected or advertising timed out"));
- }
- // OK set the last status change to this one
- laststatus = status;
- }
-
- if (status == ACI_EVT_CONNECTED) {
- // Lets see if there's any data for us!
- if (BTLEserial.available()) {
- Serial.print("* "); Serial.print(BTLEserial.available()); Serial.println(F(" bytes available from BTLE"));
- }
- // OK while we still have something to read, get a character and print it out
- while (BTLEserial.available()) {
- char c = BTLEserial.read();
- Serial.print(c);
- }
-
- // Next up, see if we have any data to get from the Serial console
-
- if (Serial.available()) {
- // Read a line from Serial
- Serial.setTimeout(100); // 100 millisecond timeout
- String s = Serial.readString();
-
- // We need to convert the line to bytes, no more than 20 at this time
- uint8_t sendbuffer[20];
- s.getBytes(sendbuffer, 20);
- char sendbuffersize = min(20, s.length());
-
- Serial.print(F("\n* Sending -> \"")); Serial.print((char *)sendbuffer); Serial.println("\"");
-
- // write the data
- BTLEserial.write(sendbuffer, sendbuffersize);
- }
- }
- }
|