달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2017. 9. 18. 00:56

아두이노 C# 연동(시리얼 통신) 아두이노2017. 9. 18. 00:56

<목표>

아두이노와 C#을 시리얼통신으로 연결한다.


<해야할 것>

비주얼 스튜디오에서 할 것

 - UI 디자인 : 버튼

 - 아두이노로 LED제어를 위한 데이터 전송(버튼과 바인딩)

아두이노IDE에서 할 것

 - PC로부터 시리얼 통신을 타고 온 데이터로 LED 제어하는 코드 작성

아두이노에서 할 것

 - 회로 꾸미기


<UI 디자인>


<C# 코드>

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO.Ports;



namespace MyForm

{

    public partial class Form1 : Form

    {

        private SerialPort sp = new SerialPort();

        public Form1()

        {

            InitializeComponent();

            sp.PortName = "COM3";

            sp.BaudRate = 9600;

            sp.Open();

        }


        private void Form1_Load(object sender, EventArgs e)

        {


        }


        private void label1_Click(object sender, EventArgs e)

        {


        }


        private void button1_Click(object sender, EventArgs e)

        {

            sp.Write("1");

        }


        private void button2_Click(object sender, EventArgs e)

        {

            sp.Write("0");

        }


        private void button3_Click(object sender, EventArgs e)

        {

            if (sp.IsOpen)

            {

                sp.Close();

            }

        }


        ~Form1()

        {

            if (sp.IsOpen)

            {

                sp.Close();

            }

        }

    }

}



<아두이노 코드>

void setup()

{

  Serial.begin(9600);

  pinMode(8, OUTPUT);

}


void loop()

{

  char c = Serial.read(); 

  if (c == '1') { 

    digitalWrite(8, HIGH);

  } else if (c == '0') { 

    digitalWrite(8, LOW);

  }

}


<회로>


<주의사항>

아두이노 IDE와 C#의 프로그램이 같은 포트를 쓸 경우 프로그램 충돌이 난다.

여러가지 해결 방법이 있겠지만, 그냥 C# 프로그램을 실행시킬 때는 아두이노 IDE를 잠시 꺼주면 되겠다.

:
Posted by 클레잇