Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <FastLED.h>
- #define LED_PIN 7
- #define NUM_LEDS 100
- CRGB leds[NUM_LEDS];
- String inputString = "";
- bool stringComplete = false;
- char inChar = ' ';
- int phase = 0;
- void setup() {
- pinMode(13, OUTPUT);
- pinMode(9, OUTPUT);
- Serial.begin(250000);
- FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
- for (int l = 0; l < NUM_LEDS; l++) {
- leds[l] = CRGB(100, 0, 0);
- }
- FastLED.show();
- inputString.reserve(200);
- }
- void loop() {
- if (phase == 0) {
- if (inChar == 'a') {
- phase = 1;
- return;
- }
- digitalWrite(13, HIGH);
- delay(100);
- digitalWrite(13, LOW);
- delay(100);
- }
- if (phase == 1) {
- Serial.write('b');
- phase = 2;
- }
- if (phase == 2) {
- if (inChar == 'c') {
- Serial.write('d');
- digitalWrite(13, HIGH);
- phase = 3;
- return;
- }
- digitalWrite(13, HIGH);
- delay(50);
- digitalWrite(13, LOW);
- delay(50);
- }
- if (phase == 3) {
- if (stringComplete) {
- int red = 0, green = 0, blue = 0;
- int off = 0;
- for (int l = 0; l < NUM_LEDS; l += 2) {
- red = unhex(inputString.charAt(off), inputString.charAt(off + 1));
- green = unhex(inputString.charAt(off + 2), inputString.charAt(off + 3));
- blue = unhex(inputString.charAt(off + 4), inputString.charAt(off + 5));
- leds[l] = leds[l + 1] = CRGB(red, green, blue);
- off += 6;
- }
- FastLED.show();
- Serial.println(inputString);
- inputString = "";
- stringComplete = false;
- }
- }
- }
- int unhex(char a, char b) {
- int result = 0;
- int ai = (int) a, bi = (int) b;
- if (ai >= 48 && ai <= 57) result = (ai - 48) * 16;
- else if (ai >= 65 && ai <= 70) result = (ai - 55) * 16;
- if (bi >= 48 && bi <= 57) result += (bi - 48);
- else if (bi >= 65 && bi <= 70) result += (bi - 55);
- return result;
- }
- void serialEvent() {
- while (Serial.available()) {
- inChar = (char)Serial.read();
- inputString += inChar;
- if (inChar == 'x') {
- stringComplete = true;
- Serial.println("Recieved!");
- }
- }
- digitalWrite(9, HIGH);
- delay(100);
- digitalWrite(9, LOW);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement