C#으로 아두이노의 LED 제어하기 - C# 프로그래밍

 

★ C# 프로그램으로 아두이노의 LED 제어하기

컴퓨터 또는 노트북으로 아두이노에 연결된 장치를 제어하려면 컴퓨터에 C# 프로그램을 실행하고, 아두이노에 스케치 프로그램을 실행해야 합니다. 그리고 컴퓨터와 아두이노는 USB 케이블로 연결해 시리얼 통신을 통해 서로 데이터와 명령을 주고 받습니다.

C# 프로그램과 스케치 프로그램 사이의 통신 개념도




★ 아두이노의 회로 구성 및 스케치 코드

준비물로 아두이노 우노(UNO) 보드와 LED, 저항, 브레드보드, 점퍼케이블이 필요합니다. 점퍼케이블은 양쪽 끝이 뾰족하게 튀어나온 MM(Male-Male) 타입으로 준비하면 됩니다. 점퍼케이블은 납땜 없이도 아두이노와 브레드 보드 사이에 전선을 연결할 때 사용하는 도구입니다. 아두이노 시뮬레이터에서 구성한 회로와 동일하게 아두이노 보드와 LED, 저항을 다음과 같이 연결합니다.

LED 제어를 위한 아두이노 회로 구성



스케치 코드는 아두이노 통합개발환경에서 다음과 같이 작성합니다. setup() 함수에서 시리얼 통신을 초기화 하기 위해 Serial.begin() 메서드를 호출해 통신 속도를 9600으로 설정합니다. 9600은 1초에 9600 비트를 전송한다는 의미입니다. pinMode() 메서드는 디지털 13번 핀을 출력 모드로 설정해 13번 핀에 연결된 LED를 제어할 것입니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

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 제어를 위한 윈폼 디자인



아두이노의 LED를 제어하기 위한 C# 코드는 다음과 같습니다. System.IO.Ports 네임 스페이스는 시리얼 포트를 사용하기 위해 필요합니다.  9번째 줄은 시리얼 포트를 초기화하는 코드로 통신 속도는 아두이노에서 설정한 통신속도와 일치해야 정상적으로 데이터를 주고 받을 수 있습니다. 또한 COM3은 통신 채널의 이름으로 아두이노 보드를 컴퓨터에 연결할 때 COM# 과 같이 숫자가 달라질 수 있습니다. 따라서 여러분 컴퓨터에 맞는 통신 채널 이름을 사용할 수 있도록 주의합니다.

LED 제어를 위한 C# 코드

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
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
90 [아두이노 arduino] Arduino – base64 encode and decode file 졸리운_곰 2024.03.11 65
89 [아두이노 arduino] Simple encryption using XOR operator 졸리운_곰 2024.03.11 59
88 [아두이노 arduino] 아두이노 json 암호화: Crypt json content file 졸리운_곰 2024.03.11 70
87 IoT (임베디드 인터넷) RabbitMQ for IoT – Fun Tech Projects file 졸리운_곰 2024.03.09 84
» C#으로 아두이노의 LED 제어하기 - C# 프로그래밍 file 졸리운_곰 2024.02.25 54
85 [Raspberry Pi] 라즈베리파이 GPIO 포트 ( LED, 버튼 ) 제어 file 졸리운_곰 2024.01.02 74
84 [Raspberry Pi] 라즈베리파이 GPIO file 졸리운_곰 2024.01.02 75
83 [Raspberry Pi] 2020년에 Raspberry Pi에서 실행할 수 있는 20가지 최고의 운영 체제 file 졸리운_곰 2024.01.02 52
82 [Raspberry Pi] 라즈베리파이 클러스터(병렬연결) file 졸리운_곰 2024.01.02 96
81 [Embedded Software] ARM Cortex-M : printf()를 만들어 보자 file 졸리운_곰 2023.04.02 48
80 [ 一日30分 인생승리의 학습법] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (4) - 한글 설정 file 졸리운_곰 2023.01.01 60
79 [ 一日30分 인생승리의 학습법] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (3) 최적화 하기(raspi-config) file 졸리운_곰 2023.01.01 57
78 [ 一日30分 인생승리의 학습법] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (2) - 이미지 size 늘리기 file 졸리운_곰 2023.01.01 62
77 [ 一日30分 인생승리의 학습법] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (1) 프로그램설치 file 졸리운_곰 2023.01.01 74
76 [Embedded Hardware] Atmega328 보드 만들기 - 보드 납땜 및 태스트.. file 졸리운_곰 2022.07.13 136
75 [Embedded Hardware] Atmega128 시작 - 키트 납땜 file 졸리운_곰 2022.07.13 140
74 SQLite를 사용해야 하는 이유 졸리운_곰 2021.10.17 97
73 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (4) - 한글 설정 file 졸리운_곰 2021.07.10 277
72 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (3) 최적화 하기(raspi-config) file 졸리운_곰 2021.07.10 68
71 [라즈베리파이] 라즈베리파이 에뮬레이터 설치(QEMU) - raspbian jessie (2) - 이미지 size 늘리기 file 졸리운_곰 2021.07.08 85
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED