Page 144 - MDP2022-3
P. 144
제 3 장 소프트웨어 설계
1. 개요
먼저 아두이노에서의 HC06을 이용한 블루투스 송신을 통하여 신호를 송신하고 ARM프로세서
에서 이를 수신한다. 수신된 값에 따라 전차에서는 앞뒤좌우 이동이 가능하고 대포발사, 대포장
전, 레이저 센서 를 켜고 끌 수 있다. 앞뒤좌우이동과 대포발사 , 레이저 센서는 ARM프로세서
를 이용하여 제작하였고 서보모터를 이용한 포 장전은 Atmega 128을 이용하였다.
아두이노 코드를 작성할 때는 단순히 버튼의 입력을 받아 구분하고, 구분된 신호를 HC06을
통해 전송하면 되기에 비교적 간단하게 코드를 작성할 수 있었다. 아두이노에 내장되어있는
HC06을 이용할 수 있는 라이브러리인 “SoftwareSerial.h“ 라이브러리를 이용하면 간단하게
HC06을 사용할 수 있다. 그리고 아케이드 버튼 5개와 4개의 스위치로 이루어진 아케이드 스틱
을 각각 4번핀부터 12번 핀까지 연결하였다.
ARM프로세서의 코드를 작성 할 때는 전차의 움직임을 위한 L298N 제어와 레이저 센서 ,
ATmega128로의 신호전송등은 디지털값의 입출력만으로 코드를 작성할 수 있었기에 어렵지 않
게 코드를 작성 할 수있었다. 하지만 블루투스를 송신받는 코드를 작성할 때 어려움이 있었다.
ARM에대한 지식이 많지 않은 상태에서 통신을 위한 코드를 작성해야 했기에 이에대한 어려움
이 컸고 ARM에대한 유튜브 강의를 여러개 참고하면서 송신코드를 완성해 내었다. ARM부분에
서는 계속해서 char형 변수에 문자의 형태로 수신된 값을 받고 그 값에 따라 여러 동작을 가능
할 수있도록 코드를 작성하였다.
Atmega128은 디지털 신호를 받아 서보모터를 움직이기만 하면 됬기에 간단한 PWM제어 코
드만 작성하였다. PORTB의 5번에 PWM제어를 사용하여 장전신호가 ARM프로세서로부터 보내
질때마다 서보모터를 약 90도씩 회전하게 코드를 작성 하였다.
2. 소프트웨어
# Arduino 코드
#include <SoftwareSerial.h>
SoftwareSerial HC06(2, 3); // RX, TX
int swG = 4;
int swB = 5;
int swR = 6;
int swL = 7;
int swA1 = 8;
int swA2 = 9;
int swA3 = 10;
int swA4 = 11;
int swA5 = 12;