컨텐츠 바로가기



현재 위치

  1. 게시판
  2. 튜토리얼

튜토리얼

튜토리얼[Tutorial]입니다.

메카넘휠 플랫폼 PS2 조종기(블루투스) 컨트롤 아두이노 소스
제목 메카넘휠 플랫폼 PS2 조종기(블루투스) 컨트롤 아두이노 소스
작성자 (주)로보메카 (ip:)
  • 작성일 2013-04-26 11:49:13
  • 추천 추천 하기
  • 조회수 1221
  • 평점 0점

#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;
     }


}

첨부파일 본체_조종기.gif
비밀번호 삭제하려면 비밀번호를 입력하세요.

목록

삭제 수정 답변

댓글 수정

비밀번호

수정 취소

/ byte


장바구니 0