Advertisement
joymonkey

Teeces V3 Configurable Sketch

Feb 6th, 2012
665
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LedControl.h>
  2. #undef round
  3.  
  4. // Teeces V3 Basic Sketch
  5. // With dumbed-down easily configured options at the start,
  6. // so you can easily adjust chain order, brightness and speeds.
  7.  
  8. // Define devices here. These numbers will change depending on
  9. // what order you have everything connected in the chain.
  10. int rld1dev=0; //first LED driver on RLD
  11. int rld2dev=1; //second LED driver on RLD
  12. int rld3dev=2; //third LED driver on RLD
  13. //
  14. int psi1dev=3; //LED driver on Rear (Green/Yellow) PSI
  15. int psi2dev=4; //LED driver on Front (Red/Blue) PSI
  16. //
  17. int fld1dev=5; //LED driver on FLD 1
  18. int fld2dev=6; //LED driver on FLD 2
  19. //
  20. // Logic Display settings...
  21. int rldbright=12;  // RLD brightness (0 to 15)
  22. int fldbright=7;   // FLD brightness (0 to 15)
  23. int logicdelay=175; // adjust this number to change the speed of the logic patterns (lower is faster)
  24. //
  25. // PSI settings...
  26. int psibright=15; // PSI brightness (0 to 15)
  27. int red=2000;  // time (in milliseconds) to stay red (default is 2000)
  28. int blue=1000; // time (in milliseconds) to stay blue (default is 1000)
  29. int yellow=1000; // time (in milliseconds) to stay yellow (default is 1000)
  30. int green=2000; // time (in milliseconds) to stay green (default is 2000)
  31. //
  32. // We're done with setting numbers.
  33. // We shouldn't have to change anything below here.
  34. //
  35.  
  36. class PSI
  37. {
  38.   bool state;
  39.   unsigned long timeLast;
  40.   int delay1, delay2;
  41.   int device;
  42.  
  43.   public:
  44.  
  45.   PSI(int _delay1, int _delay2, int _device)
  46.   {
  47.     delay1=_delay1;
  48.     delay2=_delay2;
  49.     device=_device;
  50.  
  51.     state=false;
  52.     timeLast=0;
  53.   }
  54.  
  55.   void Animate(unsigned long elapsed, LedControl control)
  56.   {
  57.     if (state && (elapsed - timeLast)  < delay1) return;
  58.     if (!state && (elapsed - timeLast) < delay2) return;
  59.  
  60.     timeLast = elapsed;
  61.     state=!state;
  62.  
  63.     int cols=B11000000;
  64.     if (state) cols=B00110000;
  65.     for (int row=0; row<4; row++)
  66.       control.setRow(device,row,cols);
  67.  
  68.   }
  69. };
  70.  
  71. PSI psiFront=PSI(red, blue, psi1dev); //2000 ms on red, 1000 ms on blue.
  72. PSI psiRear =PSI(yellow, green, psi2dev); //1000 ms on yellow, 2000 ms on green.
  73. LedControl lc=LedControl(12,11,10,7);
  74.  
  75. void setup()
  76. {
  77.   for(int dev=0;dev<lc.getDeviceCount();dev++)
  78.   {
  79.     lc.shutdown(dev, false); //take the device out of shutdown (power save) mode
  80.     lc.clearDisplay(dev);
  81.   }
  82.  
  83.   lc.setIntensity(rld1dev, rldbright); //RLD
  84.   lc.setIntensity(rld2dev, rldbright); //RLD
  85.   lc.setIntensity(rld3dev, rldbright); //RLD
  86.   lc.setIntensity(fld1dev, fldbright);  //FLD
  87.   lc.setIntensity(fld2dev, fldbright);  //FLD
  88.   lc.setIntensity(psi1dev, psibright); //PSI
  89.   lc.setIntensity(psi2dev, psibright); //PSI
  90.  
  91. //  pinMode(13, OUTPUT);
  92. //  digitalWrite(13, HIGH);
  93.  
  94.   //HP lights on constant
  95.   lc.setRow(psi1dev,4,255);
  96.   lc.setRow(psi2dev,4,255);
  97.  
  98. }
  99.  
  100. void loop()
  101. {
  102.   unsigned long timeNew= millis();
  103.   psiFront.Animate(timeNew, lc);
  104.   psiRear.Animate(timeNew, lc);
  105.   animateLogic(timeNew);
  106. }
  107.  
  108. void animateLogic(unsigned long elapsed)
  109. {
  110.   static unsigned long timeLast=0;
  111.   if ((elapsed - timeLast) < logicdelay) return;
  112.   timeLast = elapsed;
  113.  
  114.   for (int row=0; row<6; row++)
  115.   {
  116.     lc.setRow(rld1dev,row,random(0,256));
  117.     lc.setRow(rld2dev,row,random(0,256));
  118.     lc.setRow(rld3dev,row,random(0,256));
  119.     lc.setRow(fld1dev,row,random(0,256));
  120.     lc.setRow(fld2dev,row,random(0,256));
  121.   }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement