안녕하십니까
전력전자와 각종MCU를 공부하고 최종적으로 작품을 만드는 전자 장인입니다
오늘의 주제는
아두이노 우노를 이용한 LED 쉬프트 제어 방법!
1. 제어동작 분석
지난 시간까지 아두이노 우노에 LED를 연결하여 온/오프 동작을 진행해 보았습니다.
하나의 LED만 연결하고 진행함에 따라
이번에는 5개의 LED를 연결하고
온/오프 동작뿐 아니라
LED의 점들이 옮겨지는 동작을 수행해 보겠습니다.
오늘 저희가 진행할 제어는 다음과 같습니다.
1. LED 하나씩 쉬프트 제어
5개의 LED가 존재하며 처음 LED부터 끝 LED까지 하나씩 온/ 오프 되며
옮겨지는 동작입니다.
2. LED 온 유지하며 쉬프트, 오프 유지하며 쉬프트
초반에는 하나씩 켜지고 쉬프트 될 때마다
이전 LED는 켜져 있는 상태를 유지합니다.
또한 5개의 LED가 모두 켜진 뒤 하나씩 꺼지는 동작을 수행합니다.
2. 회로구성
회로 구성은 다음과 같습니다.
아두이노 우노의 핀 2~6번을 사용함에 따라
핀 번호는 PD2~PD6에 연결하게 됩니다.
LED의 색은 편하신 색으로 선택하여 극성에 맞게 연결시켜 주시기 바랍니다.
지난 포스팅을 확인 후 이번 실습을 진행하시면 더욱 이해가 편하시니
아래 포스팅을 참고 바랍니다.
2023.08.20 - [프로그래밍/아두이노] - 아두이누 우노 LED 제어 방법, 회로구성, 코드 분석
3. LED 하나씩 쉬프트 제어 코드 분석
다음은 LED 하나씩 쉬프트 하는 코드입니다.
직접 동작시켜 보기 위해 일부분 코드는 작성하지 않았습니다.
핀 선언은 이전 게시글을 참고하셔서 5개 모두 선언 후 진행 부탁드립니다.
int control[]={led2, led3, led4, led5, led6}; // LED 배열 0~4 void loop() { for (int i = 0; i < 5 ; i++) { digitalWrite(control[i], HIGH); delay(200); digitalWrite(control[i], LOW); } for (int i = 4; i >= 0; i--) { digitalWrite(control[i], HIGH); delay(200); digitalWrite(control[i], LOW); } } |
control[]=~~
LED를 변수에 지정 후 배열에 저장함을 확인할 수 있습니다.
배열을 선언할 때는 "변수명[]"으로 지정할 수 있습니다.
loop
무한 반복을 위하여 loop에서 동작을 수행합니다.
for문
첫 번째 for문은 i가 0에서 시작하며 i가 5 미만이 될 때까지 i를 하나씩 증가시키는 조건입니다.
control [i]는 배열을 사용하여 i 가 하나씩 증가할 때 i 숫자에 해당하는 LED가 온(HIGH) 동작을 수행합니다.
그 상태 이후 200ms 대기하며
i 숫자에 해당하는 LED가 오프(LOW) 동작을 수행하게 됩니다.
이 동작을 i가 5 미만이 될 때까지 수행하면서 LED는 한 칸씩 쉬프트 하는 모습을 확인할 수 있습니다.
두 번째 for문은 반대로 i가 4부터 시작하며 i가 0보다 작아질 때까지 i를 하나씩 감소시키는 조건입니다.
따라서 LED동작은 첫 번째 for문의 동작과 반대됨을 확인할 수 있습니다.
4. LED 온 유지하며 쉬프트, 오프 유지하며 쉬프트
다음은 LED 온을 유지하며 쉬프트 하는 코드입니다.
직접 동작시켜 보기 위해 일부분 코드는 작성하지 않았습니다.
LED 하나씩 쉬프트 동작보다 간단한 것을 확인할 수 있습니다.
void loop() { // put your main code here, to run repeatedly: for(i=0; i<5; i++){ //n이 5이하일때 N 1씩 증가 digitalWrite(control[i],HIGH); delay(200); } for(int i = 5 - 1; i >= 0; i--){ digitalWrite(control[i],LOW); delay(200); } } |
코드를 살펴보면 LED 하나씩 쉬프트 제어와 별 다르지 않음을 볼 수 있습니다.
그 이유는 LED를 오프(LOW)하는 동작을 넣지 않았기 때문입니다.
HIGH 신호를 주고 LOW신호를 주지 않으면 해당 핀에서는 계속 HIGH 신호를 유지하고 있음을 이용하였습니다.
따라서 첫 번째 for문에서는 LED를 온 시키면서 i를 증가시켜 LED가 켜져 있는 상태를 유지할 수 있습니다.
두 번째 for문은 켜져 있는 LED를 맨 끝부터 오프 시킴에 따라 원하는 동작을 확인할 수 있습니다.
다음 시간에는 새로운 아두이노 우노의 센서를 사용해 보는 시간을 가지도록 하겠습니다.
지금까지 전력전자와 각종MCU를 공부하고 최종적으로 작품을 만드는 전자 장인이었습니다
감사합니다
'프로그래밍 > 아두이노' 카테고리의 다른 글
아두이노 우노 LCD 사용법 및 코드 분석 (1) | 2023.12.27 |
---|---|
아두이노 우노 RFID 카드 사용법 및 코드, 아두이노 연결, 핀맵, 실습 결과 살펴보기 (1) | 2023.10.18 |
아두이누 우노 LED 제어 방법, 회로구성, 코드 분석 (0) | 2023.08.20 |
아두이노 우노 구성과 코딩 전 살펴보기 (0) | 2023.07.13 |
아두이노키트 구매와 아두이누DIY 진행 전 IDE 설치하기 (0) | 2023.07.09 |
댓글