/* * RFDuino sketch. Load this sketch into the rfduino using * the Arduino ide: http://arduino.cc/en/Main/Software */ #include <RFduinoBLE.h> //Commands #define HANDSHAKE 0x11 #define CONNECTED 0x22 #define TRANSMIT 0x33 #define RECEIVE 0X44 //connected flag unsigned char cFlag; //Transmit buffer unsigned char Tbuf[255]; const int ledPin = const int ledPin1 = void setup() { //clear flags cFlag = 0; 4; 5; // the number of the LED pin // the number of the LED pin // initialize serial: Serial.begin(9600, 2, 3); Serial.println("SetUp.\n"); // initialize pinMode as output. pinMode(ledPin, OUTPUT); pinMode(ledPin1,OUTPUT); RFduinoBLE.deviceName = "Dorothy"; RFduinoBLE.advertisementInterval = MILLISECONDS(300); // this is the data we want to appear in the advertisement // (the deviceName length plus the advertisement length must be <= 18 bytes RFduinoBLE.advertisementData = "test10"; // start the BLE stack RFduinoBLE.begin(); } void loop() { // switch to lower power mode RFduino_ULPDelay(350); } void Handshake() { Serial.write(HANDSHAKE); } void Connected() { Serial.write(cFlag); } void Transmit() { unsigned int len; //get transmistion length len = (unsigned int)Serial.read(); if(len > 255) {len = 255;} //read byes to transmit for(int i=0;i<len;len++) { Tbuf[i]=Serial.read(); } RFduinoBLE.send((const char*)Tbuf, len); } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { if(Serial.available()) { // get the new byte: unsigned char comm = (char)Serial.read(); switch (comm) { case HANDSHAKE: Handshake(); break; case CONNECTED: Connected(); break; case TRANSMIT: Transmit(); break; default: break; } } } void RFduinoBLE_onConnect() { cFlag=1; Serial.println("Connected.\n"); } void RFduinoBLE_onDisconnect() { cFlag=0; Serial.println("NotConnected.\n"); } void RFduinoBLE_onReceive(char *data, int len) { if(len>255) { len=255;} //limit to 255 bytes for now Serial.write(RECEIVE); Serial.write((unsigned char)len); uint8_t a = data[0]; if( a==1 ) { digitalWrite(ledPin1,LOW); digitalWrite(ledPin, HIGH); Serial.write(0x01); } else if( a==2 ) { digitalWrite(ledPin, LOW); digitalWrite(ledPin1, HIGH); Serial.write(0x02); } }
© Copyright 2024 ExpyDoc