View difference between Paste ID: xARDTjWY and 56Vps4UE
SHOW: | | - or go back to the newest paste.
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 dev=0; dev<5; dev++)
114+
  for (int row=0; row<6; row++)
115-
    for (int row=0; row<6; row++)
115+
116-
      lc.setRow(rld1dev,row,random(0,256));
116+
    lc.setRow(rld1dev,row,random(0,256)); 
117-
    for (int row=0; row<6; row++)  
117+
    lc.setRow(rld2dev,row,random(0,256)); 
118-
      lc.setRow(rld2dev,row,random(0,256));
118+
    lc.setRow(rld3dev,row,random(0,256)); 
119-
    for (int row=0; row<6; row++)  
119+
    lc.setRow(fld1dev,row,random(0,256)); 
120-
      lc.setRow(rld3dev,row,random(0,256));
120+
    lc.setRow(fld2dev,row,random(0,256));
121-
    for (int row=0; row<6; row++)  
121+
122-
      lc.setRow(fld1dev,row,random(0,256));
122+