안녕하세요 Jimae입니다.
저번에 이어서 글을 써보도록 하겠습니다.
case MOTION:
if(scenariopoint[scenarioCount][0] == 0xAA && scenariopoint[scenarioCount][1] == 0xAA) // 시나리오 마지막인 SPECIALCODE(0xAA) 형식의 아이디변환 데이터가 왔을때
{
controlStep = LASTIDCHANGE; // RCcar 아이디 정하는 구역으로 변경
break;
}
ScenarioDataWrite(&scenariopoint[scenarioCount][0]); // RCcar로 시나리오 명령어 보내기
controlStep = MOTIONCONFIRM; // 보낸 명령어 확인하는곳
break;
시나리오를 전부 실행이 끝난다면 시나리오를 마무리 작업을 하기위해 LASTIDCHANGE 실행합니다.
case LASTIDCHANGE: // case IDCAHNGE: RCcar 아이디 정하는 구역 똑같다
for(num = 0; num < 3; num++)
{
RCCAR1.write(scenariopoint[0][num]);
delay(1);
RCCAR2.write(scenariopoint[0][num]);
delay(1);
RCCAR3.write(scenariopoint[0][num]);
delay(1);
RCCAR4.write(scenariopoint[0][num]);
delay(1);
}
scenarioCount = 1; // 마지막 동작인 ID 바뀌는 부분으로 와서 다음실행할 시나리오를 다시 처음으로 초기화
controlStep = LASTIDCAHNGECONFIRM; // RCcar ID 변환 값 읽는 구역으로 변경
break;
마무리는 RC 카의 ID를 다시 재 초기화 하는 작업부터 시작하죠.
시나리오상에서는 마지막에는 다시 재초기화를 함으로써 다음 시나리오를 실행할수 있도록 하기 위한 밑작업입니다.
case LASTIDCAHNGECONFIRM: // case IDCAHNGECONFIRM: RCcar 4개에서 ID가 변경된 정보를 전부다 읽을때까지 대기 과 같다
if(RCCAR1.available())
{
Serial.println("one");
confirmBugffer1[confirmBugfferAddress1] = RCCAR1.read();
Serial.println(confirmBugffer1[confirmBugfferAddress1++],HEX);
if(confirmBugfferAddress1 >= 3)
{
confirmBugfferAddress1 = 0;
if(confirmBugffer1[1] == 0xAA)
{
nowRcCarID[0] = confirmBugffer1[0];
changeCount++;
}
for(num = 0; num < 3; num++)confirmBugffer1[num] = 0;
}
}
if(RCCAR2.available())
{
Serial.println("two");
confirmBugffer2[confirmBugfferAddress2] = RCCAR2.read();
Serial.println(confirmBugffer2[confirmBugfferAddress2++],HEX);
if(confirmBugfferAddress2 >= 3)
{
confirmBugfferAddress2 = 0;
if(confirmBugffer2[1] == 0xAA)
{
nowRcCarID[1] = confirmBugffer2[0];
changeCount++;
}
for(num = 0; num < 3; num++)confirmBugffer2[num] = 0;
}
}
if(RCCAR3.available())
{
Serial.println("three");
confirmBugffer3[confirmBugfferAddress3] = RCCAR3.read();
Serial.println(confirmBugffer3[confirmBugfferAddress3++],HEX);
if(confirmBugfferAddress3 >= 3)
{
confirmBugfferAddress3 = 0;
if(confirmBugffer3[1] == 0xAA)
{
nowRcCarID[2] = confirmBugffer3[0];
changeCount++;
}
for(num = 0; num < 3; num++)confirmBugffer3[num] = 0;
break;
}
}
RCCAR4.listen();
if(RCCAR4.available())
{
Serial.println("four");
confirmBugffer4[confirmBugfferAddress4] = RCCAR4.read();
Serial.println(confirmBugffer4[confirmBugfferAddress4++],HEX);
if(confirmBugfferAddress4 >= 3)
{
confirmBugfferAddress4 = 0;
if(confirmBugffer4[1] == 0xAA)
{
nowRcCarID[3] = confirmBugffer4[0];
changeCount++;
}
for(num = 0; num < 3; num++)confirmBugffer4[num] = 0;
break;
}
}
if(changeCount >= 4)
{
changeCount = 0;
controlStep = SCEBARIOEND; // 마지막 시나리오가 완벽하게 끝나 블루투스앱으로 데이터 전송해주는 구역으로 전환
}
break;
RC카 ID의 초기화가 끝난고 모든 RC카가 초기화가 끝난거를 확인한뒤
case SCEBARIOEND:
MAINCONTROL.println("Success!!!"); // 시나리오 끝난후 블루투스로 데이터 전송
controlStep = SCENARIOSELECT;
break;
SCENARIOSELECT 돌아가서 스마트폰에 데이터가 오기를 기다리게됩니다.
이렇게 컨트롤러 부분의 프로그램은 끝이납니다.
다음에는 다른 프로젝트를 가지고 설명을 해보도록 하겠습니다.
극한의 아두이노 DIY생활 - NFC RC카1
극한의 아두이노 DIY생활 - NFC RC카2
극한의 아두이노 DIY생활 - NFC RC카3
극한의 아두이노 DIY생활 - NFC RC카4
극한의 아두이노 DIY생활 - NFC RC카5
극한의 아두이노 DIY생활 - NFC RC카6
극한의 아두이노 DIY생활 - NFC RC카7
극한의 아두이노 DIY생활 - NFC RC카8
극한의 아두이노 DIY생활 - NFC RC카9
극한의 아두이노 DIY생활 - NFC RC카10
극한의 아두이노 DIY생활 - NFC RC카11
극한의 아두이노 DIY생활 - NFC RC카12
극한의 아두이노 DIY생활 - NFC RC카13
극한의 아두이노 DIY생활 - NFC RC카14
극한의 아두이노 DIY생활 - NFC RC카15
극한의 아두이노 DIY생활 - NFC RC카16
극한의 아두이노 DIY생활 - NFC RC카17
극한의 아두이노 DIY생활 - NFC RC카18
극한의 아두이노 DIY생활 - NFC RC카19
극한의 아두이노 DIY생활 - NFC RC카20
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
I earned $5000 ultimate month by operating online only for 5 to 8 hours on my computer and this was so smooth that I personally couldn't accept it as true before working on this website. If you too need to earn this sort of huge cash then come and be part of us. do this internet website online........http://salary47.ml/
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
임대 추가 보팅완료
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit