극한의 아두이노 DIY생활 - NFC RC카8

in kr-dev 커뮤니티2 years ago

안녕하세요 Jimae입니다.

자 바로 프로그램 분석으로 가볼까요?

#define MOTOR_M1    A5
#define MOTOR_M0    A4 
#define MOTOR_DIR_R   8    
#define MOTOR_CLK_R   7
#define MOTOR_DIR_L   6    
#define MOTOR_CLK_L   5

#define LEDRED A0
#define LEDYELLOW A1
#define LEDGREEN A2
#define LEDBLUE A3

AddicoreRFID RcRFID; // create AddicoreRFID object to control the RFID module
SoftwareSerial BTSerial(2, 3);   //bluetooth module Tx:Digital 2 Rx:Digital 3

const int chipSelectPin = 10;

이것들이 전부 하드웨어를 초기화 하기위해 사용되어진 Pin번호들 입니다.

그런대 SPI Pin번호는 라이브러리 내부에 있기때문에 여기에 적혀있지 않습니다.

image.png

10번 부터 13번 까지 SPI 통신으로 사용합니다.

어떻게보면 아두이노의 Pin전부를 사용하는것과 같아요.

Pin번호를 정의를 먼저 보여준것은 회로구성이 이런식으로 구성되어있다는것을 간접적으로 보여드릴려고 했던것이고

이제 setup 함수부터 시작하겠습니다.

void setup() { 
                 
  Serial.begin(9600);                        // RFID reader SOUT pin connected to Serial RX pin at 9600bps 
  BTSerial.begin(9600);  
 
  // start the SPI library:
  SPI.begin();      // RFID 기능을 쓰기위해 초기화
  
  pinMode(chipSelectPin,OUTPUT);              // Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin 
  digitalWrite(chipSelectPin, LOW);         // Activate the RFID reader

  RcRFID.AddicoreRFID_Init();  // RFID 기능 초기화
  MotorInit();    // 모터 초기화

  LEDInit();      //LED 초기화

  MsTimer2::set(1000, TimeCount); // TimeCount함수를 1초마다 호출한다
  MsTimer2::start();
}

이곳에서 가장 중요한것은 3가지 입니다.

RcRFID.AddicoreRFID_Init(); // RFID 기능 초기화
MotorInit(); // 모터 초기화

LEDInit(); //LED 초기화

이렇게 3개이고요.

RcRFID.AddicoreRFID_Init() 이함수는 라이브러리 내부에 있는 함수인지라 이대로 설정하면 되고

void MotorInit(void)    // 모터 초기화 함수
{
  pinMode(MOTOR_CLK_L, OUTPUT);
  pinMode(MOTOR_DIR_L, OUTPUT);
  pinMode(MOTOR_CLK_R, OUTPUT);
  pinMode(MOTOR_DIR_R, OUTPUT);
  pinMode(MOTOR_M0, OUTPUT);
  pinMode(MOTOR_M1, OUTPUT);
  pinMode(MOTOR_ENABLE, OUTPUT);  

  digitalWrite(MOTOR_M1, LOW);            // Motor M2 as LOW
  digitalWrite(MOTOR_M0, LOW);            // Motor M1 as LOW  sixteenth mode
}

모터드라이버를 제어하기위한 모든 Pin들을 OUTPUT으로 초기화 했습니다.


void LEDInit(void)    // LED 초기화
{
   pinMode(LEDRED,OUTPUT);    
   pinMode(LEDYELLOW,OUTPUT);  
   pinMode(LEDGREEN,OUTPUT);  
   pinMode(LEDBLUE,OUTPUT);  
                
   digitalWrite(LEDRED, LOW);        
   digitalWrite(LEDYELLOW, LOW);    
   digitalWrite(LEDGREEN, LOW);    
   digitalWrite(LEDBLUE, LOW);    
}

그리고 LED도 마찬가지입니다.

사실 setup 함수들은 거의 처음에 정의된 Pin들의 정의들을 한것이구요.

// start the SPI library:
SPI.begin(); // RFID 기능을 쓰기위해 초기화

pinMode(chipSelectPin,OUTPUT); // Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin
digitalWrite(chipSelectPin, LOW); // Activate the RFID reader

이 부분은 SPI통신을 하기위해 꼭 선언되어야 하는 부분이라고 생각하시면 됩니다.

나머지는 자주 보던 것들인지라 생략하겠습니다.

오늘은 여기까지 다들좋은 하루 되세요.

극한의 아두이노 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

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.034
BTC 98129.50
ETH 3322.67
USDT 1.00
SBD 3.05