★ 제가 생각한 두번째 배워야될 내용!! millis() 함수 입니다.
○ millis()함수는 시간을 가져오는 함수입니다.
쉽게말해, 아두이노 시작부터 경과된 시간을 millisecond 단위로 가져온다고 보면되는데,
milliseconde란, 1000분의 1초로 시간을 나타내어줍니다. 즉, 1000 은 1초라는 말입니다.
ex) 쉽게말해서, 아두이노 시작 후 3초가 경과되면? millis() 값은 3000 이라고 보시면 됩니다.
★★ 준비물 ★★
◎ 3. Serial 소스코드
◎ 아두이노 보드 ( 본 예제에서는 아두이노 시리즈 중 UNO 보드를 사용하였습니다 )
1. 이전 시간 소스코드에서 이어서 작업합니다. 이전에 학습한 코드는 다음과 같습니다
◎ 이전 학습에서는 시리얼 모니터를 통해 "내용"이라는것이 출력 되었습니다.
2. 다음은 millis() 사용법입니다
◎ millis() 를 Serial.println() 함수에 바로 적용 시켰습니다. 이것으로 millis() 사용방법은 끝이라고 보시면 됩니다.
◎ 업로드 버튼을 눌러 아두이노 보드에 업로드 후 시리얼 모니터를 열고 확인하세요. 숫자가 빠른 속도로 오르는 것을 확인할 수 있습니다.
3-1. 다음은 millis() 의 활용법 입니다. ( millis() 값을 변수에 담아보자 )
◎millis() 함수의 값을 변수에 담았습니다.
- unsigned : 정수라는 뜻입니다.
- long : 변수 타입이 long 타입입니다.
- unsigned long : 정수를 담을 수 있는 long 타입 변수라는 뜻입니다
- now : 변수의 이름입니다 ( 꼭! now로 할 필요는 없습니다. 닉네임으로 인식하시면 됩니다 )
◎ Serial.println() 함수에 millis()함수의 값이 저장된 now를 넣어줬습니다.
※ 출력결과는 millis()함수를 바로 넣는거나 동일합니다.
3-2. 조건문을 사용해보자.
◎ 조건문은 if(조건){ 실행 } 입니다.
◎ if(now > 5000) { } : 만약, now 값이 5000보다 크면 { } 안에 있는 코드를 실행하라는 뜻입니다.
(now 에는 millis() 값이 들어있습니다. millis() 값이 1000 이면 1초입니다)
◎ 업로드 결과 시리얼모니터를 보시면 5초 후 5001 값부터 출력되는 것을 볼 수 있습니다.
3-3. 계속 출력하지말고, 1초마다 출력을 하고 싶다면, 아래와 같이 이전 시간을 다른 변수에 담아놓으면 됩니다.
◎ before 변수를 만듭니다. 해당 값은 0으로 초기화 해줍니다.
( 전역변수로 설정하는 이유는, loop()함수 속에 생성할 경우, 초기화가 되기때문에, 이전 시간을 저장하였다 하더라도, loop()함수가 한바퀴 돌아버리면, 초기화가 이루어집니다. )
○ 전역변수란 : 쉽게말해, 전체적으로 해당 변수를 사용할 수 있다는 뜻입니다.
○ 지역변수란 : now 변수와 같이 함수내에서만 사용이 가능한 변수를 뜻합니다.
※ befor 변수는 setup()함수에서 사용이 가능하나, now 변수는 setup()함수에서 사용이 불가능합니다.
◎ if(now - before >= 1000){ } : 만약, 현재 시간(now == millis())에서 이전 시간(before)을 뺀 시간이 1000 보다 크거나 같다면 { } 속에 있는 코드를 실행하라는 뜻입니다.
◎if(now - before >= 1000){ before = now; } : {} 괄호 속 before 변수에 now 현재 시간을 갱신합니다. 이유는, 마지막으로 출력한 시간을 갱신해두지 않을 경우 발생되는 현상은, 직접 업로드 해보시면 됩니다.
※ 시리얼모니터로 출력되는 값이 보이나요? 이전에는 파파팍! 올라갔다면... 이 코드부터는 1초마다 1번씩 출력이 되는 것을 보실 수 있습니다. 즉, 이 코드만 이해한다면, 1초마다 LED를 켜고 끄고, 또는 1초마다 모터를 정방향, 역방향 동작이 가능합니다. 제 예제에서는 꼭! 필요한 경우가 아니라면 delay()함수는 가능하면 사용하지 않을 예정입니다.
☆ '==' 와 '=' 의 차이
○ == : 양쪽의 값이 같은지를 비교
ex ) 'A' == 'B' 같나요? 다르죠? , 'A'=='A' 같죠?
○ = : 대입하라!
ex ) 100 = 200 이럴 경우 100은 200이 됩니다.
즉 A의 값이 100이고, B의 값이 200이면, A = B 코드가 실행되면 A는 100이 아닌 200값을 가지게 됩니다.
'아두이노 기초 학습' 카테고리의 다른 글
6. 아두이노 1시간 학습 후 사물인터넷(IOT) 1분 적용 (0) | 2022.12.09 |
---|---|
5. 아두이노 시리얼 통신 두번째 시간 (0) | 2022.12.09 |
3. 아두이노 Serial 사용하기 (0) | 2022.12.08 |
2. 아두이노 스케치 (0) | 2022.12.08 |
1. IOT 아두이노 시작하기.(꿩먹고 알먹고 학습) (2) | 2022.12.08 |
댓글