- 전체
- 안드로이드 플랫폼
- 아두이노
- 라즈베리 파이
- 안드로이드 ADK
- Embedded HardWare
- Embedded FirmWare
- Embedded Platform
- Embedded SoftWare
- 임베디드 리눅스
- Hobby Electronics
- 임베디드기사 - 국가기술자격
- VHDL 디지털설계
- M2M_IoT_사물지능통신
- 아마추어 로봇
- EDA - Electronic CAD
- 로봇공학
- 국가기술자격 로봇 제작 개발 자격증
- IoT (임베디드 인터넷)
아두이노 C#으로 아두이노의 LED 제어하기 - C# 프로그래밍
2024.02.25 11:30
C#으로 아두이노의 LED 제어하기 - C# 프로그래밍
★ C# 프로그램으로 아두이노의 LED 제어하기
컴퓨터 또는 노트북으로 아두이노에 연결된 장치를 제어하려면 컴퓨터에 C# 프로그램을 실행하고, 아두이노에 스케치 프로그램을 실행해야 합니다. 그리고 컴퓨터와 아두이노는 USB 케이블로 연결해 시리얼 통신을 통해 서로 데이터와 명령을 주고 받습니다.
★ 아두이노의 회로 구성 및 스케치 코드
준비물로 아두이노 우노(UNO) 보드와 LED, 저항, 브레드보드, 점퍼케이블이 필요합니다. 점퍼케이블은 양쪽 끝이 뾰족하게 튀어나온 MM(Male-Male) 타입으로 준비하면 됩니다. 점퍼케이블은 납땜 없이도 아두이노와 브레드 보드 사이에 전선을 연결할 때 사용하는 도구입니다. 아두이노 시뮬레이터에서 구성한 회로와 동일하게 아두이노 보드와 LED, 저항을 다음과 같이 연결합니다.
스케치 코드는 아두이노 통합개발환경에서 다음과 같이 작성합니다. setup() 함수에서 시리얼 통신을 초기화 하기 위해 Serial.begin() 메서드를 호출해 통신 속도를 9600으로 설정합니다. 9600은 1초에 9600 비트를 전송한다는 의미입니다. pinMode() 메서드는 디지털 13번 핀을 출력 모드로 설정해 13번 핀에 연결된 LED를 제어할 것입니다.
loop() 함수는 컴퓨터에서 실행 중인 C# 프로그램에서 전달된 명령에 따라 LED를 켜고 끄는 코드를 작성합니다. Serial.available()은 시리얼 통신으로 어떤 데이터가 전달될 때 참(True)을 반환합니다. 따라서 값이 전달되지 않을 때는 if 조건문을 빠져나가 아무 작업도 하지 않은 상태로 무한히 대기하면서 데이터가 전달되기를 기다립니다. 데이터가 전달되면 Serial.read() 메서드로 1 바이트(byte)를 읽어 그 값을 비교합니다. 만약 읽은 값이 문자 '1'인 경우 digitalWrite() 메서드로 13번 핀에 HIGH 신호를 전달해 LED를 켜고, '1'이 아닌 문자가 전달되면 digitalWrite() 메서드로 13번 핀에 LOW 신호를 전달해 LED를 끕니다. 마지막으로 loop() 함수는 매우 빠르게 반복하기 때문에 100 밀리초 지연시간을 줘 프로그램이 원활히 동작하도록 합니다. 아두이노와 컴퓨터를 USB 케이블로 연결하고, 완성된 코드를 아두이노 통합개발환경 상단 업로드 버튼을 눌러 아두이노 보드로 전달합니다.
★ 윈폼 디자인 설계 및 C# 코드 작성하기
비주얼 스튜디오를 실행해 윈폼(WinForm) 템플릿을 선택하고, 도구 상자에서 버튼 두 개를 가져옵니다. 버튼의 문자는 'ON'과 'OFF'로 변경하고 각각 클릭 이벤트를 추가합니다. 'ON' 버튼과 'OFF' 버튼을 구분하기 위해 이름을 ButtonOn_Click과 ButtonOff_Click으로 설정하였습니다.
아두이노의 LED를 제어하기 위한 C# 코드는 다음과 같습니다. System.IO.Ports 네임 스페이스는 시리얼 포트를 사용하기 위해 필요합니다. 9번째 줄은 시리얼 포트를 초기화하는 코드로 통신 속도는 아두이노에서 설정한 통신속도와 일치해야 정상적으로 데이터를 주고 받을 수 있습니다. 또한 COM3은 통신 채널의 이름으로 아두이노 보드를 컴퓨터에 연결할 때 COM# 과 같이 숫자가 달라질 수 있습니다. 따라서 여러분 컴퓨터에 맞는 통신 채널 이름을 사용할 수 있도록 주의합니다.
ButtonOn_Click()과 ButtonOff_Click() 메서드는 각각 'ON' 버튼과 'OFF' 버튼을 클릭할 때 실행되는 코드입니다. 내부 구조는 동일하지만 전달하는 값이 다릅니다. port 는 9번째 줄에서 초기화한 시리얼 통신을 위한 인스턴스 변수로 채널을 열고, 닫고, 쓰고, 읽을 수 있습니다. port.Write() 메서드를 호출하면 USB 케이블로 데이터를 전달합니다. 매개변수로 문자열 '1' 값을 쓰면 '1'을 전달하고, '0' 값을 쓰면 '0'을 전달합니다. 아두이노는 문자열 '1'의 값을 받으면 LED를 켜고, 그 이외의 값을 전달 받으면 LED를 끄도록 코드가 작성되어 '0' 값을 받을 때는 LED가 꺼집니다. 코드가 완성 되었다면 윈폼 프로그램을 실행해 'ON' 버튼과 'OFF' 버튼을 클릭할 때 아두이노의 LED 상태가 바뀌는지 확인해봅시다.
[출처] https://m.post.naver.com/viewer/postView.naver?volumeNo=33321064&memberNo=6255089
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.