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;
   139   140   141   142   143   144   145   146   147   148   149