[아두이노#619] arduino에 accelstepper라이브러리로 스탭모터(28byj-48)와 드라이버(uln2003)를 C#윈폼과 노드레드(node-red)로 제어하는 방법!
프로그래밍/아두이노 호작질 2025. 2. 18. 23:03
https://youtube.com/live/mishBI5jTG0
[아두이노#619] arduino에 accelstepper라이브러리로 스탭모터(28byj-48)와 드라이버(uln2003)를 C#윈폼과 노드레드(node-red)로 제어하는 방법!
(오늘의 목표)
1.C#윈폼을 이용해서 스탭모터 2개 제어할 것!
2.노드레드(node-red)를 이용해서 스탭모터 2개 제어할 것!
(제약사항)
1.스탭모터는 아두이노가 제어하고 C#이나 노드레드는 제어명령을 전송해서 원격제어 하는 개념임!
2.스탭모터 2개는 완벽하게 따로따로 제어가 되어야한다!
-녹칸다가 내장 라이브러리은 stepper.h에서 accelstepper.h로 바꾸려는 이유!
3.스탭모터가 일정한 간격으로 스탭모터의 작동상태를 원격제어프로그램으로 전송하는데 항상 일정한 간격을 유지해야한다!(100밀리초)
4.제어프로그램에서 제어를 위해서 전송하는 데이터 형식
-G01 X스탭량 Y스탭량 F속도
-(예시) G01 X1024 Y2048 F1000
-(해석) X모터는 1024위치로 이동하고, Y모터는 2048위치로 이동하는데 최대속도를 1000으로 해서 가감속제어해라!
5.아두이노에서 제어프로그램쪽으로 상태를 전송하는 데이터 형식(CSV형식)
-X모터의작동상태,X모터의스탭량,Y모터의작동상태,Y모터의스탭량
-(예시) 1,2048,0,0
-(해석)X모터는 작동중이고 현재 2048스탭위치에 있고, Y모터는 멈춰있고 현재 0의 위치에 있음!
-스탭모터의 작동상태는 0이면 멈춰있음, 1이면 작동중이라는 의미이다!
6.제어프로그램와 아두이노가 통신할때 데이터 끝에 종료문자인 LF(\n)를 반드시 붙힌다!
(참고)
1.C#윈폼은 다음주 진행될 유니티에서 사용할 스크립트와 사용하는 코드가 대단히 유사하기 때문에 중요하다고 볼 수있음!
2.녹칸다는 visual studio 2019버전이 설치되어있는데, 최신버전은 2022버전인것 같은데 버전의 차이에 대한 이슈는 없음!
3.비쥬얼 스튜디오는 커뮤니티버전은 개인버전으로 아무나 공짜로 다운받아서 쓸 수 있음!
(주의)
1.아두이노가 컴퓨터에 USB로 연결되어있을때 윈도우쪽에 단 하나의 프로그램만 포트를 개방해서 통신할 수 있음!
2.예를들어 현재 녹칸다의 아두이노가 컴퓨터에 COM6포트에 연결되어있는데, COM6포트를 시리얼모니터가 점유하고 있으면 C#에서 사용할 수 없음!
3.C#으로 만든 어플리케이션이 COM6을 점유하고있다면 아두이노의 시리얼모니터는 열리지 않음!
4.C#으로 만든 앱이 COM6을 점유하고있다면 아두이노 IDE는 아두이노에게 프로그램을 업로드 해줄 수 없음!
(공통회로도)

(예제)
1.지정된 G코드형식의 제어명령을 아두이노에서 어떻게 해석하도록 할 것인가?
2.스탭모터 2개를 2,3,4,5에 한개 6,7,8,9에 한개씩 연결하고 지정되어 있는 명령어대로 시리얼모니터에서 양방향 통신이 가능하도록 하시오!(아두이노 코드 완성)
3.C#윈폼 프로젝트를 생성해서 예제2번에서 만들어둔 아두이노코드가 작동되는 윈도우 어플리케이션을 만드시오!
4.노드레드(node-red)를 이용해서 예제2번에서 만들어둔 아두이노 코드가 작동되도록 하시오!


