LED 제어 응용 2 - 조건문 - 바로 실행해보면서 배우는 아두이노
learn
Practice
learn
02 2 강 - LED 제어하기
LED 제어 응용 2 - 조건문

이번 강의에서는 LED 제어와 조건문을 응용하여 사용합니다.

이번 조건문을 사용할 때에는 한 가지 더 흥미로운 것에 대해 다룰 것인데, 바로 난수(무작위)입니다. 주어진 코드에 대해서 간단하게 설명을 해보면 다음과 같습니다.

  • setup 함수에 13번, 12번 핀을 출력으로 설정합니다.
  • RandomSeed 함수를 이용하여 시드값을 초기화시킵니다.
  • Random 함수를 이용하여 1~100 까지의 난수를 발생시킵니다.
  • 0~99  사이에서 발생한 난수를 2로 나누고 그 나머지 값을 조건으로 사용합니다.
  • 2로 나누고 나머지 값은 결국 홀수(1) 혹은 짝수(0)가 됩니다.
  • 조건문은 나머지 값이 홀수인 경우와 짝수인 경우에 따라 왼쪽의 LED를 켜거나 오른쪽의 LED 를 켭니다.

Random 함수의 경우, 주어진 인자값의 개수만큼 난수가 발생하게 됩니다. 100일 경우에는 0을 포함하므로 0~99 의 난수가 발생하게 됩니다.

여기서 한 가지 설명이 더 필요한 건 setup 함수에 들어있는 RandomSeed 라는 것입니다. 아두이노의 랜덤는 정확히 말해서 랜덤이 아닙니다. 미리 정해져 있는 무작위 숫자의 연속을 순서대로 출력하는 것일 뿐입니다. 

그래서 아두이노의 리셋 버튼을 누르거나 다시 시작하면 똑같은 순서의 랜덤값을 출력합니다.

이 문제를 해결하기 위해서 RandomSeed 라는 함수가 존재합니다. RandomSeed 는 연속된 무작위 숫자의 어느 곳부터 차례로 불러올지 결정합니다. 

함수의 인자값으로는 analogRead(A0)을 사용하고 있습니다.

analogRead 함수는 아날로그 핀의 값을 읽어오는 함수인데, analogRead(A0) 의 경우 아날로그 0번 핀의 값을 읽어오겠다는 뜻입니다.

현재 구성한 회로 중에 아날로그 0번 핀과 연결된 것은 없습니다. 이렇게 별도의 연결없이 아날로그핀의 값을 읽어오게 되면 0~1023 중 무작위의 값(플로팅 상태-다음 수업에서 자세히 배웁니다)을 반환해줍니다.

따라서 랜덤 시드값이 무작위로 초기화되고, 우리가 원하는 진정한 의미의 난수가 만들어지게 됩니다.

Practice

ramdom(2) 함수의 결과 값은 0 또는 1 입니다.

조건문을 사용하여 랜덤 값이 0이면 13번 핀에 연결된 빨간 LED가 켜지고, 1이면 12번 핀에 연결된 노란 LED가 켜집니다.

LED 3 개로 회로를 구성해보고 랜덤하게 3개 중 1개의 LED가 켜지도록 해보세요!

learn
Practice
Q & A
Q&A forum that anyone can ask and answer.
Share your questions and answers with other students and grow together!
Registered Questions(0)