//Chaser_Charlieplexing_30LED_AtTiny85 6 GPIO Pins incl reset pin6
#define A 0
#define B 1
#define C 2
#define D 3
#define E 4
#define F 5
#define PIN_CONFIG 0
#define PIN_STATE 1
#define LED_Num 30
int matrix[LED_Num][5][6] = {
// PIN_CONFIG PIN_STATE
// PB0 PB1 PB2 PB3 PB4 PB5 PB0 PB1 PB2 PB3 PB4 PB5
// A B C D E F A B C D E F
// LED1 HIGH
{ { OUTPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT }, { LOW, HIGH, LOW, LOW, LOW, LOW } },
// LED2 HIGH
{ { OUTPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT }, { LOW, LOW, HIGH, LOW, LOW, LOW } },
// LED3 HIGH
{ { OUTPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT }, { LOW, LOW, LOW, HIGH, LOW, LOW } },
// LED4 HIGH
{ { OUTPUT, INPUT, INPUT, INPUT, OUTPUT, INPUT }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
// LED5 HIGH
{ { OUTPUT, INPUT, INPUT, INPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, LOW, LOW, HIGH } },
//LED6 HIGH
{ { INPUT, OUTPUT, INPUT, INPUT, INPUT, INPUT }, { HIGH, LOW, LOW, LOW, LOW, LOW } },
// LED 7 HIGH
{ { INPUT, OUTPUT, OUTPUT, INPUT, INPUT,INPUT }, { LOW, LOW, HIGH, LOW, LOW, LOW } },
//LED8 HIGH
{ { INPUT, OUTPUT,INPUT, OUTPUT, INPUT, INPUT }, { LOW, LOW, LOW, HIGH, LOW, LOW } },
//LED9 HIGH
{ { INPUT,OUTPUT, INPUT, INPUT, OUTPUT, INPUT }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
//LED10 HIGH
{ { INPUT, OUTPUT, INPUT, INPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, LOW, LOW, HIGH } },
//LED11 HIGH
{ { OUTPUT, INPUT, OUTPUT, INPUT, INPUT, INPUT }, { HIGH, LOW, LOW, LOW, LOW, LOW } },
//LED12 HIGH
{ { INPUT, OUTPUT, OUTPUT, INPUT, INPUT, INPUT }, { LOW, HIGH, LOW, LOW, LOW, LOW } },
// LED13 HIGH
{ { INPUT, INPUT, OUTPUT, OUTPUT, INPUT, INPUT }, { LOW, LOW, LOW, HIGH, LOW, LOW } },
// LED14 HIGH
{ { INPUT, INPUT, OUTPUT, INPUT, OUTPUT, INPUT, }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
// LED15 HIGH
{ { INPUT, INPUT, OUTPUT, INPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, LOW, LOW, HIGH } },
// LED16 HIGH
{ { OUTPUT, INPUT, INPUT, OUTPUT, INPUT, INPUT }, { HIGH, LOW, LOW, LOW, LOW, LOW } },
// LED17 HIGH
{ { INPUT, OUTPUT, INPUT, OUTPUT, INPUT, INPUT }, { LOW, HIGH, LOW, LOW, LOW, LOW } },
//LED18 HIGH
{ { INPUT, INPUT, OUTPUT, OUTPUT, INPUT, INPUT }, { LOW, LOW, HIGH, LOW, LOW, LOW } },
// LED 19 HIGH
{ { INPUT, INPUT, INPUT, OUTPUT, OUTPUT,INPUT }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
//LED20 HIGH
{ { INPUT, INPUT,INPUT, OUTPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, LOW, LOW, HIGH } },
//LED21HIGH
{ { OUTPUT,INPUT, INPUT, INPUT, OUTPUT, INPUT }, { HIGH, LOW, LOW, LOW, LOW, LOW } },
//LED22 HIGH
{ { INPUT, OUTPUT, INPUT, INPUT, OUTPUT, INPUT }, { LOW, HIGH, LOW, LOW, LOW, LOW } },
//LED23 HIGH
{ { INPUT, INPUT, OUTPUT, INPUT, OUTPUT, INPUT }, { LOW, LOW, HIGH, LOW, LOW, LOW } },
//LED24 HIGH
{ { INPUT, INPUT, INPUT, OUTPUT, OUTPUT, INPUT }, { LOW, LOW, LOW, HIGH, LOW, LOW } },
//LED25 HIGH
{ { INPUT, INPUT,INPUT, INPUT, OUTPUT, OUTPUT }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
//LED26HIGH
{ { OUTPUT,INPUT, INPUT, INPUT, INPUT, OUTPUT }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
//LED27 HIGH
{ { INPUT, OUTPUT, INPUT, INPUT, INPUT, OUTPUT }, { HIGH, LOW, LOW, LOW, LOW, LOW } },
//LED28 HIGH
{ { INPUT, INPUT, OUTPUT, INPUT, INPUT, OUTPUT }, { HIGH, LOW, LOW, LOW, LOW, LOW } },
//LED29 HIGH
{ { INPUT, INPUT, INPUT, OUTPUT, INPUT, OUTPUT }, { LOW, HIGH, LOW, LOW, LOW, LOW } },
//LED30 HIGH
{ { INPUT, INPUT, INPUT, INPUT, OUTPUT, OUTPUT }, { LOW, LOW, LOW, LOW, HIGH, LOW } },
};
void lightOn( int led ) {
pinMode( A, matrix[led][PIN_CONFIG][0] );
pinMode( B, matrix[led][PIN_CONFIG][1] );
pinMode( C, matrix[led][PIN_CONFIG][2] );
pinMode( D, matrix[led][PIN_CONFIG][3] );
pinMode( E, matrix[led][PIN_CONFIG][4] );
pinMode( F, matrix[led][PIN_CONFIG][5] );
digitalWrite( A, matrix[led][PIN_STATE][0] );
digitalWrite( B, matrix[led][PIN_STATE][1] );
digitalWrite( C, matrix[led][PIN_STATE][2] );
digitalWrite( D, matrix[led][PIN_STATE][3] );
digitalWrite( E, matrix[led][PIN_STATE][4] );
digitalWrite( F, matrix[led][PIN_STATE][5] );
}
void setup() {}
void loop() {
for( int l = 0; l < LED_Num; l++ ) { // chasing Right
lightOn( l );
delay(2000 / LED_Num );
}
for (int l = LED_Num-1; l>0; l=l-1){ // chasing Left
lightOn (l);
delay(2000 / LED_Num);
}
}