본문 바로가기

Software/Arduino

(5)
아두이노 74HC573 Latch 사용방법 74HC573 는 TTL 시리즈 중에서 8bits Latch IC 로 원하는 출력값을 다음 변경전까지 유지시키기 위한 용도로 사용합니다. 제 경우에는 주로 릴레이 On, Off 에 많이 사용했습니다. 그런데 주로 아두이노나노 보드를 사용하다 보니 출력 핀수가 적어서 시리얼로 제어가 가능한 74hc595 를 많이 사용했습니다. 아두이노 메가 처럼 IO 핀이 많은 경우나 HC245 와 같은 입출력 포트를 같은 라인으로 사용할 경우 적용하면 좋을듯 하여 코드를 만들어 보았습니다. class HC573Latch { public : void HC573Latch(uint8_t le, uint8_t enable,// OE 단자를 사용할 경우 uint8_t d0, uint8_t d1, uint8_t d2, uint8_..
아두이노 타이머 사용 방법 아두이노에서 내부 Timer를 이용하여 LED를 제어하는 코드 입니다. 토글 스위치를 이용하여 타이머 동작을 제어하고 타이머가 구동되면 1초간격으로 LED 가 점멸하도록 했습니다. #include "MsTimer2.h" // Timer를 사용하기위한 헤더 선언 #define LED_ON 0 #define LED_OFF 1 const int LED_CONT = 1 ; const int Timer_CONT = 2 ; boolean LED_Status = false ; // LED 의 현재 상태 Flag boolean timerStatus = false ; // 타이머 동작 여부 상태 Flag //---------------------------------------------------------------..
아두이노 EEPRom 읽고 쓰기 아두이노 MPU에 내장되어 있는 EEP Rom 메모리에 데이타를 읽고 쓸수 있는 함수입니다. 정수형 데이타를 저장하거나 읽을 수 있도록 만들었습니다. 하드웨어의 간단한 파라메터 값이나 보드의 어드레스 정보등을 저장하는 용도로 사용할 수 있습니다. #include #define FIRST_ADDRESS 0 #define SECOND_ADDRESS 2 int EEPROM_Read(int Address) { int result = 0 ; int temp ; result = EEPROM.read(Address+1) ; result = 8 ; temp = 0x00ff & Value ; EEPROM.update(Address+1, temp) ; } 위의 함수들은 정수형 데이타를 저장하거나 읽어내는 용도이기 때문에 ..
아두이노 비트필드(bit field)를 이용한 버튼입력 처리 아두이노에 버튼이 여러개 있을 경우 각각의 버튼에 대한 입력을 체크하여 각각의 버튼에 대한 입력 처리만 하게됩니다. 예를 들어 버튼이 3개가 있다면 3가지 경우의 입력만 처리하게 됩니다. 하지만 적은 수의 버튼으로 좀더 많은 경우의 처리를 하는 방법이 있습니다. 바로 bit field 기능을 이용하면 됩니다. 비트 필드를 구성하게 되면 두개 이상의 키가 동시에 눌리는 경우도 하나의 입력값으로 인식하여 처리 루틴을 만드는 것이 가능합니다. 만일 버튼이 3개 있다면 최대 7가지의 경우로 조합하여 입력 처리를 할 수 있습니다. #define U08 unsigned char union BUTTON_STATE // 버튼입력 상태에 대한 비트필드 공용체 { U08 State ; struct { int UP_BUTT..
아두이노 시리얼 통신( PC <-> 아두이노 ) 아두이노와 외부 디바이스 또는 PC 와 RS232 통신을 하기위한 방법을 설명합니다. 제 블로그에서는 가급적 실사용 위주를 중심으로 코드를 올립니다. 큰 틀은 가져가시고 세부적인 부분만 수정하셔도 동작에 지장이 없으실 겁니다. 하기의 코드는 실제 개발 제품에 사용했던 것으로 PC가 Master 이고 아두이노가 Slave 인 구성에서의 코드입니다. 아두이노가 Master 가 되는 상황에서 다른 디바이스를 제어할 경우는 코드 구성이 좀 틀립니다. 또한 하기 코드의 프로토콜에는 별도의 오류 체크를 포함하지 않았지만 통신 오류를 줄이기 위해 Check Sum 이나 CRC 등의 오류 체크를 포함할 수도 있습니다. #define STX 0x02 #define ETX 0x03 #define BUFFER_MAX 20 ..