SHARE
TWEET

Arduino-XRF beacon

snakerdlk Apr 11th, 2013 2 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <SoftwareSerial.h>
  2.  
  3. #define SEND_DELAY 5000
  4. #define LED_PIN 13
  5.  
  6. SoftwareSerial mySerial(2, 3); // RX, TX
  7.  
  8. void setup()  
  9. {
  10.   pinMode(LED_PIN, OUTPUT);
  11.  
  12.   digitalWrite(LED_PIN, HIGH);
  13.   delay(1000);
  14.   digitalWrite(LED_PIN, LOW);
  15.  
  16.   // Open serial communications and wait for port to open:
  17.   Serial.begin(9600);
  18.   while (!Serial) {
  19.     ; // wait for serial port to connect. Needed for Leonardo only
  20.   }
  21.  
  22.   Serial.println("SETUP Arduino");
  23.  
  24.   // set the data rate for the SoftwareSerial port
  25.   mySerial.begin(9600);
  26. }
  27.  
  28. char beacon[]="abcdef";
  29. char answer[]="fedcba";
  30.  
  31. char input[]="000000";
  32.  
  33. unsigned long timeLastSend = 0;
  34. unsigned long led_on_time = 0;
  35. unsigned i=0;
  36.  
  37. void loop() // run over and over
  38. {
  39.         unsigned char c;
  40.  
  41.         if (millis() > timeLastSend){
  42.                 mySerial.write(beacon);
  43.  
  44.                 timeLastSend = millis()+SEND_DELAY;
  45.  
  46.                 led_on_time = millis()+200;
  47.                 digitalWrite(LED_PIN, HIGH);
  48.  
  49.                 Serial.println("Sending beacon...");
  50.         }
  51.  
  52.         if (millis() > led_on_time){
  53.                 digitalWrite(LED_PIN, LOW);
  54.         }
  55.                
  56.  
  57.         if (mySerial.available()){
  58.                 c = mySerial.read();
  59.  
  60.                 Serial.print("r:");
  61.                 Serial.print(c);
  62.  
  63.                 if ( c == answer[0]){
  64.                         i=1;
  65.                         input[0]=c;
  66.                 }else if(i > 0){
  67.                                 input[i] = c;
  68.                                 i++;
  69.                 }
  70.         }
  71.         if ( i >= strlen(beacon)){
  72.                         if (strcmp(input, answer) == 0){
  73.                         digitalWrite(LED_PIN, HIGH);
  74.                         led_on_time = millis()+700;
  75.                         Serial.println("GOT BEACON");
  76.                 }else{
  77.                         Serial.println("beacon failed...");
  78.                         strcpy("000000",input);
  79.                 }
  80.                 i=0;
  81.         }
  82. }
RAW Paste Data
Want to get better at C++?
Learn to code C++ in 2017
Pastebin PRO Summer Special!
Get 40% OFF on Pastebin PRO accounts!
Top