1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
#include <Arduino.h>
#include <SPI.h>
#include "Adafruit_BLE.h"
#include "Adafruit_BluefruitLE_SPI.h"
#include "Adafruit_BluefruitLE_UART.h"
#include "BluefruitConfig.h"
#if SOFTWARE_SERIAL_AVAILABLE
#include <SoftwareSerial.h>
#endif
#define FACTORYRESET_ENABLE 0 //si 1=reset parametre d'usine si 0=ne reset pas
//logiciel SPI, utilisant des broches SPI définies par l'utilisateur SCK / MOSI / MISO, puis CS / IRQ / RST sélectionné par l'utilisateur
//Adafruit_BluefruitLE_SPI ble ( BLUEFRUIT_SPI_SCK , BLUEFRUIT_SPI_MISO ,BLUEFRUIT_SPI_MOSI , BLUEFRUIT_SPI_CS ,BLUEFRUIT_SPI_IRQ , BLUEFRUIT_SPI_RST );
// SPI materiel CS=8, IRQ=7, RST=4;(fonctionne mais plus lent).
Adafruit_BluefruitLE_SPI ble ( BLUEFRUIT_SPI_SCK , BLUEFRUIT_SPI_MISO ,BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS ,BLUEFRUIT_SPI_IRQ , BLUEFRUIT_SPI_RST );
// A small helper
void error(const __FlashStringHelper*err) {
SerialUSB.print(err);
SerialUSB.print("\n");
while (1);
}
// Recherche constamment de nouvelles données de commande ou de réponse
void getUserInput(char buffer[], uint8_t maxSize)
{
memset(buffer, 0, maxSize);
while( Serial.available() == 0 ) {
delay(1);
}
}
uint8_t count=0;
char buffer[256]; //stockage de données.
uint8_t maxSize;
/*============================================================================================*/
void setup(void)
{
Serial.begin(115200);
// desactive les commandes echo de Bluefruit
ble.echo(false);
}
/*============================================================================================*/
void loop(void)
{
delay(1000);
SerialUSB.println("Début dans 5 sec");
delay(5000);
SerialUSB.println("*******************************************************************");
SerialUSB.println("*******************************************************************");
delay(1000);
SerialUSB.print("Test des commandes AT, Adafruit Bluefruit module bluetooth LE\n"); // Message de commencement.
SerialUSB.print("-------------------------------------\n"); //
delay(1000);
SerialUSB.print(("Initialisation du module bluetooth Bluefruit LE\n"));// Initialisation/detection du module bluetooth LE
if ( !ble.begin(VERBOSE_MODE) ) // Si l'object 'ble' est vrai alors verbode_mode -> affiche les informations du module.
{
error(F("Impossible de trouver, est-il en mode CoMmanD ? Vérifiez le câblage."));// Si object 'ble' faux alors message error
}
SerialUSB.println("OK!\n");// Si 1er condition remplie alors affiche 'ok'.
delay(1000);
if ( FACTORYRESET_ENABLE )
{
Serial.println("Effectuer une réinitialisation d'usine: ");
if ( ! ble.factoryReset())
{
error(F("Impossible de réinitialiser les paramètres d'usine"));
}
}
//affiche les informations Bluefruit
SerialUSB.println("Demande des infos Bluefruit:");
ble.info();
delay(1000); //attt 1 sec
SerialUSB.println("*******************************************************************");
delay(1000);
SerialUSB.println("*******************************************************************");
delay(1000);
/********************************************************************************/
/****Interroger en permanence les nouvelles données de commande ou de réponse****/
/********************************************************************************/
// Afficher l'invite de commande
SerialUSB.print("AT > ");
// Vérifiez les entrées de l'utilisateur et réitérez-les si quelque chose a été trouvé
char command[BUFSIZE+1];
getUserInput(command, BUFSIZE);
// Envoie de la commande
ble.println(command);
//Vérifier l'état de la réponse
ble.waitForOK();
do
{
count += Serial.readBytes(buffer+count, maxSize);
delay(2);
} while( (count < maxSize) && !(Serial.available() == 0) );
} |
Partager