//각 센서의 핀을 설정해줍니다.. 다른 핀에 연결해도 됩니다.
#define RED 8
#define GREEN 9
#define BLUE 10
int buzzer=12;
int trigPin = 5;
int echoPin = 4;
void setup(){
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
}
void loop(){
int redValue=0; //RGB는 각 색상의 0~255까지의 값을 이용해 출력하므로
int greenValue=0; // 값을 저장할 변수를 지정해 줍니다.
int blueValue=0;
float duration, distance;
digitalWrite(buzzer, LOW);
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
digitalWrite(trigPin, HIGH); //초음파를 보낸후 echopin이 HIGH 상태로 대기합니다.
delay(20);
digitalWrite(trigPin, LOW);
// echopin HIGH 지속시간을 저장합니다.
duration = pulseIn(echoPin, HIGH);
// 초음파의 속도 340, 밀리세컨드에서 세컨드로 10000
// 초음파가 나갔다가 돌아오는 거리이므로 2로 나누어줍니다.
distance = ((float)(340 * duration) / 10000) / 2;
if(distance<30)
{
redValue=0;
greenValue=0;
blueValue=255;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
if(distance<20)
{
redValue=0;
greenValue=255;
blueValue=0;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
}
if(distance<13)
{
redValue=200;
greenValue=100;
blueValue=0;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
}
if(distance<7)
{
redValue=255;
greenValue=0;
blueValue=0;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
digitalWrite(buzzer, HIGH);
}
}
delay(1000);
}