GyroGearloose

FastLED & BT

Sep 20th, 2015
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.28 KB | None | 0 0
  1. #include <SoftwareSerial.h>                  // ** BT-Version +++++++++++++++++++++++++++++++++++++
  2. #include <FastLED.h>
  3.  
  4. //---LED SETUP STUFF      
  5. #define LED_COUNT 64
  6. #define DATA_PIN  6
  7. #define CLOCK_PIN 8
  8.  
  9. //....
  10.  
  11. // HardwareSerial-Setup:
  12. #define btSerial Serial2    // pin 9, 10 for BT-Module
  13. /*
  14. //---SOFTWARE SERIAL SETUP STUFF
  15. // you also could use Serial1 on Teensy
  16. #define SERIAL_BAUDRATE 57600
  17. #define SERIAL_TIMEOUT 5
  18. #define SOFT_RX_PIN 10         // BTCHIP-TX -> NANO-SOFT-RX (2)  Yellow with SeedStudio
  19. #define SOFT_TX_PIN 11         // BTCHIP-RX -> NANO-SOFT-TX (3)  White
  20. // UNO: 2, 3 also works (not all pins support SoftwareSerial
  21. */
  22. SoftwareSerial btSerial(SOFT_RX_PIN, SOFT_TX_PIN);            // ** BT-Version +++++++++++++++++++++++++++++++++++++
  23. int btBOOL = 0;              //-ACTIVATE BLUETOOTH OR NOT
  24. byte inbyte;                 //-SERIAL INPUT BYTE
  25. int thisarg;                 //-SERIAL INPUT ARG
  26.  
  27. // LED variables ....
  28.  
  29.  
  30. void setup()  
  31. {
  32.  
  33.   Serial.begin(SERIAL_BAUDRATE);      // SETUP HARDWARE SERIAL (USB)
  34.   Serial.setTimeout(SERIAL_TIMEOUT);
  35.  
  36.   Serial2.begin(SERIAL_BAUDRATE);    // SETUP SOFTWARE SERIAL (USB)
  37.   Serial2.setTimeout(SERIAL_TIMEOUT);
  38. /* //SoftwareSerial
  39.   btSerial.begin(SERIAL_BAUDRATE);    // SETUP SOFTWARE SERIAL (USB)
  40.   btSerial.setTimeout(SERIAL_TIMEOUT);
  41. */
  42.   setupBlueToothConnection();
  43.  
  44.   LEDS.setBrightness(max_bright);
  45.   FastLED.addLeds<APA102,DATA_PIN,CLOCK_PIN, GBR>(leds, LED_COUNT);
  46.   ....
  47.   }
  48.  
  49. //------------------MAIN LOOP------------------
  50. void loop() {
  51.  
  52.   if (ledMode != 999) {
  53.  
  54.      switch (ledMode) {
  55.       case  2: rainbow_fade(); break;
  56.       case  3: rainbow_loop(); break;
  57.       case  4: random_burst(); break;
  58.       case  5: color_bounce(); break;
  59.       case  6: color_bounceFADE(); break;
  60.       case  7: ems_lightsONE(); break;
  61.       case  8: ems_lightsALL(); break;
  62. //      case  9: flicker(); break;
  63.       case  9: bpm(); break;
  64.       case 10: pulse_one_color_all(); break;
  65.       case 11: pulse_one_color_all_rev(); break;
  66.       case 12: fade_vertical(); break;
  67.       case 13: rule30(); break;
  68.       case 14: random_march(); break;
  69.       case 15: rwb_march(); break;
  70.       case 16: radiation(); break;
  71.       case 17: color_loop_vardelay(); break;
  72.       case 18: white_temps(); break;
  73.       case 19: sin_bright_wave(); break;
  74. //      case 20: pop_horizontal(); break;
  75.       case 20: wave_fx(); break;
  76.       case 21: quad_bright_curve(); break;
  77.       case 22: flame(); break;
  78.       case 23: rainbow_vertical(); break;
  79. //     case 24: pacman(); break;
  80.       case 24: juggle(); break;
  81.       case 25: random_color_pop(); break;
  82. //      case 26: ems_lightsSTROBE(); break;
  83.       case 26: sinelon(); break;
  84.       case 27: rgb_propeller(); break;
  85.       case 28: kitt(); break;
  86. //      case 29: matrix(); break;      
  87. //      case 29: demo_modeB(); break;      
  88.       case 29: demo_modeA(); break;      
  89.  
  90.       case 30: rainbow(); break;  // new effects
  91.       case 31: rainbowWithGlitter(); break;
  92.       case 32: confetti(); break;
  93.       case 33: sinelon(); break;
  94.       case 34: juggle(); break;
  95.       case 35: bpm(); break;
  96.  
  97.       case 50: strip_march_ccw(); break;
  98.       case 51: strip_march_cw(); break;  
  99.       case 88: new_rainbow_loop(); break;
  100.       case 888: demo_modeA(); break;
  101.       case 889: demo_modeB(); break;      
  102.     }
  103.   }
  104.  
  105.  
  106.   //---PROCESS HARDWARE SERIAL COMMANDS AND ARGS
  107.   while (Serial.available() > 0) {inbyte = Serial.read();
  108.     switch(inbyte) {
  109.     case 59: break; //---BREAK IF INBYTE = ';'
  110.   case 108:      //---"l" - SET SINGLE LED VALUE
  111.       thisindex = Serial.parseInt();
  112.       thisRED = Serial.parseInt();
  113.       thisGRN = Serial.parseInt();
  114.       thisBLU = Serial.parseInt();      
  115.       if (ledMode != 999) {
  116.         ledMode = 999;
  117.         one_color_all(0,0,0);}
  118.       leds[thisindex].setRGB( thisRED, thisGRN, thisBLU);
  119.       show_at_max_brightness_for_power();
  120.       break;
  121.  
  122.     case 118:      //---"v" - SET SINGLE LED VALUE HSV
  123.       thisindex = Serial.parseInt();
  124.       thishue = Serial.parseInt();
  125.       thissat = Serial.parseInt();
  126.       //thisVAL = Serial.parseInt();      
  127.       if (ledMode != 999) {
  128.         ledMode = 999;
  129.         one_color_all(0,0,0);}
  130.       leds[thisindex] = CHSV(thishue, thissat, 255);
  131.       break;      
  132.  
  133.     case 100:      //---"d" - SET DELAY VAR
  134.       thisarg = Serial.parseInt();
  135.       thisdelay = thisarg;
  136.       break;
  137.     case 115:      //---"s" - SET STEP VAR
  138.       thisarg = Serial.parseInt();
  139.       thisstep = thisarg;
  140.       break;
  141.     case 104:      //---"h" - SET HUE VAR
  142.       thisarg = Serial.parseInt();
  143.       thishue = thisarg;
  144.       break;
  145.     case 116:      //---"t" - SET SATURATION VAR
  146.       thisarg = Serial.parseInt();
  147.       thissat = thisarg;
  148.       break;
  149.     case 98:      //---"b" - SET MAX BRIGHTNESS
  150.       max_bright = Serial.parseInt();
  151.       LEDS.setBrightness(max_bright);
  152.       break;      
  153.     case 109:      //---"m" - SET MODE
  154.       thisarg = Serial.parseInt();      
  155.       change_mode(thisarg);
  156.       break;
  157.  
  158.     case 97:      //---"a" - SET ALL TO ONE COLOR BY HSV 0-255
  159.       thisarg = Serial.parseInt();
  160.       one_color_allHSV(thisarg);
  161.       break;
  162.     case 122:      //---"z" - COMMAND TO 'SHOW' LEDS
  163.       show_at_max_brightness_for_power();
  164.       break;
  165.     case 81:      //---"Q" - COMMAND RETURN VERSION NUMBER
  166.       Serial.print(VERSION_NUMBER);
  167.       break;
  168.     }
  169.   }
  170. // }  // end here w/o BT
  171.  
  172.   //---PROCESS SOFTWARE SERIAL COMMANDS AND ARGS                   // ** BT-Version +++++++++++++++++++++++++++++++++++++
  173.   while (btSerial.available() > 0) {
  174.     inbyte = btSerial.read();
  175. //    if (btSerial.overflow()){Serial.println("SoftwareSerial overflow!");}
  176.     switch(inbyte) {
  177.     case 59: break; //---BREAK IF INBYTE = ';'
  178.     case 108:      //---"l" - SET SINGLE LED VALUE
  179.       thisindex = btSerial.parseInt();
  180.       thisRED = btSerial.parseInt();
  181.       thisGRN = btSerial.parseInt();
  182.       thisBLU = btSerial.parseInt();      
  183.       if (ledMode != 999) {
  184.         ledMode = 999;
  185.         one_color_all(0,0,0);}        
  186.       leds[thisindex].setRGB( thisRED, thisGRN, thisBLU);
  187.       break;
  188.     case 100:      //---"d" - SET DELAY VAR
  189.       thisarg = btSerial.parseInt();
  190.       thisdelay = thisarg;
  191.       break;
  192.     case 115:      //---"s" - SET STEP VAR
  193.       thisarg = btSerial.parseInt();
  194.       thisstep = thisarg;
  195.       break;
  196.     case 104:      //---"h" - SET HUE VAR
  197.       thisarg = btSerial.parseInt();
  198.       thishue = thisarg;
  199.       break;
  200.     case 116:      //---"t" - SET SATURATION VAR
  201.       thisarg = btSerial.parseInt();
  202.       thissat = thisarg;
  203.       break;
  204.     case 98:      //---"b" - SET MAX BRIGHTNESS
  205.       max_bright = btSerial.parseInt();
  206.       LEDS.setBrightness(max_bright);
  207.       break;      
  208.     case 109:      //---"m" - SET MODE
  209.       thisarg = btSerial.parseInt();      
  210.       change_mode(thisarg);
  211.       break;
  212.     case 99:      //---"c" - CLEAR STRIP
  213.       one_color_all(0,0,0);
  214.       break;
  215.     case 97:      //---"a" - SET ALL TO ONE COLOR BY HSV 0-255
  216.       thisarg = btSerial.parseInt();
  217.       one_color_allHSV(thisarg);
  218.       break;
  219.     case 122:      //---"z" - COMMAND TO 'SHOW' LEDS
  220.       show_at_max_brightness_for_power();
  221.       break;        
  222.     }
  223.   }
  224.  
  225. }
  226.  
  227.  
  228.                   // ** BT-Version +++++++++++++++++++++++++++++++++++++
  229. //__________________________________________________________________________________
  230. // This section was used from my BT_Slave Sketch. It initializes the BT-Device
  231. void setupBlueToothConnection()
  232. {
  233.   btSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
  234.   btSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
  235.   btSerial.print("\r\n+STNA=IsisWings\r\n"); //set the bluetooth name as "IsisWings"
  236.   btSerial.print("\r\n+STPIN=0000\r\n");//Set SLAVE pincode"0000"
  237.   btSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
  238.   btSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
  239.   delay(2000); // This delay is required.
  240.   btSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable
  241.   Serial.println("The slave bluetooth is inquirable!");
  242.   Serial.println("PIN 0000");
  243.   Serial.println("38400 Baud");
  244.   delay(2000); // This delay is required.
  245.   btSerial.flush();
  246. }
Add Comment
Please, Sign In to add comment