대부분의 센서
아두이노 보드와 센서의 연결
CDS는 빛 세기가 변하면 저항 값이 변화
void setup() {
pinMode(5, OUTPUT); // PWM 출력(디지털 핀 5)으로 LED 제어
}
void loop() {
// 아날로그 입력핀 2번을 통하여 입력된 전압값을 0~1023범위의 값으로 읽어 cdsValue에 저장
int cdsValue = analogRead(2);
int pwmValue = map(cdsValue, 0, 1023, 0, 255); // 0~1023범위의 val값을 0~255 범위로 변환
analogWrite(5, pwmValue); // PWM 신호로 출력
delay(20);
}
소리의 속도가 340m/s인 것을 이용하여 거리 측정
초음파 발생기에서 발생한 초음파가 전방에 있는 물체에 반사되어 센서로 돌아오는 시간을 측정하여 거리 계산
에코 핀(Echo)을 통하여 반사되는 초음파 값 입력
10μ초의 트리거 펄스를 발생
digitalWrite(TRIG_pin, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_pin, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_pin, LOW);
HC-SR04 모듈은 트리거 펄스를 기준으로 40kHz의 초음파 신호를 8번 발생
되돌아오는 반사 펄스를 pulseIn( )함수를 사용하여 계측
time= pulseIn(ECHO_pin, HIGH);
시간을 거리로 계산
distance = time/58
완성된 Sketch
int ECHO_pin = 7; // 반사 신호 수신 핀
int TRIG_pin = 8; // 트리거 신호 발생 핀
int time;
void setup( ){
pinMode(ECHO_pin, INPUT); // 반사 신호 수신 핀 입력모드 설정
pinMode(TRIG_pin, OUTPUT); // 트리거 신호 발생 핀 출력모드 설정
Serial.begin(9600); // 시리얼 통신을 위한 전송속도 9600 설정
}
void loop() {
digitalWrite(TRIG_pin, LOW);
delayMicroseconds(2); // 트리거 핀을 2μ초 동안 “LOW”
digitalWrite(TRIG_pin, HIGH);
delayMicroseconds(10); // 트리거하기 위하여 10μ초 동안 “HIGH”
digitalWrite(TRIG_pin, LOW); // 트리거 핀을 다시 “LOW”
time = pulseIn(ECHO_pin, HIGH); // 반사펄스 시간 읽기
int distance = time/58; // 펄스 시간을 거리로 계산 (cm 단위)
int pwmVal = map(distance, 0, 200, 0, 255); // pwm 출력값으로 변환
analogWrite(5, pwmVal); // 5번에 연결된 led에 pwmVal 출력
delay(100);
}
예제1의 스케치코드에서 cdsValue와 pwmValue의 값을 다음과 같이textLCD에 표시하도록 스케치를 만들어 보자.
물체의 거리에 따라 도레미파솔라시도를 연주하는 스케치를 만들어 보자.