홍익인간 프로젝트/Arduino C 21

[Arduino] Packet Structure relationship definition info

안녕하세요, 라즈베이 파이를 이용해 CM700을 제어하려는 학생입니다. 로보플러스를 이용해 지그비 리모콘 U를 누르면 다이나믹셀 목표위치를 0으로, D를 누르면 1024로, 떼면 512로 이동하는 간단한 테스크를 짜서 동작을 확인했습니다. 물론 현재 지그비 리모콘으로는 매우 잘 작동하며, 제 목표는 라즈베리파이의 GPIO 출력핀, 또는 LN101 USB를 통해 CM700과 UART 통신을 통해 리모콘을 모방하는 것입니다. 현재 간단하게 아두이노로 시리얼통신을 테스트중인데요, 통신 패킷이 잘 이해가 가지 않습니다. 지그비 SDK를 살펴본 결과, int zgb_tx_data(int data) { unsigned char SndPacket[6]; unsigned short word = (unsigned sho..

OLED display 종류별 사용방법 및 라이브러리

OLED 디스플레이 사용을 위해 필요한 라이브러리와 소스코드를 정리했습니다. 먼저 확인해야 할 것은 OLED 디스플레이의 드라이버 칩입니다. 드라이버 칩에 따라 라이브러리와 사용방법이 완전히 틀려집니다. Adafruit 그래픽 라이브러리 (SSD 1306 및 일부 TFT LCD 등…) 일반적으로 많이 사용. Adafruit 에서 제작한 라이브러리를 사용하거나 좀 더 원시적인 코드로 구동이 가능합니다. Adafruit 라이브러리는 각종 도형 및 폰트, 선, 채우기 함수를 제공하는 대신 그래픽 버퍼로 램을 꽤 많이 잡아 먹습니다. 아두이노가 보통 2KByte 램으로 돌아간다는 점을 생각하면 램이 부족한 경우가 생길 수 있습니다. 램이 부족할 경우 각종 변수값이 이상하게 입력되고 화면이 찢어지는(?) 현상이 ..

delayMicroseconds()

[Time] 설명 매개변수에 지정된 시간(마이크로 초)동안 프로그램을 멈춘다. 1밀리초는 1000 마이크로 초, 1초는 100만 마이크로 초. 현재, 정확한 delay를 만드는 가장 큰 값은 16383. 미래의 아두이노 릴리스에서 바뀔 수 있다. delay 가 몇 천 마이크로 초 보다 길면, 대신 delay() 를 써야 한다. 문법 delayMicroseconds(us) 매개변수 us: 멈출 마이크로 초 (unsigned int) 반환 없음 예제 코드 이 코드는 핀번호 8이 출력 핀으로 동작하도록 구성한다. 약 100 마이크로 초의 펄스 열을 보낸다. 근사값은 코드에서 다른 명령 실행으로 인한 것이다. int outPin = 8; // 디지털 핀 8 void setup() { pinMode(outPin,..

[아두이노 레퍼런스] Serial.write() 함수

아두이노의 Serial.write() 함수는 Serial 포트에 하나의 바이트 또는 그 이상의 바이트를 전송하는데 사용합니다. 주로 데이터 통신을 구현할 때 사용되며 Serial.print() 함수와 구분되어 사용합니다. Serial.write() 함수는 숫자를 전송할 때 숫자 있는 그대로 전송합니다. 이는 숫자를 ASCII 코드로 변환하여 전송하는 Serial.print() 함수와 구분되며 일부 매개변수 입력에도 차이가 있습니다. Serial.write() Serial.write(val); Serial.write(str); Serial.write(buf, len); 매개변수(Parameters) val : 1 바이트 데이터(0x00 ~ 0xFF) str : 문자열(ex ‘A’, “Hello”) buf ..

PCF8574 I2C 확장보드로 CLCD, Text(텍스트) LCD 구동 (아두이노)

1602(16x2) 또는 2004(20x4) 크기의 CLCD(Character LCD)는 텍스트 LCD(Text LCD)라고로 부르는데요. 최소로 제어해야 하는 핀이 6개여서, CLCD를 제어하려면 MCU의 핀이 최소한 6개가 필요합니다. 그런데 SPI 방식이나 I2C 방식의 port extender IC를 사용하면 각각 4개, 2개의 MCU 핀으로도 제어할 수 있어서, 제어핀의 갯수가 줄어드는 이점이 있어요. 그래서 이전 글에서 PCF8574 port extender IC가 있는 확장보드를 CLCD에 납땜으로 연결한 뒤, STM32F746 MCU로 구동했습니다. 이전 글: PCF8574 I/O 확장보드를 사용한 CLCD(Text LCD) 구동 (STM32F746, I2C) 이 글에서는 I2C 방식의 C..