[아두이노#377] (릴레이제어#3) 16채널 릴레이에 자동화 매크로를 적용하는 방법 연구해보기!(녹칸다/포로리야공대가자)
프로그래밍/N채널릴레이와 자동화매크로 2021. 11. 10. 22:59
(릴레이제어#3) 16채널 릴레이에 자동화 매크로를 적용하는 방법 연구해보기!
녹칸다의 N채널 릴레이를 제어하기 위한 시리즈이다!
이번 시리즈는 N채널 릴레이를 효과적으로 제어하고 일정한 스케쥴에 의해서 제어되도록 해보는데 목적이 있다!
그러나 매우 복잡한 기술을 구사하기 보다는 누구나 직관적으로 이해 할만한 코드를 베이스로 해서 가능하도록 한다!(사실 녹칸다가 복잡한걸 잘 모름)
이번편 부터가 녹칸다의 릴레이 제어 시리즈의 본격적인 내용이라고 할 수 있다!
외부에서 릴레이의 작동상태를 임의로 입력해서 제어하는게 아니라 일정한 스케쥴에 의해서 제어 될 수 있도록 자동화 매크로를 작성해보는 것이다!
아두이노 우노에 16채널 릴레이를 연결하고 어떤 스크립트를 적용해서 프로그래머블한 스케쥴링을 가능하도록 하는 것이 핵심이라고 할 수 있다!
아래와 같이 단계적으로 접근해보도록 한다!
(선행해야할 내용) 아두이노 우노에 16채널 릴레이를 74HC595 2개를 이용해서 연결한다!
1.하나의 채널을 관리하기 위한 구조체를 생성한다!
2.구조체를 채널의 갯수에 맞게 확장한다!
3.각 채널에 자동화 매크로를 입력가능한 함수를 구성한다!
4.메인루프에서 일정한 시간간격으로 N채널 릴레이의 구조체에 포함된 스케쥴 정보를 확인하면서 릴레이를 작동시킨다!
5.이때 포함해야할 필드는 채널번호, ON유지시간, OFF유지시간, 반복횟수 등이 있다!
6.일단 스크립트의 입력은 PC의 시리얼입력으로 가능하도록 한다!
7.최종적으로 JSON으로 데이터를 입력했을때 자동화 매크로가 각 채널별로 작동될 수 있도록 한다!
알아봐야할 함수
shiftOut(데이터핀,클락,LSBFIRST,데이터);
shiftOut(데이터핀,클락,MSBFIRST,데이터);
bitSet(데이터,인덱스);
bitClear(데이터,인덱스);
bitRead(데이터,인덱스);
(▼시간이 남아서 C#으로 제어하는것 만들어봄!)