#define ON 1
#define OFF 0
int serial_Data[6];
int Inx = 0;
int CheckSum = 0;
int SerialOk_f = 0;
char nTmp = 0, nChk = 1;
int hzVal;
void setup(){
Serial.begin(115200);
// pinMode(14, OUTPUT);
SerialOk_f = OFF;
nChk = 1;
hzVal = 1000; // 400 1500
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
tone(4, 2400, 200);
// randomSeed(analogRead(0));
}
void loop(){
// analOutput();
if (Serial.available() > 0) {
// read the incoming byte:
int tmp = Serial.read();
if(SerialOk_f)
{
serial_Data[Inx] = tmp;
Inx++;
}
if(tmp == 0xaa && Inx == 0) Inx = 1;
else if(tmp == 0x55 && Inx == 1)
{
SerialOk_f = ON;
serial_Data[0] = 0xaa;
serial_Data[1] = 0x55;
Inx = 2;
}
if(Inx > 5)
{
Inx = 0;
SerialOk_f = OFF;
CheckSum = serial_Data[2] + serial_Data[3] + serial_Data[4];
if(CheckSum == serial_Data[5])
{
unsigned int curKey = 0, analKey = 0;
curKey = serial_Data[2] << 8;
curKey |= serial_Data[3];
analKey = serial_Data[4];
Key_Proc(curKey, analKey);
}
}
}
}
void Key_Proc(unsigned int curKey, unsigned int analKey)
{
switch(curKey)
{
// Digital Key1
case 0x8000: // Left Key
digitalWrite(3, HIGH); // FL
digitalWrite(5, LOW); // FL
digitalWrite(6, LOW); // BL
digitalWrite(9, HIGH); // BL
digitalWrite(10, LOW); // BR
digitalWrite(11, HIGH); // BR
digitalWrite(12, HIGH); // FR
digitalWrite(13, LOW); // FR
break;
case 0x2000: // Right Key
digitalWrite(3, LOW); // FL
digitalWrite(5, HIGH); // FL
digitalWrite(6, HIGH); // BL
digitalWrite(9, LOW); // BL
digitalWrite(10, HIGH); // BR
digitalWrite(11, LOW); // BR
digitalWrite(12, LOW); // FR
digitalWrite(13, HIGH); // FR
break;
case 0x1000: // Up Key Forward
digitalWrite(3, LOW); // FL
digitalWrite(5, HIGH); // FL
digitalWrite(6, LOW); // BL
digitalWrite(9, HIGH); // BL
digitalWrite(10, HIGH); // BR
digitalWrite(11, LOW); // BR
digitalWrite(12, HIGH); // FR
digitalWrite(13, LOW); // FR
break;
case 0x4000: // Down Key Back
digitalWrite(3, HIGH); // FL
digitalWrite(5, LOW); // FL
digitalWrite(6, HIGH); // BL
digitalWrite(9, LOW); // BL
digitalWrite(10, LOW); // BR
digitalWrite(11, HIGH); // BR
digitalWrite(12, LOW); // FR
digitalWrite(13, HIGH); // FR
break;
case 0x0800:
break;
case 0x0400:
break;
case 0x0200:
break;
case 0:
digitalWrite(3, HIGH);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
digitalWrite(11, HIGH);
digitalWrite(12, HIGH);
digitalWrite(13, HIGH);
break;
//===========================================================//
// Digital Key2
case 0x1080: // Digital2 Up-Left
digitalWrite(3, HIGH); // FL
digitalWrite(5, HIGH); // FL
digitalWrite(6, LOW); // BL
digitalWrite(9, HIGH); // BL
digitalWrite(10, HIGH); // BR
digitalWrite(11, HIGH); // BR
digitalWrite(12, HIGH); // FR
digitalWrite(13, LOW); // FR
break;
case 0x1020: // Digital2 Up-Right
digitalWrite(3, LOW); // FL
digitalWrite(5, HIGH); // FL
digitalWrite(6, HIGH); // BL
digitalWrite(9, HIGH); // BL
digitalWrite(10, HIGH); // BR
digitalWrite(11, LOW); // BR
digitalWrite(12, HIGH); // FR
digitalWrite(13, HIGH); // FR
break;
case 0x4080: // Digital2 Down-Left
digitalWrite(3, HIGH); // FL
digitalWrite(5, LOW); // FL
digitalWrite(6, HIGH); // BL
digitalWrite(9, HIGH); // BL
digitalWrite(10, LOW); // BR
digitalWrite(11, HIGH); // BR
digitalWrite(12, HIGH); // FR
digitalWrite(13, HIGH); // FR
break;
case 0x4020: // Digital2 Down-Right
digitalWrite(3, HIGH); // FL
digitalWrite(5, HIGH); // FL
digitalWrite(6, HIGH); // BL
digitalWrite(9, LOW); // BL
digitalWrite(10, HIGH); // BR
digitalWrite(11, HIGH); // BR
digitalWrite(12, LOW); // FR
digitalWrite(13, HIGH); // FR
break;
//===========================================================//
case 0x0002: // R2
// 시계반대방향
digitalWrite(3, LOW); // FL
digitalWrite(5, HIGH); // FL
digitalWrite(6, LOW); // BL
digitalWrite(9, HIGH); // BL
digitalWrite(10, LOW); // BR
digitalWrite(11, HIGH); // BR
digitalWrite(12, LOW); // FR
digitalWrite(13, HIGH); // FR
break;
case 0x0001: // L2
// 시계방향
digitalWrite(3, HIGH); // FL
digitalWrite(5, LOW); // FL
digitalWrite(6, HIGH); // BL
digitalWrite(9, LOW); // BL
digitalWrite(10, HIGH); // BR
digitalWrite(11, LOW); // BR
digitalWrite(12, HIGH); // FR
digitalWrite(13, LOW); // FR
break;
}
}