안녕하세요~ 오랜만이네요. 전 글과 비슷한 맥락이지만 오늘은 제목처럼 아두이노와 LED, 버튼을 가지고 버튼을 누를 때 누르는 횟수가 홀수면 LED가 켜지고 짝수면 꺼지는 코드를 짜고 실행해보겠습니다.
먼저 이 글을 이 글을 읽기 전에 아래 글을 읽고 오시면 도움됩니다.
[아두이노] RGB LED를 버튼 1개로 제어하기
안녕하세요~~ 오늘은 RGB LED를 버튼 1개를 가지고 누를때마다 불빛이 바뀌는 것을 해볼 겁니다. 우선 준비물은 아두이노 보드(UNO), RGB LED, 버튼 1개, 아두이노 케이블 입니다. 우선 회로를 구성해야 하는데..
iwantseongdae.tistory.com
우선 늘 그랬듯이 아두이노 IDE를 실행해줍니다. 밑에 먼저 코드를 보여드리고 설명해드리겠습니다.
제가 옆에 주석으로 설명해 놓았기도 했지만 다시 설명해드리겠습니다.
우선 변수를 설정해줍니다. 저는 i가 편해서 한 것이라 a, b, c 등등 원하시는 거 쓰시면 됩니다.
변수의 초기 설정은 0으로 해주시고 저 명령어는 void setup도 아니고 void loop도 아닌 맨 위에 써주세요.
그리고 디지털 핀을 사용할 것이기 때문에 저는 13번 핀을 버튼, 12번 핀을 LED로 사용했습니다.
(이때도 핀을 맘대로 설정하시면 됩니다)
그리고 버튼으로 사용하는 핀을 입력으로 설정해주시고, LED로 사용하는 핀을 출력으로 설정해주세요.
(예전 글에 입력 출력에 대해서 한 얘기가 있습니다)
다 설정하셨으면 이제 본격적으로 코드를 짜보겠습니다. 제목에서 말했듯이 '버튼을 누를 때' 라고 하였으니 if문을 써줍니다. (전에 글에서 if문에 대한 내용을 써놨으니 참고해주세요~)
digitalRead(); 를 통해서 버튼이 눌렸을 때를 조건으로 잡아주시고 눌렸을 때는 HIGH(1)이므로 HIGH라고 써줍니다.
또한 버튼이 눌렸을 때 '누른 횟수'가 증가해야 하므로 i를 누른 횟수로 생각하시고 i를 누를 때마다 1씩 증가시킵니다.
그리고 밑에 delay(); 를 쓰는데 쓰는 이유는 설명해놨듯이 우리가 버튼을 누를 때 속도를 모르기 때문에 delay()를 써줘서 맞춰줘야 합니다. 그리고 홀수는 2로 나누었을 때 나머지가 1이고, 짝수는 2로 나누었을 때 0인건 다들 아시겠죠?
모르시면 이제부터 아시면 됩니다. 몰랐던 걸 아는 게 중요하니까요. 그래서 횟수가 홀수일 때를 또 if문으로 써주시고 홀수일 때 LED가 켜지도록 digitalWrite(); 를 써줍니다. 그리고 짝수일 때는 홀수랑 똑같이 if문을 써주시고 LED까 꺼지도록 digitalWrite(); 를 써줍니다. (digitalWrite()와 digitalRead()에 대한 내용도 전에 쓴 글에 다 있습니다)
이렇게 다 쓰셨으면 완성입니다. 왼쪽 상단에 있는 컴파일 버튼을 눌러서 컴파일 해주세요. 그럼 코드는 완성입니다.
이제는 회로를 짜보도록 하겠습니다. 준비물은 아두이노보드, LED, 케이블, 버튼입니다. 우선 사진과 같이 회로를 배치해주세요.
사진과 같이 버튼 왼쪽에 5V를 연결해주시고, 왼쪽은 저항으로 빼서 GND, 그리고 저항이 있던 자리 아래에 13번핀(신호핀)을 연결해주세요. 그리고 LED는 긴 쪽에 12번핀(신호핀)을 연결해주시고, 짧은 쪽은 -이므로 GND에 연결해줍니다. 이렇게 하시면 회로 구성은 끝입니다.
이제 이 코드를 업로드하고 실행시켜보시면 됩니다~~~
오늘 이렇게 버튼을 누를 때 버튼 횟수가 홀수면 LED가 켜지고 짝수면 꺼지게 하는 코드를 짜보고 회로 구성도 해보고 직접 실행도 해봤습니다. 다음엔 서보모터에 관련한 글로 돌아오겠습니다. 봐주셔서 감사합니다~~
[아두이노] RGB LED를 버튼 1개로 제어하기 (0) | 2020.04.20 |
---|---|
[아두이노] RGB LED를 랜덤밝기로 깜빡이기 (0) | 2020.04.19 |
[아두이노] 아두이노로 LED 깜빡이기 (0) | 2020.04.19 |
[아두이노] 아두이노란? (0) | 2020.04.15 |