BASIC4MCU | 질문게시판 | RGB LED 초음파 센서 질문입니다.
페이지 정보
작성자 Tell 작성일2022-10-15 15:56 조회1,914회 댓글0건본문
30CM 이상이면 부저,초록불 1초간격 으로 작동, 10~30 이면 파란불과 부저가 0.5초 간격으로 작동, 10CM이내면 부저와 빨간불이 연속적으로 작동해야 되는데 전체적으로 거리를 측정하는 시간 사이동안 파란불이 들어오다가 측정한 거리대로 부저와 LED가 작동을 합니다 .코드는 아래와 같은데 어떻게 수정해야 하나요?
#define RED 11
#define GREEN 10
#define BLUE 9
int buzzer=8;
int TRIG= 13;
int ECHO = 12;
void setup(){
Serial.begin(9600);
pinMode(TRIG, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
}
void loop(){
int redValue=0;
int blueValue=0;
int greenValue=0;
digitalWrite(buzzer, LOW);
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
long duration, cm;
digitalWrite(TRIG,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG,LOW);
duration = pulseIn(ECHO,HIGH);
cm= (duration/2)/29.4;
Serial.print("cm : ");
Serial.print(cm);
Serial.print("\n");
delay(1000);
if(cm>=30)
{
redValue=0;
blueValue=0;
analogWrite(RED, redValue);
analogWrite(GREEN, 255);
delay(1000);
analogWrite(GREEN, 0);
delay(1000);
analogWrite(BLUE, blueValue);
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
}
if(10<=cm<=30)
{
redValue=0;
greenValue=0;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, 255);
delay(500);
analogWrite(BLUE, 0);
delay(500);
digitalWrite(buzzer, HIGH);
delay(500);
digitalWrite(buzzer, LOW);
delay(500);
}
if(cm<=10)
{
redValue=255;
greenValue=0;
blueValue=0;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
digitalWrite(buzzer, HIGH);
}
delay(1000); }
댓글 0
조회수 1,914등록된 댓글이 없습니다.