Advertisement
cvalente

unique-plotter.ino

May 24th, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Gen */
  2.  
  3. #define BYTE_INV 0.003921568627
  4.  
  5. /* Gen - SW Debounce */
  6. #define DEBOUNCE_TIME 200
  7. #define WARM_UP_TIME  500
  8. #define STORE_TIME    3000
  9.  
  10. /* Serial */
  11. #define SERIAL_BAUD 115200
  12.  
  13. /* EEPROM */
  14. #include <Wire.h>
  15. #define disk1 0x50          // !! check for mega
  16. #define EEPROM_ADDRESS 0
  17.  
  18. /* Project */
  19. #define NUM_LIGHTS 10
  20. #define NUM_FADERS 11
  21.  
  22. /* Gen - State Machine */
  23. enum states {MODE_1, MODE_2, MODE_3};
  24. uint8_t state = MODE_1;
  25.  
  26. /* Gen - Lighting States */
  27. uint8_t currentCue[NUM_FADERS];   // numLights + cue fade time
  28. uint8_t previousCue[NUM_FADERS];
  29. uint8_t nextCue[NUM_FADERS];
  30. uint8_t currentLighting[NUM_LIGHTS];
  31.  
  32. /* Gen - Pin Assignments */
  33. uint8_t analogInputs[]      {A8, A6, A5, A4, A3, A2, A1, A0, A7, A9, A10}; // Faders, last is master
  34. uint8_t digitalInputs[]     {40, 52, 53};                                  // store, back, go
  35. uint8_t digitalOutputsPWM[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};          // channel indicator LED, first is master
  36. uint8_t digitalOutputs[]    {22, 23, 24, 25, 26, 27, 28, 29, 30, 31};      // cue indicator LED,
  37.  
  38. /* Gen - Pin Values */
  39. uint8_t store, back, go;
  40. uint8_t faderValues[NUM_FADERS];
  41. uint8_t values[NUM_FADERS];
  42.  
  43.  
  44. inline uint8_t analogRead8(uint8_t pin){
  45.     return max(1, analogRead(pin) >> 2);
  46. }
  47.  
  48. inline uint8_t cap(uint8_t value, uint8_t master){
  49.     return (value * 255 / master);
  50. }
  51.  
  52. void setup(){
  53.  
  54.     /* Pin Assignments
  55.      * Pin Name is MEGA name, the long way
  56.      */
  57.    
  58.     int arraySize;
  59.  
  60.     // Pin Assignments - Analog Pins
  61.     arraySize = sizeof(analogInputs) / sizeof(analogInputs[0]);
  62.     for (int i = 0; i < arraySize; i++) {
  63.         pinMode(analogInputs[i], INPUT);
  64.     }
  65.  
  66.     // Pin Assignments - Digital Pins INPUT
  67.     arraySize = sizeof(digitalInputs) / sizeof(digitalInputs[0]);
  68.     for (int i = 0; i < arraySize; i++) {
  69.         pinMode(digitalInputs[i], INPUT);
  70.     }
  71.  
  72.     // Pin Assignments - Digital Pins PWM OUTPUT
  73.     arraySize = sizeof(digitalOutputsPWM) / sizeof(digitalOutputsPWM[0]);
  74.     for (int i = 0; i < arraySize; i++) {
  75.         pinMode(digitalOutputsPWM[i], OUTPUT);
  76.     }
  77.  
  78.     // Pin Assignments - Digital Pins OUTPUT
  79.     arraySize = sizeof(digitalOutputs) / sizeof(digitalOutputs[0]);
  80.     for (int i = 0; i < arraySize; i++) {
  81.         pinMode(digitalOutputs[i], OUTPUT);
  82.     }
  83.  
  84.     // Serial setup
  85.     Serial.begin(115200);
  86.  
  87. }
  88.  
  89. void loop(){
  90.     read_inputs();                  // this should only happen if needed
  91.     loop_execute( check_mode() );
  92.  
  93. }
  94.  
  95. void read_inputs(){
  96.     // reads declared inputs
  97.  
  98.  
  99.     // Read Input - Analog Pins
  100.     for (int i = 0; i < NUM_FADERS; i++) {
  101.         faderValues[i] = analogRead8(i);
  102.  
  103.         Serial.print(faderValues[i]);
  104.         Serial.print("\t");
  105.     }
  106.  
  107.  
  108.     // Read Input - Digital Pins INPUT
  109.     store = digitalRead(digitalInputs[0]);
  110.     back  = digitalRead(digitalInputs[1]);
  111.     go    = digitalRead(digitalInputs[2]);
  112.  
  113.     Serial.print(store); Serial.print("\t");
  114.     Serial.print(back); Serial.print("\t");
  115.     Serial.println(go);
  116. }
  117.  
  118. void write_to_leds(){
  119.     // writes values to PWM digital
  120.     // LEDS have opposite direction to inputs
  121.     for (int i = 0; i < NUM_FADERS; i++) {
  122.         digitalWrite(digitalOutputsPWM[NUM_FADERS - (i + 1) ], values[i]);
  123.     }
  124. }
  125.  
  126. uint8_t check_mode(){
  127.     // reads mode selection input
  128.     return 0;
  129. }
  130.  
  131. void loop_execute(uint8_t called_mode){
  132.     switch (state) {
  133.  
  134.         case MODE_1:
  135.             // Fader is value
  136.  
  137.             // calculate values to pass, mind order
  138.             for (int i = 0; i < NUM_LIGHTS; i++) {
  139.                 values[i] = cap(faderValues[i], faderValues[NUM_FADERS - 1]);
  140.             }
  141.             values[NUM_FADERS - 1] = faderValues[NUM_FADERS - 1];
  142.  
  143.         break;
  144.  
  145.         case MODE_2:
  146.             // Record
  147.  
  148.         break;
  149.  
  150.         case MODE_3:
  151.             // Playback
  152.         break;
  153.     }
  154.     write_to_leds();            // pass the values here
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement