Advertisement
ItsNoah

ArduinoController

Dec 15th, 2021
1,101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.16 KB | None | 0 0
  1. #include <FastLED.h>
  2. #define LED_PIN     7
  3. #define NUM_LEDS    100
  4.  
  5. CRGB leds[NUM_LEDS];
  6.  
  7. String inputString = "";
  8. bool stringComplete = false;
  9. char inChar = ' ';
  10.  
  11. int phase = 0;
  12.  
  13. void setup() {
  14.   pinMode(13, OUTPUT);
  15.   pinMode(9, OUTPUT);
  16.   Serial.begin(250000);
  17.   FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS);
  18.  
  19.   for (int l = 0; l < NUM_LEDS; l++) {
  20.     leds[l] = CRGB(100, 0, 0);
  21.   }
  22.   FastLED.show();
  23.  
  24.   inputString.reserve(200);
  25. }
  26.  
  27. void loop() {
  28.   if (phase == 0) {
  29.     if (inChar == 'a') {
  30.       phase = 1;
  31.       return;
  32.     }
  33.     digitalWrite(13, HIGH);
  34.     delay(100);
  35.     digitalWrite(13, LOW);
  36.     delay(100);
  37.   }
  38.   if (phase == 1) {
  39.     Serial.write('b');
  40.     phase = 2;
  41.   }
  42.   if (phase == 2) {
  43.     if (inChar == 'c') {
  44.       Serial.write('d');
  45.       digitalWrite(13, HIGH);
  46.       phase = 3;
  47.       return;
  48.     }
  49.     digitalWrite(13, HIGH);
  50.     delay(50);
  51.     digitalWrite(13, LOW);
  52.     delay(50);
  53.   }
  54.   if (phase == 3) {
  55.     if (stringComplete) {
  56.       int red = 0, green = 0, blue = 0;
  57.       int off = 0;
  58.       for (int l = 0; l < NUM_LEDS; l += 2) {
  59.         red = unhex(inputString.charAt(off), inputString.charAt(off + 1));
  60.         green = unhex(inputString.charAt(off + 2), inputString.charAt(off + 3));
  61.         blue = unhex(inputString.charAt(off + 4), inputString.charAt(off + 5));
  62.         leds[l] = leds[l + 1] = CRGB(red, green, blue);
  63.         off += 6;
  64.       }
  65.  
  66.       FastLED.show();
  67.       Serial.println(inputString);
  68.       inputString = "";
  69.       stringComplete = false;
  70.     }
  71.   }
  72.  
  73. }
  74.  
  75. int unhex(char a, char b) {
  76.   int result = 0;
  77.   int ai = (int) a, bi = (int) b;
  78.  
  79.   if (ai >= 48 && ai <= 57) result = (ai - 48) * 16;
  80.   else if (ai >= 65 && ai <= 70) result = (ai - 55) * 16;
  81.  
  82.   if (bi >= 48 && bi <= 57) result += (bi - 48);
  83.   else if (bi >= 65 && bi <= 70) result += (bi - 55);
  84.  
  85.   return result;
  86. }
  87.  
  88. void serialEvent() {
  89.   while (Serial.available()) {
  90.     inChar = (char)Serial.read();
  91.     inputString += inChar;
  92.     if (inChar == 'x') {
  93.       stringComplete = true;
  94.       Serial.println("Recieved!");
  95.     }
  96.   }
  97.   digitalWrite(9, HIGH);
  98.   delay(100);
  99.   digitalWrite(9, LOW);
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement