Site icon Elektrologi

Suara Burung Dengan Arduino

Berikut ini contoh pembangkitan suara burung dengan menggunakan mikrokontroler Arduino Nano (ATmega328)

Kode diambil dari http://120.107.171.121/~tywua/sub/ISAR/Chirp.ino , nampaknya dari website dari seorang profesor di National Changhua University of Education , Taiwan.

Arduino pembangkit suara burung

Berikut ini contoh suara yang dihasilkan :

Berikut ini bentuk sinyal yang di aplikasi Audacity untuk 1 set kicauan saja:

Berikut source code (dari http://120.107.171.121/~tywua/sub/ISAR/Chirp.ino)

int piezopin =11;  // select the pin for the speaker
int angulo = 0;
int counter = 0;


void setup() {
  pinMode(piezopin,OUTPUT);
}
void loop() {
  angulo = random(10,50);
  counter = random(2,6);

  highChirp(5,angulo/10);
  delay(100);
  lowChirp(angulo*4,2);
  delay(100);
  tweet(counter,2);
}

void highChirp(int intensity, int chirpsNumber){
  int i;
  int x;
  for(int veces=0; veces<=chirpsNumber; veces++){
    for (i=100; i>0; i--)
    {
      for  (x=0; x<intensity;  x++)
      {
        digitalWrite (piezopin,HIGH);
        delayMicroseconds (i);
        digitalWrite (piezopin,LOW);
        delayMicroseconds (i);
      }
    }
  }
}

void lowChirp(int intensity, int chirpsNumber){
  int i;
  int x;
  for(int veces=0; veces<=chirpsNumber; veces++){
    for (i=0; i<200; i++)
    {
      digitalWrite (piezopin,HIGH);
      delayMicroseconds(i);
      digitalWrite(piezopin,LOW);
      delayMicroseconds(i);
    } 
    for (i=90; i>80; i--)
    {
      for  ( x=0; x<5;  x++)
      {
        digitalWrite (piezopin,HIGH);
        delayMicroseconds (i);
        digitalWrite (piezopin,LOW);
        delayMicroseconds (i);
      }
    }
  }
}

void tweet(int intensity, int chirpsNumber){

int i;
int x;
//normal chirpsNumber 3, normal intensity 5

for(int veces=0; veces<chirpsNumber; veces++){
  for (int i=80; i>0; i--)
  {
   for  (int x=0; x<intensity;  x++)
   {
     digitalWrite (piezopin,HIGH);
     delayMicroseconds (i);
     digitalWrite (piezopin,LOW);
     delayMicroseconds (i);
   }
  }
}
delay(1000);
}






Exit mobile version