Advertisement
snakerdlk

Arduino-XRF beacon

Apr 11th, 2013
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement