該如何獨立運作不同的超音波? 
程式需求:  三個超音波各有3個相應的led 燈 當有物體接近或離開各個超音波會亮 
我是用mega版,超音波是hc-hr04  
有試做之後 發現監控視窗出來的都是0公分 或是51公分      
是哪裡有問題?    
程式如下 
 
int ledPin1 = 3; 
int ledPin2 = 4; 
int ledPin3 = 5; 
 
int trigPin1 = 6; 
int echoPin1 = 7; 
 
int trigPin2 = 8; 
int echoPin2 = 9; 
 
int trigPin3 = 10; 
int echoPin3 = 11; 
 
void setup() { 
  Serial.begin (9600); 
  pinMode(trigPin1, OUTPUT); 
  pinMode(echoPin1, INPUT); 
   
  pinMode(trigPin2, OUTPUT); 
  pinMode(echoPin2, INPUT); 
   
  pinMode(trigPin3, OUTPUT); 
  pinMode(echoPin3, INPUT); 
   
  pinMode(ledPin1, OUTPUT); 
  pinMode(ledPin2, OUTPUT); 
  pinMode(ledPin3, OUTPUT); 
} 
 
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 < 30) {  
    digitalWrite (ledPin1, HIGH); 
  } else { 
    digitalWrite (ledPin1, LOW); 
  }     
} 
void secondsensor(){  
    int duration2, distance2; 
    digitalWrite (trigPin2, HIGH); 
    delayMicroseconds (10); 
    digitalWrite (trigPin2, LOW); 
    duration2 = pulseIn (echoPin2, HIGH); 
    distance2 = (duration2/2) / 29.1; 
   
      Serial.print("2nd Sensor: ");  
      Serial.print(distance2);   
      Serial.print("cm    "); 
    
    if (distance2 < 20) {   
      digitalWrite (ledPin2, HIGH); 
    } 
 else { 
      digitalWrite (ledPin2, LOW); 
    }     
} 
void thirdsensor(){ // This function is for third sensor. 
    int duration3, distance3; 
    digitalWrite (trigPin3, HIGH); 
    delayMicroseconds (10); 
    digitalWrite (trigPin3, LOW); 
    duration3 = pulseIn (echoPin3, HIGH); 
    distance3 = (duration3/2) / 29.1; 
 
      Serial.print("3rd Sensor: ");    
      Serial.print(distance3);   
      Serial.print("cm"); 
    
    if (distance3 < 10) {  
      digitalWrite (ledPin3, HIGH); 
    } 
 else { 
      digitalWrite (ledPin3, LOW); 
    }    
} 
 
void loop() { 
Serial.println("\n"); 
firstsensor(); 
secondsensor(); 
thirdsensor(); 
delay(100); 
}  |