아두이노만 하다가 혹시 라즈베리도 시작하시고 싶으신가요?
바로 이 책에서 해답을 찾으세요.
교보문고에서 절찬리에 판매중입니다.
_____________________up to here, Commercial!___________________________________________________
전자회로에서 입력 스위치를 on 하고 있으면 점차적으로 LED 가 밝아짐을 볼 수 있는 반면에 digitalWrite() 명령을 사용하면 즉각 on 이 되어 버린다. 그 차이점은 결국 LED 회로에 가해 주는 전압을 점차적으로 올려 줄 수 있느냐의 여부일 것이다. digitalWrite() 명령은 말 그대로 on 이냐 OFF이냐를 실행하는 반면에 analogWrite() 명령은 점차적으로 전압을 변화시키면서 즉 아날로그적으로 LED 밝기를 조절해 준다. 밝기 범위는 정수형 변수를 사용하여 0∼255까지 변화가 가능하다. 따라서 loop() 문 내부에서 analogWrite() 명령을 밝기 변수를 바꾸어 주면서 256 번 되풀이 할 필요가 있다.
이러한 목적의 아두이노 예제 Fading 을 불러 적용해 보자.
Fading 코드에서 처음에 나타나는 /* 로 시작해 */ 로 끝나는 부분은 여러 줄짜리 코드 해설 내용을 입력하는 곳으로서 한 줄짜리 해설 내용을 첨부하는 // 와 구별됨을 참조하자.
전자회로와 아두이노의 배선 연결은 위 그림을 참고하기 바란다. 이번 프로젝트에서는 전자회로의 스위치를 OFF 한 상태에서 LED 배선을 이용해 아두이노 코드로 fade in on, fade out OFF 하느 것이 목표다. 정수형 전역 변수 ledPin을 9번으로 설정한다.
setup()문 에서는 시리얼 출력이라든지 별도의 사용 계획이 없다면 아예 공란으로 남겨 두도록 하고 loop()문으로 넘어가도록 한다.
fade 는 서서히 밝아지거나 어두워진다는 뜻이다.
analogWrtie(핀번호,밝기) 명령에서 핀 번호는 디지털 핀을 뜻하며 밝기는 0∼255 까지의 정수형 단계이다. analogWrite() 명령에서는 digitalWrite() 명령에서처럼 pinMode()를 사용하여 OUTPUT 이나 INPUT을 지정할 필요가 없음에 유의하자.
for 루프라 함은 {● ● ● } 내의 ● ● ● 코드를 반복시키는 코드이다. 초기 for 루프 시작을 위한 정수형 로컬 변수 fadeValue를 0 으로 설정한다. 로컬 변수는 첨부되는 다른 루틴들과는 아무런 상관이 없다. 즉 첨부되는 다른 루틴에서는 int fadeVaue를 사용해도 loop()문의 그것과 아무런 상관 관계가 없다는 뜻이다.
참고로 아두이노의 명령이 digitalWrite(), analogRead() 이라든지 꼭 가운데 부분 문자를 대문자로 쓰는 관행이 있으므에 유의하여 int fadeValue 와 같은 변수 설정을 이해하면 된다.
fadeValue <=255 는 즉 fadeValue 가 255와 같거나 작을 경우 이어지는 명령 즉 fadeValue += 5 즉 fadeVaue 의 기존 값에다가 5를 추가한 값을 fadeVaule 값으로 가죠간다는 의미이다. 즉 5씩 51 단계 밝기를 조절할 수 있다. 각 단계 별로 지연시간이 30 msec 인데 너무 빠르므로 100msec 로 바꾸어 주면 fade 효과를 확실하게 관찰할 수 있다.
loop() 문의 앞부분이 점차 밝아 지는 fade in 이라면 뒷부분은 점차 흐려지는 fade out 에 해당한다. 여기도 30 msec 를 100msec 로 바꾸어 주면 fade 효과를 확실하게 관찰할 수 있다.
한편 예제 코드는 그대로 저장이 안된다. 만약 코드를 수정한 후 저장하고 싶다면 파일 명을 반드시 예제 코드 파일명과 다르게 바꾸어 주어야 한다.
'아두이노프로세싱 프로그래밍' 카테고리의 다른 글
전기 상호 유도에 의한 인버터: 아두이노 듀티 입력과 트랜지스터(TR) 스위칭에 의한 DC 전압의 AC 변환 (0) | 2017.09.14 |
---|---|
전기 상호 유도에 의한 DC 전압의 AC 변환과 인버터의 기초 원리 (0) | 2017.09.12 |
전자회로의 LED 회로를 이용한 전류제한 저항 전압 측정 (0) | 2017.09.10 |
전자회로의 LED 회로를 이용한 아두이노 코딩: analogRead(),Serial.begin() (0) | 2017.09.10 |
초보자를 위한 전자회로의 LED 회로를 이용한 아두이노 코딩 (0) | 2017.09.09 |