먼저 아두이노를 컴퓨터와 연결한 후 장치관리자에 들어가 포트번호를 확인해준다.
그 이후 아두이노스케치에서 포트번호와 아두이노 종류를 맞춰준다.
void setup() {
//13번 핀 아웃풋으로 설정 pinMode(13, OUTPUT);
//통신속도 9600
Serial.begin(9600);
}
void loop() {
//만약 시리얼포트로 신호가 들어왔다면
if(Serial.available())
{
//시리얼포트를 읽어서 c에 대입
int c = Serial.read();
if(c == '1')
{
digitalWrite(13,HIGH);
}
else if(c == '0')
{
digitalWrite(13,LOW);
}
아두이노 소스이다.
C#에서 시리얼통신으로 신호를 보내주면 led를 켰다껐다 하는 소스이다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; //serialport클래스를 사용하려면 선언해줘야한다.
namespace WindowsFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
//아두이노 보드가 연결된 포트의 이름
serialPort1.PortName = "COM7";
//아두이노 보드 통신속도
serialPort1.BaudRate = 9600;
//지정한 포트 열기
serialPort1.Open();
}
//켜기 버튼을 눌렀을 때 작동하는 클래스
private void button1_Click(object sender, EventArgs e)
{
//시리얼 포트로 "1"을 보낸다.
serialPort1.Write("1");
//레이블에 LED켜짐 표시
label1.Text = "LED 켜짐";
button1.Enabled = false;
button2.Enabled = true;
}
//끄기 버튼을 눌렀을 때 작동하는 클래스
private void button2_Click(object sender, EventArgs e)
{
//시리얼 포트로 "0"을 보낸다.
serialPort1.Write("0");
//레이블에 LED켜짐 표시
label1.Text = "LED 꺼짐";
button1.Enabled = true;
button2.Enabled = false;
}
//폼이 닫히는 도중에 작동하는 클래스
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//만약 시리얼포트가 열려있다면
if(true == serialPort1.IsOpen)
{
//시리얼포트를 꺼라
serialPort1.Close();
}
}
}
}
C#소스이다. 주석으로 설명은 자세히 적어놨다.
UI모습이다.