create account

아두이노 코딩-139: Brokking의 밸런싱 로봇 코드 수정 작업을 위한 아두이노 테스트 코드 by codingart

View this thread on: hive.blogpeakd.comecency.com
· @codingart · (edited)
$2.01
아두이노 코딩-139: Brokking의 밸런싱 로봇 코드 수정 작업을 위한 아두이노 테스트 코드
지금으로서는 Brokking 의 코드를 다운받아 그대로 이용할 계획이므로 Brokking 이 사용했던 블루투스 부분에 해당하는 코드에 한정하여 HC-06 버전으로 바꾸는 과정을 첨부된 테스트 코드를 사용하여확인하는 과정을 설명하도록 하자.

![noname01.png](https://cdn.steemitimages.com/DQmQBomd9Dio97DFPbNWntiKX6dYD6nGeSoJXuFMwNVF9G1/noname01.png)

아두이노 우노 보드의 0번(RX) 1번(TX)핀 과  HC-06 블루투스 보드의 RXD 핀과 TXD 핀을 그림의 배선도(RXD⤍TX, TXD⤍RX)처럼 연결하기로 한다. 아직은 미 연결 상태를 유지하고 컴파일 업로딩하여 테스트를 진행한다. 

아직 Brokking 의 밸런싱 로봇 코드를 수정해서 입력하기 전에 아두이노 블루투스 수신 테스트 코드를 만들어 시험해 보도록 하자. 아두이노우노 블루투스 수신 테스트 코드는 Brokking 의 코드에서 다 빼버리고 블루투스를 통해 입력버퍼에서 수신한 내용을 시리얼 모니터에 출력하는 부분만 남기도록 한다.

헤더 영역을 살펴보자. 입력 버퍼 변수 received_byte를 8비트 byte 데이타로 정의하자. micros() 명령은 아두이노보드에서 코드가 실행되는 순간부터 마이크로 단위로 시간을 계수해서 알려준다. 현재 시간 micros(0 보다 4000 만큼 큰 값의 loop_timer 는 loop()에서 4000 마이크로 세컨드가 경과되면 다시 4000을 추가해서 갱신되는 구조다. 4000 마이크로 세컨드는 Brokking 의 코드에서 4 msec 마다 한번씩 밸런싱 로봇의 제어를 위해 루틴이 실행되는 단위임을 참고하자. 

![noname02.png](https://cdn.steemitimages.com/DQmYE8h71XZrBUhtfdGYVRmrsuf7wLq84VZFT45AcFCxuY3/noname02.png)

loop()에서 Aerial.begin(57600)은 //코멘트 처리하기로 한다. HC-06 블루투스 보드의 default 통신속도가 9600이며 이미 setup()에서 9600으로 설정되어 있기 때문이다. HC-06의 통신속도를 57600으로 재설정했다면 이 명령을 그대로 살려두면 된다.

![noname03.png](https://cdn.steemitimages.com/DQmUPbBFtsvLruux3XMDfScQFCF5GnEgas35zh3fwAEPJUC/noname03.png)

실제로 Brokking의 코드를 수정해서 실행하기 전에 첨부된 테스트 코드를 사용하여 시리얼 모니터의 문자 입력 박스에서 “L”과 “R”을 입력하여 Serial.read() 명령이 실행되면 이 입력 버퍼 값을 읽어서 received_byte에 저장 후 이 값을 시리얼 모니터에서 BIN 즉 Binary 8비트 형식으로 출력해 보도록 한다.

![noname04.png](https://cdn.steemitimages.com/DQmbhcgmZVaeHGBjNwayNPT6m1nSJLiMA1D7qXjNkvgdGdQ/noname04.png)

received_byte의 8비트 데이타가 1001100 이라면 이는 스마트폰 앱인벤터에서 Right 버튼을 누른 결과에 해당한다.. 그런데 반대로 “Turn Left” 문자 출력을 한 이유는 Brokking 의 코드에서 겉보기에는 Turn Right 같은데 실제 해보니까 좌회전을 하였다. 그래서 바꿔 놓은 것이다. Brokking은 HC-06 이 아닌 다른 블루투스 보드를 사용하기 때문에 HC-06과는 조금 다른 점이 있는 듯하다. 전진과 후진은 별 이상이 없다. 

이런 방식으로 전진 후진 좌회전 우회전 시 입력 버퍼 변수 즉 received_byte의 값을 확인해 보고 최종적으로 Brokking 의 코드 수정 단계에 들어가도록 한다.


//Bluetooth_FBRL
byte received_byte = 0; //입력버퍼
int receive_counter;
unsigned long loop_timer;

void setup()  {
    Serial.begin(9600);                                
    loop_timer = micros() + 4000; 
}

void loop()  {
// Serial.begin(57600);
   if(Serial.available() > 0){
       received_byte = Serial.read();
       receive_counter = 0;                                                  
   }
   if(receive_counter <= 25)
      receive_counter ++;                            
   else 
      received_byte = 0x00;   
   Serial.println(received_byte, BIN);          
   if(received_byte == B1010010) 
       Serial.println("Trun Left"); 
   if(received_byte == B1001100)             
       Serial.println("Trun Right");
   if(received_byte == B1000110)             
       Serial.println("Move Forward");   
   if(received_byte == B1000010)             
       Serial.println("Move Backword");        
   if(received_byte == B1010011)             
       Serial.println("STOP");  
   while(loop_timer > micros());
   loop_timer += 4000;
}//끝
👍  , , , , , , , , , , , , , , , , ,
properties (23)
authorcodingart
permlink139-brokking
categorykr
json_metadata{"tags":["kr","kr-newbie","manamine","jjangjjangman","kr-dev"],"image":["https://cdn.steemitimages.com/DQmQBomd9Dio97DFPbNWntiKX6dYD6nGeSoJXuFMwNVF9G1/noname01.png","https://cdn.steemitimages.com/DQmYE8h71XZrBUhtfdGYVRmrsuf7wLq84VZFT45AcFCxuY3/noname02.png","https://cdn.steemitimages.com/DQmUPbBFtsvLruux3XMDfScQFCF5GnEgas35zh3fwAEPJUC/noname03.png","https://cdn.steemitimages.com/DQmbhcgmZVaeHGBjNwayNPT6m1nSJLiMA1D7qXjNkvgdGdQ/noname04.png"],"app":"steemit/0.1","format":"markdown"}
created2018-09-04 03:45:36
last_update2018-09-04 04:38:09
depth0
children1
last_payout2018-09-11 03:45:36
cashout_time1969-12-31 23:59:59
total_payout_value1.535 HBD
curator_payout_value0.478 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,939
author_reputation41,833,111,979,966
root_title"아두이노 코딩-139: Brokking의 밸런싱 로봇 코드 수정 작업을 위한 아두이노 테스트 코드"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id70,248,306
net_rshares1,741,576,509,507
author_curate_reward""
vote details (18)
@virus707 ·
이오스 계정이 없다면 마나마인에서 만든 계정생성툴을 사용해보는건 어떨까요?
https://steemit.com/kr/@virus707/2uepul
properties (22)
authorvirus707
permlinkre-codingart-139-brokking-1536264183042tef630c9e-82c4-4296-8397-0c1ecf24a9a2uid
categorykr
json_metadata{"tags":["support"],"users":["virus707"],"links":["https://steemit.com/kr/@virus707/2uepul"],"app":"null/null","format":"markdown"}
created2018-09-06 20:03:03
last_update2018-09-06 20:03:03
depth1
children0
last_payout2018-09-13 20:03:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length81
author_reputation557,563,606,581,756
root_title"아두이노 코딩-139: Brokking의 밸런싱 로봇 코드 수정 작업을 위한 아두이노 테스트 코드"
beneficiaries
0.
accountsteemj
weight250
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id70,537,408
net_rshares0