56 lines
1.9 KiB
C++
56 lines
1.9 KiB
C++
/*********************************** TUNNEL ***********************************\
|
|
|
|
|
| Modified By: S. Dugre to use asynchronous timer
|
|
\******************************************************************************/
|
|
|
|
|
|
int color1[] = {R,R,R,R,B,B,B,B};
|
|
int bright1[] = {2,4,6,8,2,4,6,8};
|
|
int color2[] = {B,B,B,B,R,R,R,R};
|
|
int bright2[] = {8,6,4,2,8,6,4,2};
|
|
int index[] = {0,1,2,3,4,5,6,7};
|
|
//int animationSpeed =100;
|
|
|
|
void tunnel() {
|
|
|
|
if (currentState != lastState) {
|
|
|
|
lastState = currentState;
|
|
Serial.print("New State = ");
|
|
Serial.println(currentState);
|
|
|
|
currentTimer = 0;
|
|
maxTimer = 6250; // 100ms (100,000 us / 16 us)
|
|
}
|
|
|
|
|
|
if ( timerReset) {
|
|
drawBoxWalls(color1[index[0]],bright1[index[0]],1,1,0,2,2,0);
|
|
drawBoxWalls(color2[index[0]],bright2[index[0]],1,1,0,2,2,0);
|
|
drawBoxWalls(color1[index[1]],bright1[index[1]],1,1,1,2,2,1);
|
|
drawBoxWalls(color2[index[1]],bright2[index[1]],1,1,1,2,2,1);
|
|
drawBoxWalls(color1[index[2]],bright1[index[2]],1,1,2,2,2,2);
|
|
drawBoxWalls(color2[index[2]],bright2[index[2]],1,1,2,2,2,2);
|
|
drawBoxWalls(color1[index[3]],bright1[index[3]],1,1,3,2,2,3);
|
|
drawBoxWalls(color2[index[3]],bright2[index[3]],1,1,3,2,2,3);
|
|
|
|
drawBoxWalls(color1[index[4]],bright1[index[4]],0,0,3,3,3,3);
|
|
drawBoxWalls(color2[index[4]],bright2[index[4]],0,0,3,3,3,3);
|
|
drawBoxWalls(color1[index[5]],bright1[index[5]],0,0,2,3,3,2);
|
|
drawBoxWalls(color2[index[5]],bright2[index[5]],0,0,2,3,3,2);
|
|
drawBoxWalls(color1[index[6]],bright1[index[6]],0,0,1,3,3,1);
|
|
drawBoxWalls(color2[index[6]],bright2[index[6]],0,0,1,3,3,1);
|
|
drawBoxWalls(color1[index[7]],bright1[index[7]],0,0,0,3,3,0);
|
|
drawBoxWalls(color2[index[7]],bright2[index[7]],0,0,0,3,3,0);
|
|
|
|
|
|
flushBuffer();
|
|
clearBuffer();
|
|
for (int i = 0; i < 8; i++){
|
|
//index[i] = index[i]==7?0:index[i]+1;
|
|
index[i] = (index[i]+1)%8;
|
|
}
|
|
timerReset = false;
|
|
|
|
}
|
|
}
|