정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

초음파센서+파워LED 관련 질문입니다!
zyzy | 2017-09-09

안녕하세요 아두이노를 공부한지 얼마 안된 학생입니다!

제가 초음파센서로 거리에 따라 3W짜리 LED3개를 개별제어하는 중입니다.

다름이 아니라 일정 거리 안에서는 LED가 제어가 되는 것 같은데

else상태가 되면 코드상으로는 계속 켜질줄 알았는데 계속 깜빡이더라구요

 

int trigPin1 = 13;
int echoPin1 = 12;
int nLedDrive1 = 11;
int nLedDrive2 = 10;   
int nLedDrive3 = 6;
int x;
int y;
int z;
void setup() {
  Serial.begin (9600);
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);
  //pinMode(trigPin2, OUTPUT);
  //pinMode(echoPin2, INPUT);
  pinMode(nLedDrive1, OUTPUT);
  pinMode(nLedDrive2, OUTPUT);
  pinMode(nLedDrive3, OUTPUT);
  digitalWrite(nLedDrive1, HIGH);
  digitalWrite(nLedDrive2, HIGH);
  digitalWrite(nLedDrive3, HIGH);
}

void firstsensor(){ 
  int duration1, distance1;
  digitalWrite (trigPin1, HIGH);
  delayMicroseconds (10);
  digitalWrite (trigPin1, LOW);
  duration1 = pulseIn (echoPin1, HIGH);
  distance1 = (duration1/2) / 29.1;

      Serial.print("1st Sensor: ");
      Serial.print(distance1);  
      Serial.print("cm    ");
if (distance1 < 12){
x=0;
y=0;
z=0;
analogWrite(nLedDrive1, x);
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else if (distance1 < 15){
x=0;
y=0;
z=15;
analogWrite(nLedDrive1, x); 
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else if (distance1 < 18){
x=0;
y=15;
z=55;
analogWrite(nLedDrive1, x); 
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else if (distance1 < 21){
x=15;
y=55;
z=100;
analogWrite(nLedDrive1, x); 
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else if (distance1 < 25){
x=55;
y=100;
z=145;
analogWrite(nLedDrive1, x); 
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else if (distance1 < 28){
x=100;
y=145;
z=190;
analogWrite(nLedDrive1, x); 
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else if (distance1 < 33){
x=145;
y=190;
z=225;
analogWrite(nLedDrive1, x); 
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
else {
x=255;
y=255;
z=255;
analogWrite(nLedDrive1, x);
analogWrite(nLedDrive2, y);
analogWrite(nLedDrive3, z);
}
}

void loop() {
Serial.println("\n");
firstsensor();
delay(200);

코드상에 문제가 있는 걸까요? 좀 봐주시면 감사하겠습니다ㅠㅠ

그리고 초음파센서(SZH-USBC-009)사용하고 있는데 가끔 값이 튀는데 이런 오류값을 잡아주려면 어떻게 해야 할까요?

이전글   |    아두이노 입문자가 질문드립니다.. 2017-09-08
다음글   |    안녕하세요! 아두이노 초급자인데 질문 있어요~! ... 2017-09-09