Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #include "FastLED.h"
- #include <Wire.h>
- #define RX_PIN 2
- #define TX_PIN 3
- #define DATA_PIN 5
- #define NUM_LEDS 50
- CRGB leds[NUM_LEDS];
- SoftwareSerial mySerial(RX_PIN, TX_PIN); // RX, TX
- char c,d;
- byte divider, indicator;
- void setup() {
- FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
- // Turn on default colour (warm white)
- setAllColour(30,192,255);
- FastLED.setBrightness(0); FastLED.show();
- for (byte i = 0 ; i < 255; i++) {
- FastLED.setBrightness(i); FastLED.show();
- delay(5);
- }
- Serial.begin(9600);
- mySerial.begin(9600);
- }
- void loop() {
- // delay(10);
- if (mySerial.available()){
- d=mySerial.read();
- delay(10);
- switch (d) {
- case '1':
- Serial.write("Warm White\n");
- mySerial.write("Warm White\n");
- setAllColour(30,192,255);
- break;
- case '2':
- Serial.write("Cold White\n");
- mySerial.write("Cold White\n");
- setAllColour(164,32,255);
- break;
- case '3':
- Serial.write("Random\n");
- mySerial.write("Random\n");
- setAllColour(random8(),255,255);
- break;
- case '4':
- Serial.write("None\n");
- mySerial.write("None\n");
- break;
- case '5':
- Serial.write("None\n");
- mySerial.write("None\n");
- break;
- case '6':
- Serial.write("None\n");
- mySerial.write("None\n");
- break;
- case '7':
- Serial.write("Cyclone\n");
- mySerial.write("Cyclone\n");
- while (true) {
- FastLED.setBrightness(255); FastLED.show();
- for (byte i = 0; i < NUM_LEDS; i++) {
- leds[i] = CRGB::Red;
- leds[i - 1] = CHSV(0,255,128);
- leds[i - 2] = CHSV(0,255,96);
- leds[i - 3] = CHSV(0,255,64);
- leds[i - 4] = CHSV(0,255,32);
- leds[i - 5] = CHSV(0,255,16);
- leds[i - 6] = CHSV(0,255,8);
- FastLED.show();
- leds[i] = CRGB::Black;
- leds[i - 1] = CRGB::Black;
- leds[i - 2] = CRGB::Black;
- leds[i - 4] = CRGB::Black;
- leds[i - 5] = CRGB::Black;
- leds[i - 6] = CRGB::Black;
- delay(10);
- if (mySerial.read() == '7') {
- mySerial.write("Cyclone Stop\n");
- asm volatile (" jmp 0");
- }
- }
- for (byte i = NUM_LEDS; i > 0; i--) {
- leds[i] = CRGB::Red;
- leds[i + 1] = CHSV(0,255,128);
- leds[i + 2] = CHSV(0,255,96);
- leds[i + 3] = CHSV(0,255,64);
- leds[i + 4] = CHSV(0,255,32);
- leds[i + 5] = CHSV(0,255,16);
- leds[i + 6] = CHSV(0,255,8);
- FastLED.show();
- leds[i] = CRGB::Black;
- leds[i + 1] = CRGB::Black;
- leds[i + 2] = CRGB::Black;
- leds[i + 4] = CRGB::Black;
- leds[i + 5] = CRGB::Black;
- leds[i + 6] = CRGB::Black;
- delay(10);
- if (mySerial.read() == '7') {
- mySerial.write("Cyclone Stop\n");
- asm volatile (" jmp 0");
- }
- }
- FastLED.setBrightness(0);FastLED.show();
- delay(250);
- }
- break;
- case '8':
- Serial.write("Rainbow running ... (Press again to stop)\n");
- mySerial.write("Rainbow running ...(Press again to stop)\n");
- FastLED.setBrightness(255); FastLED.show();
- indicator = 0;
- divider = 255 / NUM_LEDS;
- delay(10);
- //while (!mySerial.available()) {
- while (true) {
- for (byte i = 0; i < NUM_LEDS; i++) {
- leds[i] = CHSV((indicator * divider),255,255);
- indicator++;
- }
- FastLED.show();
- delay(80);
- if (mySerial.read() == '8') {
- mySerial.write("Rainbow Stop\n");
- break;
- }
- }
- break;
- case '9':
- Serial.write("Fading off\n");
- mySerial.write("Fading off\n");
- if (FastLED.getBrightness() > 0) {
- for (byte i = 255; i > 0; i--) {
- FastLED.setBrightness(i); FastLED.show();
- delay(5);
- }
- }
- break;
- }
- }
- }
- void setAllColour(byte hue, byte sat, byte val){
- FastLED.setBrightness(255); FastLED.show();
- for (byte i = 0; i < NUM_LEDS; i++) {
- leds[i] = CHSV(hue,sat,val);
- }
- FastLED.show();
- }
Advertisement
Add Comment
Please, Sign In to add comment