LattePanda GPIO Programming
Written By HJ Jang, VCANUS
RaspberryPi나 LattePanda처럼 GPIO 핀이 있는 컴퓨터에서는 핀에 LED, 서보모터, ADC 또는 DAC 모듈 등을 연결해서 IoT 시스템을 구현할 수 있다.
이 문서에서는 Arduino Leonardo가 내장되어 있는 LattePanda 컴퓨터에서 C# GPIO 프로그래밍하는 방법을 정리한다.
Settings for PC
1. 개발자 모드 ON
Windows 설정 > 업데이트 및 보안 > 개발자용 > 개발자 모드 켬
으로 설정
2. LattePanda.Firmata 라이브러리 다운로드
여기서 ZIP 파일 다운로드
3. Arduino 로드
(1) LattePanda의 내장 GPIO를 사용할 수 있는 프로그램 로드
File > Examples > Firmata > StandardFirmata
(파일 > 예제 > Firmata > StandardFirmata)
(2) 보드 및 포트 설정
- Tools > Board > “Arduino Leonardo” (툴 > 보드 > “Arduino Leonardo”)
- Tools > Port > “COMX (Arduino Leonardo)” (툴 > 포트 > “COMX (Arduino Leonardo)”)
C#
프로젝트
- Visual Studio에서 새 프로젝트 생성(콘솔 앱(.NET Framework))
- 위에서 다운 받은 라이브러리 파일에서 Arduino.cs를 프로젝트에 추가
Program.cs에 라이브러리 불러오기
using LattePanda.Firmata;
클래스 사용
Arduino arduino = new Arduino();
C#
예제
LED toggle
private static void Test1()
{
Console.WriteLine("LED Blink Start!!!");
arduino.pinMode(13, Arduino.OUTPUT);
while (true)
{
arduino.digitalWrite(13, Arduino.HIGH);
Thread.Sleep(1000);
arduino.digitalWrite(13, Arduino.LOW);
Thread.Sleep(1000);
}
}
성공적으로 실행될 경우, 빨간색 LED가 1초에 한번씩 깜빡거린다.
I2C 통신(DAC 연결 시)
private static void Test2()
{
/*
* public void wireBegin(Int16 delay);
* : I2C 버스 설정 및 초기화. 한 번만 사용할 것.
* public void wireRequest(byte slaveAddress, Int16 slaveRegister, Int16[] data, byte mode);
* : I2C 통신 모듈에 데이터 송수신 요청 보낸 후, didI2CDataReveive를 call함
* - slaveAddress: 통신 모듈의 주소(MCP4725의 경우 기본 주소 0x62)
* - slaveRegister: 데이터를 읽고 쓸 레지스터 주소
*/
arduino.wireBegin(200);
// I2C에 데이터 쓰기
arduino.wireRequest(0x62, Arduino.NONE, new Int16[] { 1, 2, 3 }, Arduino.I2C_MODE_WRITE);
// I2C 데이터 송수신 확인
arduino.didI2CDataReveive += Arduino_didI2CDataReveive;
}
private static void Arduino_didI2CDataReveive(byte address, byte register, byte[] data)
{
// I2C 데이터 수신 이벤트에 대한 핸들러
Console.WriteLine("I2C request event");
}
LattePanda GPIO 핀 참고
(이미지 출처: https://www.lattepanda.com/lattepanda-docs)
참고링크: LattePanda 페이지
Leave a comment