Advertisement
cvalente

onefile.ino

May 24th, 2019
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.20 KB | None | 0 0
  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.     Serial.println("Reading analog inputs...");
  99.  
  100.     // Read Input - Analog Pins
  101.     for (int i = 0; i < NUM_FADERS; i++) {
  102.         faderValues[i] = analogRead8(i);
  103.  
  104.         Serial.print(i);
  105.         Serial.print(": ");
  106.         Serial.println(faderValues[i]);
  107.     }
  108.  
  109.     Serial.println("Reading digital inputs...");
  110.  
  111.     // Read Input - Digital Pins INPUT
  112.     store = digitalRead(digitalInputs[0]);
  113.     back  = digitalRead(digitalInputs[1]);
  114.     go    = digitalRead(digitalInputs[2]);
  115.  
  116.     Serial.print("Store: "); Serial.println(store);
  117.     Serial.print("Back: ");  Serial.println(back);
  118.     Serial.print("Go: ");    Serial.println(go);
  119. }
  120.  
  121. void write_to_leds(){
  122.     // writes values to PWM digital
  123.     // LEDS have opposite direction to inputs
  124.     for (int i = 0; i < NUM_FADERS; i++) {
  125.         digitalWrite(digitalOutputsPWM[NUM_FADERS - (i + 1) ], values[i]);
  126.     }
  127. }
  128.  
  129. uint8_t check_mode(){
  130.     // reads mode selection input
  131.     return 0;
  132. }
  133.  
  134. void loop_execute(uint8_t called_mode){
  135.     switch (state) {
  136.  
  137.         case MODE_1:
  138.             // Fader is value
  139.             Serial.println("Mode 1");
  140.  
  141.             // calculate values to pass, mind order
  142.             for (int i = 0; i < NUM_LIGHTS; i++) {
  143.                 values[i] = cap(faderValues[i], faderValues[NUM_FADERS - 1]);
  144.             }
  145.             values[NUM_FADERS - 1] = faderValues[NUM_FADERS - 1];
  146.  
  147.         break;
  148.  
  149.         case MODE_2:
  150.             // Record
  151.             Serial.println("Mode 2");
  152.         break;
  153.  
  154.         case MODE_3:
  155.             // Playback
  156.             Serial.println("Mode 3");
  157.         break;
  158.     }
  159.     write_to_leds();            // pass the values here
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement