const int PIN_SER1 = 8;
const int PIN_LATCH1 = 9;
const int PIN_CLK1 = 10;
const int PIN_SER2 = 11;
const int PIN_LATCH2 = 12;
const int PIN_CLK2 = 13;
const int PIN_SER3 = 5;
const int PIN_LATCH3 = 6;
const int PIN_CLK3 = 7;
const int preset_sound=3;
int inch=0;
byte patterns[] = {
B00000000,
B10000000,
B01000000,
B00100000,
B00010000,
B00001000,
B00000100,
B00000010,
B00000001,
B00000000,
B00000000,
B00000000,
B00000000,
B00000000
};
void setup() {
Serial.begin(31250);
int aread = analogRead(0);
if(aread<212)
{
inch=0; //INCH=0;
}
else
{
inch=5; //INCH=5;
}
//1-1 to1-8 upper
//2-1 to2-8 lower
//3-1 relay
//3-2 soind
//3-3 bpm
//3-4 rec
pinMode( PIN_SER1, OUTPUT );
pinMode( PIN_SER2, OUTPUT );
pinMode( PIN_SER3, OUTPUT );
pinMode( PIN_LATCH1, OUTPUT );
pinMode( PIN_LATCH2, OUTPUT );
pinMode( PIN_LATCH3, OUTPUT );
pinMode( PIN_CLK1, OUTPUT );
pinMode( PIN_CLK2, OUTPUT );
pinMode( PIN_CLK3, OUTPUT );
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//sound
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[preset_sound] );
digitalWrite( PIN_LATCH1, HIGH );
delay(600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
for ( int i=1; i<9; i++ ) {
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[i] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(30);
}
for ( int i=1; i<9; i++ ) {
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[i] );
digitalWrite( PIN_LATCH2, HIGH );
delay(300);
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
delay(30);
}
}
int lastkey=-1;
unsigned long last_time=millis();
void loop()
{
//1-1 to1-8 upper
//2-1 to2-8 lower
//3-1 relay
//3-2 soind
//3-3 bpm
//3-4 rec
// check time
unsigned long el_time=millis();
int difftime = -last_time +el_time;
last_time = el_time;
// clear unknown data in 10sec
if(el_time % 10000 == 0)
{
for (int i=0;i<1;i++)
{
if (Serial.available() > 0)
{
int inNULL = Serial.read();
}
else
{
i++;
}
}
}
//check inkey from MIDI
if (Serial.available() > 2)
{
int inByte1 = Serial.read();
int inByte2 = Serial.read();
int inByte3 = Serial.read();
//NOTEOFF
if (inByte1 == (0x80+inch))
{
//NOTE OFF
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
int inkey=inByte2;
if(inkey==lastkey)
{
lastkey=-1;
}
}
if(inByte1 == (0x90+inch))
{
int offset=12;
if(inByte2==36-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//sound
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[1] );
digitalWrite( PIN_LATCH1, HIGH );
delay(600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==37-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//sound
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH1, HIGH );
delay(600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==38-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//sound
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[3] );
digitalWrite( PIN_LATCH1, HIGH );
delay(600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==39-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//sound
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH1, HIGH );
delay(600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==43-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//rec
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[1] );
digitalWrite( PIN_LATCH1, HIGH );
delay(3600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==44-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//rec
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH1, HIGH );
delay(3600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==45-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//rec
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[3] );
digitalWrite( PIN_LATCH1, HIGH );
delay(3600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else if (inByte2==46-offset)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
//rec
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH3, HIGH );
delay(600);
//preset
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH1, HIGH );
delay(3600);
digitalWrite( PIN_LATCH3, LOW );
shiftOut( PIN_SER3, PIN_CLK3, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH3, HIGH );
delay(300);
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
delay(300);
}
else
{
}
int swkey=(inByte2 %16);
if(lastkey!=-1)
{
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
delay(30);
}
switch(swkey)
{
case 0:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[5] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 1:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[6] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 2:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[7] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 3:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[8] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 4:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[1] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 5:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 6:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[3] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 7:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 8:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[5] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 9:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[6] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 10:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[7] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 11:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[8] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 12:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[1] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 13:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[2] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 14:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[3] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
case 15:
digitalWrite( PIN_LATCH1, LOW );
shiftOut( PIN_SER1, PIN_CLK1, LSBFIRST, patterns[4] );
digitalWrite( PIN_LATCH1, HIGH );
digitalWrite( PIN_LATCH2, LOW );
shiftOut( PIN_SER2, PIN_CLK2, LSBFIRST, patterns[0] );
digitalWrite( PIN_LATCH2, HIGH );
break;
}
lastkey=swkey;
}
}
}