?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

multiple tone, 피에조 스피커 여러개 사용하는 방법알려주세요

페이지 정보

작성자 김덕배 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일16-06-02 19:26 조회785회 댓글1건

본문

 int led = 2;
 int sensor = 7;
 int senVal = 0;
 
 int buA = 3;
 int trA = 4;
 int ehA = 5;
 
 int buB = 6;
 int trB = 7;
 int ehB = 8;
 
 int buC = 9;
 int trC = 10;
 int ehC = 11;
 
void setup()
{
  Serial.begin(9600); //9600의 속도로 시리얼 통신을 초기화 시킨다

  pinMode(led, OUTPUT);

  pinMode(trA,OUTPUT);
  pinMode(ehA,INPUT); 
  pinMode(buA,OUTPUT); 

  pinMode(trB,OUTPUT);
  pinMode(ehB,INPUT); 
  pinMode(buB,OUTPUT); 
 
  pinMode(trC,OUTPUT);
  pinMode(ehC,INPUT); 
  pinMode(buC,OUTPUT); 
}
 
void loop()
{  
  long distanceA, durationA, distanceB, durationB, distanceC, durationC;

  senVal = analogRead(sensor);
  
 digitalWrite(trA,HIGH);
  delayMicroseconds(10);
  digitalWrite(trA,LOW);
  
  durationA = pulseIn(ehA,HIGH);
  distanceA = durationA / 58.2;
  
  Serial.print(distanceA);
  Serial.print(" cmA  ");

int valA = distanceA;

if(valA < 30)
{
  tone(buA, 800);
  delay(50);
}
else
noTone(buA); 
  
  digitalWrite(trB,HIGH);
  delayMicroseconds(10);
  digitalWrite(trB,LOW);
  
  durationB = pulseIn(ehB,HIGH);
  distanceB = durationB / 58.2;
  
  Serial.print(distanceB);
  Serial.print(" cmB  ");

int valB = distanceB;

if(valB <= 100)
{
  tone(buB, 800, 200);
  delay(50);
}
else
noTone(buB);


  digitalWrite(trC,HIGH);
  delayMicroseconds(10);
  digitalWrite(trC,LOW);
  
  durationC = pulseIn(ehC,HIGH);
  distanceC = durationC / 58.2;

  Serial.print(distanceC);
  Serial.println(" cmC");

int valC = distanceC;

if(valC <= 100)
{
  tone(buC, 800,200);
  delay(50);
}
else
noTone(buC);

  if(senVal > 300)
  {
    digitalWrite(led, HIGH);
    delay(50);
    digitalWrite(led, LOW);
  }
  else{
  digitalWrite(led, LOW);
  }


}

 

현재 초음파 3개, 피에조 스피커 3개와 조도센서 1개를 사용하고 있습니다

피에조 스피커를 3개를 사용하기 위해 tone 함수를 3개를 사용하고 있지요

1번 2번 3번 애들이 각각은 울립니다.

그런데 1번과 2번이 같이 울리지가 않네요;;

다같이 울리도록 할려면 어떻게 해야 할까요?

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

한번에 동시에 3개의 음악이 연주되도록 할 수는 없을 것 같습니다. tone()이 내부적으로 타이머 하나를 사용하기 때문일듯 합니다. 아래 공식 사이트에서도 순차적으로만 연주하네요
https://www.arduino.cc/en/Tutorial/toneMultiple